home *** CD-ROM | disk | FTP | other *** search
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
- <script:module xmlns:script="http://openoffice.org/2000/script" script:name="ConvertRun" script:language="StarBasic">Option Explicit
- ' Todo Den Bug mit der Statuszeilengeschichte ├╝berpr├╝fen
- ' Todo Vorselektion der Listbox
- ' Mauspointer umschalten:
-
- ' Todo: Sinnigkeit von 'DocDisposed' noch einmal ├╝berpr├╝fen
-
- Sub Main()
- BasicLibraries.LoadLibrary("Tools")
- If InitResources("Euro Converter", "eur") Then
- bDoUnProtect = False
- bPreSelected = True
- DocDisposed = False
- oDocument = StarDesktop.CurrentFrame.Controller.Model
- RetrieveDocumentObjects() ' Statusline, SheetsCollection etc.
- InitializeConverter(oDocument.CharLocale, 1)
- GetPreSelectedRange()
- If GoOn Then
- DialogConvert.Execute
- Else
- DialogConvert.Dispose
- End If
- 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
- ' ToggleWindow(False)
- 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
- a = -1
- ' Hard Formatation is selected
- 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)
- ' ToggleWindow(True)
- End If
- End Sub
-
-
- ' Prozedur 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 bNoComboSelection as Boolean
- Dim bNoLBSelection as Boolean
- ' Controls around the Currency-Listbox
- With DialogModel
- .lblCurrencies.Enabled = bCurrEnabled
- .lstCurrencies.Enabled = bCurrEnabled
-
- .lstSelection.Enabled = bFrameEnabled
- .lblSelection.Enabled = bFrameEnabled
- .hlnSelection.Enabled = bFrameEnabled
- .optCellTemplates.Enabled = bFrameEnabled
- .optSheetRanges.Enabled = bFrameEnabled
- .optDocRanges.Enabled = bFrameEnabled
- .optSelRange.Enabled = bFrameEnabled
- End With
- ' The CheckBox has the Value 'True' when the Controls in the Frame are disabled
- If bButtonsEnabled Then
- bNoComboSelection = Ubound(DialogModel.lstCurrencies.SelectedItems()) = -1
- ' Enable GoOnButton only when Currency is selected
- DialogModel.cmdGoOn.Enabled = Not bNoComboSelection
- DialogModel.chkComplete.Enabled = Not bNoComboSelection
- If bFrameEnabled AND Not DialogModel.chkComplete.State = 1 AND DialogModel.cmdGoOn.Enabled Then
- ' If FrameControls are enabled, check if Listbox is Empty
- bNoLBSelection = Ubound(DialogModel.lstSelection.SelectedItems()) = -1
- DialogModel.cmdGoOn.Enabled = NOT bNoLBSelection
- 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
-
- 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)
- 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
-
-
- ' Alles was selektiert wurde wird deselektiert
- 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
-
-
- Sub AddSelectedRangeToSelRangesEnum()
- osheet = oDocument.CurrentController.GetActiveSheet
- ' oAddressRanges = oDocument.createInstance("com.sun.star.sheet.SheetCellRanges")
- oSelRanges = oDocument.createInstance("com.sun.star.sheet.SheetCellRanges")
- ' Check if a Currency-Range has been selected
- oRange = oDocument.CurrentController.Selection
- oSelRanges.InsertbyName("",oRange)
- End Sub
-
-
- Sub GetPreSelectedRange()
- Dim i as Integer
- Dim OldCurrSymbolList(2) as String
- Dim OldCurrIndex as Integer
- Dim OldCurExtension(1) as String
- AddSelectedRangeToSelRangesEnum()
- bPreSelected = CheckIfRangeisCurrency(oRange)
- If bPreSelected Then
- ' Todo: Array als ganzes ├╝bergeben!
- OldCurrSymbolList() = CurrSymbolList()
- OldCurExtension() = CurExtension()
- OldCurrIndex = CurrIndex
- For i = 0 To 11
- CurrIndex = i
- CurExtension(0) = LangIDValue(CurrIndex,0,2)
- CurExtension(1) = LangIDValue(CurrIndex,1,2)
- InitializeCurrencyValues(CurrIndex)
- bPreSelected = CheckFormatType(oRange)
- If bPreSelected Then
- Exit For
- End If
- Next i
- If Not bPreSelected Then
- CurrIndex = OldCurrIndex
- CurrSymbolList() = OldCurrSymbolList()
- CurExtension() = OldCurExtension()
- End If
- End If
-
- If CurrIndex > -1 Then
- If bPreSelected Then
- DialogModel.optSelRange.State = 1
- AddRangeToListbox()
- Else
- DialogModel.optCellTemplates.State = 1
- CreateStyleEnumeration()
- End If
- End If
- EnableStep1DialogControls(True, bPreSelected, True)
- ' Todo: auf Integer umstellen
- If bPreselected Then
- DialogModel.chkComplete.State = 0
- Else
- DialogModel.chkComplete.State = 1
- End If
- DialogModel.optSelRange.Enabled = bPreSelected
- End Sub
-
-
- Sub AddRangeToListbox()
- EmptyListBox(DialogModel.lstSelection)
- ' Den Namen der Range ermitteln und in ein Array packen
- PreName = RetrieveRangeNamefromAddress(oRange)
- AddSingleItemToListbox(DialogModel.lstSelection, Prename)', 0)
- SelectListboxItem(DialogModel.lstCurrencies, CurrIndex)
- TotCellCount = CountRangeCells(oRange)
- End Sub
-
-
- Sub CheckRangeSelection(Optional oEvent)
- ' Todo: Beim Startup werden die folgenden zwei Zeilen doppelt ausgef├╝hrt
- AddSelectedRangeToSelRangesEnum()
- bPreSelected = CheckFormatType(oRange)
- If bPreSelected Then
- AddRangeToListbox()
- End If
- 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
- </script:module>