| <?xml version="1.0" encoding="UTF-8"?> |
| <!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd"> |
| <!--*********************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| ***********************************************************--> |
| <script:module xmlns:script="http://openoffice.org/2000/script" script:name="ConvertRun" script:language="StarBasic">Option Explicit |
| |
| Public oPreSelRange as Object |
| |
| Sub Main() |
| BasicLibraries.LoadLibrary("Tools") |
| If InitResources("Euro Converter", "eur") Then |
| bDoUnProtect = False |
| bPreSelected = True |
| oDocument = ThisComponent |
| RetrieveDocumentObjects() ' Statusline, SheetsCollection etc. |
| InitializeConverter(oDocument.CharLocale, 1) |
| GetPreSelectedRange() |
| If GoOn Then |
| DialogModel.lstCurrencies.TabIndex = 2 |
| DialogConvert.GetControl("chkComplete").SetFocus() |
| DialogConvert.Execute |
| End If |
| DialogConvert.Dispose |
| End If |
| End Sub |
| |
| |
| Sub SelectListItem() |
| Dim Listbox as Object |
| Dim oListSheet as Object |
| Dim CurStyleName as String |
| Dim oCursheet as Object |
| Dim oTempRanges as Object |
| Dim sCurSheetName as String |
| Dim RangeName as String |
| Dim oSheetRanges as Object |
| Dim ListIndex as Integer |
| Dim a as Integer |
| Dim i as Integer |
| Dim n as Integer |
| Dim m as Integer |
| Dim MaxIndex as Integer |
| Listbox = DialogModel.lstSelection |
| If Ubound(Listbox.SelectedItems()) > -1 Then |
| EnableStep1DialogControls(False, False, False) |
| oSelRanges = oDocument.createInstance("com.sun.star.sheet.SheetCellRanges") |
| |
| ' Is the sheet the basis, then the sheetobject has to be created |
| If DialogModel.optDocRanges.State = 1 Then |
| ' Document is the basis for the conversion |
| ListIndex = Listbox.SelectedItems(0) |
| oCurSheet = RetrieveSheetoutofRangeName(Listbox.StringItemList(ListIndex)) |
| oDocument.CurrentController.SetActiveSheet(oCurSheet) |
| Else |
| oCurSheet = oDocument.CurrentController.ActiveSheet |
| End If |
| sCurSheetName = oCurSheet.Name |
| If DialogModel.optCellTemplates.State = 1 Then |
| Dim CurIndex as Integer |
| For i = 0 To Ubound(Listbox.SelectedItems()) |
| CurIndex = Listbox.SelectedItems(i) |
| CurStylename = Listbox.StringItemList(CurIndex) |
| oSheetRanges = oCursheet.CellFormatRanges.createEnumeration |
| While oSheetRanges.hasMoreElements |
| oRange = oSheetRanges.NextElement |
| If oRange.getPropertyState("NumberFormat") = 1 Then |
| If oRange.CellStyle = CurStyleName Then |
| oSelRanges.InsertbyName("",oRange) |
| End If |
| End If |
| Wend |
| Next i |
| Else |
| ' Hard Formatation is selected |
| a = -1 |
| For n = 0 To Ubound(Listbox.SelectedItems()) |
| m = Listbox.SelectedItems(n) |
| RangeName = Listbox.StringItemList(m) |
| oListSheet = RetrieveSheetoutofRangeName(RangeName) |
| a = a + 1 |
| MaxIndex = Ubound(SelRangeList()) |
| If a > MaxIndex Then |
| Redim Preserve SelRangeList(MaxIndex + SBRANGEUBOUND) |
| End If |
| SelRangeList(a) = RangeName |
| If oListSheet.Name = sCurSheetName Then |
| oRange = RetrieveRangeoutofRangeName(RangeName) |
| oSelRanges.InsertbyName("",oRange) |
| End If |
| Next n |
| End If |
| If a > -1 Then |
| ReDim Preserve SelRangeList(a) |
| Else |
| ReDim SelRangeList() |
| End If |
| oDocument.CurrentController.Select(oSelRanges) |
| EnableStep1DialogControls(True, True, True) |
| End If |
| End Sub |
| |
| |
| ' Procedure that is called by an event |
| Sub RetrieveEnableValue() |
| Dim EnableValue as Boolean |
| EnableValue = Not DialogModel.lstSelection.Enabled |
| EnableStep1DialogControls(True, EnableValue, True) |
| End Sub |
| |
| |
| Sub EnableStep1DialogControls(bCurrEnabled as Boolean, bFrameEnabled as Boolean, bButtonsEnabled as Boolean) |
| Dim bCurrIsSelected as Boolean |
| Dim bObjectIsSelected as Boolean |
| Dim bConvertWholeDoc as Boolean |
| Dim bDoEnableFrame as Boolean |
| bConvertWholeDoc = DialogModel.chkComplete.State = 1 |
| bDoEnableFrame = bFrameEnabled And (NOT bConvertWholeDoc) |
| |
| ' Controls around the Selection Listbox |
| With DialogModel |
| .lblCurrencies.Enabled = bCurrEnabled |
| .lstCurrencies.Enabled = bCurrEnabled |
| .lstSelection.Enabled = bDoEnableFrame |
| .lblSelection.Enabled = bDoEnableFrame |
| .hlnSelection.Enabled = bDoEnableFrame |
| .optCellTemplates.Enabled = bDoEnableFrame |
| .optSheetRanges.Enabled = bDoEnableFrame |
| .optDocRanges.Enabled = bDoEnableFrame |
| .optSelRange.Enabled = bDoEnableFrame |
| End With |
| ' The CheckBox has the Value '1' when the Controls in the Frame are disabled |
| If bButtonsEnabled Then |
| bCurrIsSelected = Ubound(DialogModel.lstCurrencies.SelectedItems()) <> -1 |
| ' Enable GoOnButton only when Currency is selected |
| DialogModel.cmdGoOn.Enabled = bCurrIsSelected |
| DialogModel.chkComplete.Enabled = bCurrIsSelected |
| If bDoEnableFrame AND DialogModel.cmdGoOn.Enabled Then |
| ' If FrameControls are enabled, check if Listbox is Empty |
| bObjectIsSelected = Ubound(DialogModel.lstSelection.SelectedItems()) <> -1 |
| DialogModel.cmdGoOn.Enabled = bObjectIsSelected |
| End If |
| Else |
| DialogModel.cmdGoOn.Enabled = False |
| DialogModel.chkComplete.Enabled = False |
| End If |
| End Sub |
| |
| |
| Sub ConvertRangesOrStylesOfDocument() |
| Dim i as Integer |
| Dim ItemName as String |
| Dim SelList() as String |
| Dim oSheetRanges as Object |
| |
| bDocHasProtectedSheets = CheckSheetProtection(oSheets) |
| If bDocHasProtectedSheets Then |
| bDocHasProtectedSheets = UnprotectSheetsWithPassWord(oSheets, bDoUnProtect) |
| DialogModel.cmdGoOn.Enabled = False |
| End If |
| If Not bDocHasProtectedSheets Then |
| EnableStep1DialogControls(False, False, False) |
| InitializeProgressBar() |
| If DialogModel.optSelRange.State = 1 Then |
| SelectListItem() |
| End If |
| SelList() = DialogConvert.GetControl("lstSelection").SelectedItems() |
| If DialogModel.optCellTemplates.State = 1 Then |
| ' Option 'Soft' Formatation is selected |
| AssignRangestoStyle(DialogModel.lstSelection.StringItemList(), SelList()) |
| ConverttheSoftWay(SelList(), True) |
| ElseIf DialogModel.optSelRange.State = 1 Then |
| oSheetRanges = oPreSelRange.CellFormatRanges.createEnumeration |
| While oSheetRanges.hasMoreElements |
| oRange = oSheetRanges.NextElement |
| If CheckFormatType(oRange) Then |
| ConvertCellCurrencies(oRange) |
| SwitchNumberFormat(oRange, oFormats, sEuroSign) |
| End If |
| Wend |
| Else |
| ConverttheHardWay(SelList(), False, True) |
| End If |
| oStatusline.End |
| EnableStep1DialogControls(True, False, True) |
| DialogModel.cmdGoOn.Enabled = True |
| oDocument.CurrentController.Select(oSelRanges) |
| End If |
| End Sub |
| |
| |
| Sub ConvertWholeDocument() |
| Dim s as Integer |
| DialogModel.cmdGoOn.Enabled = False |
| DialogModel.chkComplete.Enabled = False |
| GoOn = ConvertDocument() |
| EmptyListbox(DialogModel.lstSelection()) |
| EnableStep1DialogControls(True, True, True) |
| End Sub |
| |
| |
| ' Everything previously selected will be deselected |
| Sub EmptySelection() |
| Dim RangeName as String |
| Dim i as Integer |
| Dim MaxIndex as Integer |
| Dim EmptySelRangeList() as String |
| |
| If Not IsNull(oSelRanges) Then |
| If oSelRanges.HasElements Then |
| EmptySelRangeList() = ArrayOutofString(oSelRanges.RangeAddressesasString, ";", MaxIndex) |
| For i = 0 To MaxIndex |
| oSelRanges.RemovebyName(EmptySelRangeList(i)) |
| Next i |
| End If |
| oDocument.CurrentController.Select(oSelRanges) |
| Else |
| oSelRanges = oDocument.createInstance("com.sun.star.sheet.SheetCellRanges") |
| End If |
| End Sub |
| |
| |
| Function AddSelectedRangeToSelRangesEnum() as Object |
| Dim oLocRange as Object |
| osheet = oDocument.CurrentController.GetActiveSheet |
| oSelRanges = oDocument.createInstance("com.sun.star.sheet.SheetCellRanges") |
| ' Check if a Currency-Range has been selected |
| oLocRange = oDocument.CurrentController.Selection |
| bPreSelected = oLocRange.SupportsService("com.sun.star.sheet.SheetCellRange") |
| If bPreSelected Then |
| oSelRanges.InsertbyName("",oLocRange) |
| AddSelectedRangeToSelRangesEnum() = oLocRange |
| End If |
| End Function |
| |
| |
| Sub GetPreSelectedRange() |
| Dim i as Integer |
| Dim OldCurrSymbolList(2) as String |
| Dim OldCurrIndex as Integer |
| Dim OldCurExtension(2) as String |
| oPreSelRange = AddSelectedRangeToSelRangesEnum() |
| |
| DialogModel.chkComplete.State = Abs(Not(bPreSelected)) |
| If bPreSelected Then |
| DialogModel.optSelRange.State = 1 |
| AddRangeToListbox(oPreSelRange) |
| Else |
| DialogModel.optCellTemplates.State = 1 |
| CreateStyleEnumeration() |
| End If |
| EnableStep1DialogControls(True, bPreSelected, True) |
| DialogModel.optSelRange.Enabled = bPreSelected |
| End Sub |
| |
| |
| Sub AddRangeToListbox(oLocRange as Object) |
| EmptyListBox(DialogModel.lstSelection) |
| PreName = RetrieveRangeNamefromAddress(oLocRange) |
| AddSingleItemToListbox(DialogModel.lstSelection, Prename)', 0) |
| SelectListboxItem(DialogModel.lstCurrencies, CurrIndex) |
| TotCellCount = CountRangeCells(oLocRange) |
| End Sub |
| |
| |
| Sub CheckRangeSelection(Optional oEvent) |
| EmptySelection() |
| AddRangeToListbox(oPreSelRange) |
| oPreSelRange = AddSelectedRangeToSelRangesEnum() |
| End Sub |
| |
| |
| ' Checks if a Field (LocField) is already defined in an Array |
| ' Returns 'True' or 'False' |
| Function FieldinList(LocList(), MaxIndex as integer, ByVal LocField ) As Boolean |
| Dim i as integer |
| LocField = Ucase(LocField) |
| For i = Lbound(LocList()) to MaxIndex |
| If Ucase(LocList(i)) = LocField then |
| FieldInList = True |
| Exit Function |
| End if |
| Next |
| FieldInList = False |
| End Function |
| |
| |
| Function CheckLocale(oLocale) as Boolean |
| Dim i as Integer |
| Dim LocCountry as String |
| Dim LocLanguage as String |
| LocCountry = oLocale.Country |
| LocLanguage = oLocale.Language |
| For i = 0 To 1 |
| If LocLanguage = LangIDValue(CurrIndex,i,0) AND LocCountry = LangIDValue(CurrIndex,i,1) Then |
| CheckLocale = True |
| Exit Function |
| End If |
| Next i |
| CheckLocale = False |
| End Function |
| |
| |
| Sub SetOptionValuestoNull() |
| With DialogModel |
| .optCellTemplates.State = 0 |
| .optSheetRanges.State = 0 |
| .optDocRanges.State = 0 |
| .optSelRange.State = 0 |
| End With |
| End Sub |
| |
| |
| |
| Sub SetStatusLineText(sStsREPROTECT as String) |
| If Not IsNull(oStatusLine) Then |
| oStatusline.SetText(sStsREPROTECT) |
| End If |
| End Sub |
| </script:module> |