home *** CD-ROM | disk | FTP | other *** search
/ com!online 2001 December / COMCD1201.iso / openoffice / f_0259 / ConvertRun.xba < prev    next >
Encoding:
Extensible Markup Language  |  2001-06-25  |  10.2 KB  |  329 lines

  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="ConvertRun" script:language="StarBasic">Option Explicit
  4. ' Todo Den Bug mit der Statuszeilengeschichte ├╝berpr├╝fen
  5. ' Todo Vorselektion der Listbox
  6. ' Mauspointer umschalten:
  7.  
  8. ' Todo: Sinnigkeit von 'DocDisposed' noch einmal ├╝berpr├╝fen
  9.  
  10. Sub Main()
  11.     BasicLibraries.LoadLibrary("Tools")
  12.     If InitResources("Euro Converter", "eur") Then
  13.         bDoUnProtect = False
  14.         bPreSelected = True
  15.         DocDisposed = False
  16.         oDocument = StarDesktop.CurrentFrame.Controller.Model
  17.         RetrieveDocumentObjects()                                            ' Statusline, SheetsCollection etc.
  18.         InitializeConverter(oDocument.CharLocale, 1)
  19.         GetPreSelectedRange()
  20.         If GoOn Then
  21.             DialogConvert.Execute
  22.         Else
  23.             DialogConvert.Dispose
  24.         End If
  25.     End If
  26. End Sub
  27.  
  28.  
  29. Sub SelectListItem()
  30. Dim Listbox as Object
  31. Dim oListSheet as Object
  32. Dim CurStyleName as String
  33. Dim oCursheet as Object
  34. Dim oTempRanges as Object
  35. Dim sCurSheetName as String
  36. Dim RangeName as String
  37. Dim oSheetRanges as Object
  38. Dim ListIndex as Integer
  39. Dim a as Integer
  40. Dim i as Integer
  41. Dim n as Integer
  42. Dim m as Integer
  43. Dim MaxIndex as Integer
  44.     Listbox = DialogModel.lstSelection
  45.     If Ubound(Listbox.SelectedItems()) > -1 Then
  46. '        ToggleWindow(False)
  47.         EnableStep1DialogControls(False, False, False)
  48.         oSelRanges = oDocument.createInstance("com.sun.star.sheet.SheetCellRanges")
  49.  
  50.         ' Is the sheet the basis, then the sheetobject has to be created
  51.         If DialogModel.optDocRanges.State = 1 Then
  52.             ' Document is the basis for the conversion
  53.             ListIndex = Listbox.SelectedItems(0)
  54.             oCurSheet = RetrieveSheetoutofRangeName(Listbox.StringItemList(ListIndex))
  55.             oDocument.CurrentController.SetActiveSheet(oCurSheet)
  56.         Else
  57.             oCurSheet = oDocument.CurrentController.ActiveSheet
  58.         End If
  59.         sCurSheetName = oCurSheet.Name
  60.         If DialogModel.optCellTemplates.State = 1 Then
  61.             Dim CurIndex as Integer
  62.             For i = 0 To Ubound(Listbox.SelectedItems())
  63.                 CurIndex = Listbox.SelectedItems(i)
  64.                 CurStylename = Listbox.StringItemList(CurIndex)
  65.                 oSheetRanges = oCursheet.CellFormatRanges.createEnumeration
  66.                 While oSheetRanges.hasMoreElements
  67.                     oRange = oSheetRanges.NextElement
  68.                     If oRange.getPropertyState("NumberFormat") = 1 Then
  69.                         If oRange.CellStyle = CurStyleName Then
  70.                             oSelRanges.InsertbyName("",oRange)
  71.                         End If
  72.                     End If
  73.                 Wend
  74.             Next i
  75.         Else
  76.             a = -1
  77.             ' Hard Formatation is selected
  78.             For n = 0 To Ubound(Listbox.SelectedItems())
  79.                 m = Listbox.SelectedItems(n)
  80.                 RangeName = Listbox.StringItemList(m)
  81.                 oListSheet = RetrieveSheetoutofRangeName(RangeName)
  82.                 a = a + 1
  83.                 MaxIndex = Ubound(SelRangeList())
  84.                 If a > MaxIndex Then
  85.                     Redim Preserve SelRangeList(MaxIndex + SBRANGEUBOUND)
  86.                 End If
  87.                 SelRangeList(a) = RangeName
  88.                 If oListSheet.Name = sCurSheetName Then
  89.                     oRange = RetrieveRangeoutofRangeName(RangeName)
  90.                     oSelRanges.InsertbyName("",oRange)
  91.                 End If
  92.             Next n
  93.         End If
  94.         If a > -1 Then
  95.             ReDim Preserve SelRangeList(a)
  96.         Else
  97.             ReDim SelRangeList()
  98.         End If
  99.         oDocument.CurrentController.Select(oSelRanges)
  100.         EnableStep1DialogControls(True, True, True)
  101. '        ToggleWindow(True)
  102.     End If
  103. End Sub
  104.  
  105.  
  106. ' Prozedur that is called by an event
  107. Sub RetrieveEnableValue()
  108. Dim EnableValue as Boolean
  109.     EnableValue = Not DialogModel.lstSelection.Enabled
  110.     EnableStep1DialogControls(True, EnableValue, True)
  111. End Sub
  112.  
  113.  
  114. Sub EnableStep1DialogControls(bCurrEnabled as Boolean, bFrameEnabled as Boolean, bButtonsEnabled as Boolean)
  115. Dim bNoComboSelection as Boolean
  116. Dim bNoLBSelection as Boolean
  117.     ' Controls around the Currency-Listbox
  118.     With DialogModel
  119.         .lblCurrencies.Enabled = bCurrEnabled
  120.         .lstCurrencies.Enabled = bCurrEnabled    
  121.  
  122.         .lstSelection.Enabled = bFrameEnabled
  123.         .lblSelection.Enabled = bFrameEnabled
  124.         .hlnSelection.Enabled = bFrameEnabled
  125.         .optCellTemplates.Enabled = bFrameEnabled
  126.         .optSheetRanges.Enabled = bFrameEnabled
  127.         .optDocRanges.Enabled = bFrameEnabled
  128.         .optSelRange.Enabled = bFrameEnabled
  129.     End With
  130.     ' The CheckBox has the Value 'True' when the Controls in the Frame are disabled
  131.     If bButtonsEnabled Then
  132.         bNoComboSelection = Ubound(DialogModel.lstCurrencies.SelectedItems()) = -1
  133.         ' Enable GoOnButton only when Currency is selected
  134.         DialogModel.cmdGoOn.Enabled =  Not bNoComboSelection
  135.         DialogModel.chkComplete.Enabled = Not bNoComboSelection
  136.         If bFrameEnabled AND Not DialogModel.chkComplete.State = 1 AND DialogModel.cmdGoOn.Enabled Then
  137.             ' If FrameControls are enabled, check if Listbox is Empty
  138.             bNoLBSelection = Ubound(DialogModel.lstSelection.SelectedItems()) = -1
  139.             DialogModel.cmdGoOn.Enabled = NOT bNoLBSelection
  140.         End If
  141.     Else
  142.         DialogModel.cmdGoOn.Enabled = False
  143.         DialogModel.chkComplete.Enabled = False
  144.     End If
  145. End Sub
  146.  
  147.  
  148. Sub ConvertRangesOrStylesOfDocument()
  149. Dim i as Integer
  150. Dim ItemName as String
  151. Dim SelList() as String
  152.  
  153.     bDocHasProtectedSheets = CheckSheetProtection(oSheets)
  154.     If bDocHasProtectedSheets Then
  155.         bDocHasProtectedSheets = UnprotectSheetsWithPassWord(oSheets, bDoUnProtect)
  156.         DialogModel.cmdGoOn.Enabled = False
  157.     End If
  158.     If Not bDocHasProtectedSheets Then
  159.         EnableStep1DialogControls(False, False, False)
  160.         InitializeProgressBar()
  161.         If DialogModel.optSelRange.State = 1 Then
  162.             SelectListItem()
  163.         End If
  164.         SelList() =  DialogConvert.GetControl("lstSelection").SelectedItems()
  165.         If DialogModel.optCellTemplates.State = 1 Then
  166.             ' Option 'Soft' Formatation is selected
  167.             AssignRangestoStyle(DialogModel.lstSelection.StringItemList(), SelList())
  168.             ConverttheSoftWay(SelList(), True)
  169.         Else
  170.             ConverttheHardWay(SelList(), False, True)
  171.         End If
  172.         oStatusline.End
  173.         EnableStep1DialogControls(True, False, True)
  174.         DialogModel.cmdGoOn.Enabled = True
  175.         oDocument.CurrentController.Select(oSelRanges)
  176.     End If
  177. End Sub
  178.  
  179.  
  180. Sub ConvertWholeDocument()
  181. Dim s as Integer
  182.     DialogModel.cmdGoOn.Enabled = False
  183.     DialogModel.chkComplete.Enabled = False
  184.     GoOn = ConvertDocument()
  185.     EmptyListbox(DialogModel.lstSelection())
  186.     EnableStep1DialogControls(True, True, True)
  187. End Sub
  188.  
  189.  
  190. ' Alles was selektiert wurde wird deselektiert
  191. Sub EmptySelection()
  192. Dim RangeName as String
  193. Dim i as Integer
  194. Dim MaxIndex as Integer
  195. Dim EmptySelRangeList() as String
  196.  
  197.     If Not IsNull(oSelRanges) Then
  198.         If oSelRanges.HasElements Then
  199.             EmptySelRangeList() = ArrayOutofString(oSelRanges.RangeAddressesasString, ";", MaxIndex)
  200.             For i = 0 To MaxIndex
  201.                 oSelRanges.RemovebyName(EmptySelRangeList(i))
  202.             Next i
  203.         End If
  204.         oDocument.CurrentController.Select(oSelRanges)
  205.     Else
  206.         oSelRanges = oDocument.createInstance("com.sun.star.sheet.SheetCellRanges")
  207.     End If
  208. End Sub
  209.  
  210.  
  211. Sub AddSelectedRangeToSelRangesEnum()
  212.     osheet = oDocument.CurrentController.GetActiveSheet
  213. '    oAddressRanges = oDocument.createInstance("com.sun.star.sheet.SheetCellRanges")
  214.     oSelRanges = oDocument.createInstance("com.sun.star.sheet.SheetCellRanges")
  215.     ' Check if a Currency-Range has been selected
  216.     oRange = oDocument.CurrentController.Selection
  217.     oSelRanges.InsertbyName("",oRange)
  218. End Sub
  219.  
  220.  
  221. Sub GetPreSelectedRange()
  222. Dim i as Integer
  223. Dim OldCurrSymbolList(2) as String
  224. Dim OldCurrIndex as Integer
  225. Dim OldCurExtension(1) as String
  226.     AddSelectedRangeToSelRangesEnum()
  227.     bPreSelected =  CheckIfRangeisCurrency(oRange)
  228.      If bPreSelected Then
  229. ' Todo: Array als ganzes ├╝bergeben!
  230.         OldCurrSymbolList() = CurrSymbolList()
  231.         OldCurExtension() = CurExtension()
  232.         OldCurrIndex = CurrIndex
  233.         For i = 0 To 11
  234.             CurrIndex = i
  235.             CurExtension(0) = LangIDValue(CurrIndex,0,2)
  236.             CurExtension(1) = LangIDValue(CurrIndex,1,2)
  237.             InitializeCurrencyValues(CurrIndex)
  238.             bPreSelected = CheckFormatType(oRange)
  239.             If bPreSelected Then
  240.                 Exit For
  241.             End If
  242.         Next i
  243.         If Not bPreSelected Then
  244.             CurrIndex = OldCurrIndex
  245.             CurrSymbolList() = OldCurrSymbolList()
  246.             CurExtension() = OldCurExtension()
  247.         End If
  248.     End If
  249.  
  250.     If CurrIndex > -1 Then
  251.         If bPreSelected Then
  252.             DialogModel.optSelRange.State = 1
  253.             AddRangeToListbox()
  254.         Else
  255.             DialogModel.optCellTemplates.State  = 1
  256.             CreateStyleEnumeration()
  257.         End If
  258.     End If
  259.     EnableStep1DialogControls(True, bPreSelected, True)
  260. ' Todo: auf Integer umstellen
  261.     If bPreselected Then
  262.         DialogModel.chkComplete.State = 0 
  263.     Else
  264.         DialogModel.chkComplete.State = 1
  265.     End If
  266.     DialogModel.optSelRange.Enabled = bPreSelected
  267. End Sub
  268.  
  269.  
  270. Sub AddRangeToListbox()
  271.     EmptyListBox(DialogModel.lstSelection)
  272.     ' Den Namen der Range ermitteln und in ein Array packen
  273.     PreName = RetrieveRangeNamefromAddress(oRange)
  274.     AddSingleItemToListbox(DialogModel.lstSelection, Prename)', 0)
  275.     SelectListboxItem(DialogModel.lstCurrencies, CurrIndex)
  276.     TotCellCount = CountRangeCells(oRange)
  277. End Sub
  278.  
  279.  
  280. Sub CheckRangeSelection(Optional oEvent)
  281. ' Todo: Beim Startup werden die folgenden zwei Zeilen doppelt ausgef├╝hrt
  282.     AddSelectedRangeToSelRangesEnum()
  283.     bPreSelected = CheckFormatType(oRange)
  284.      If bPreSelected Then
  285.         AddRangeToListbox()
  286.     End If
  287. End Sub
  288.  
  289.  
  290. ' Checks if a Field (LocField) is already defined in an Array
  291. ' Returns 'True' or 'False'
  292. Function FieldinList(LocList(), MaxIndex as integer, ByVal LocField ) As Boolean
  293. Dim i as integer
  294.     LocField = Ucase(LocField)
  295.     For i = Lbound(LocList()) to MaxIndex
  296.         If Ucase(LocList(i)) = LocField  then
  297.             FieldInList = True
  298.             Exit Function
  299.         End if
  300.     Next
  301.     FieldInList = False
  302. End Function
  303.  
  304.  
  305. Function CheckLocale(oLocale) as Boolean
  306. Dim i as Integer
  307. Dim LocCountry as String
  308. Dim LocLanguage as String
  309.     LocCountry = oLocale.Country
  310.     LocLanguage = oLocale.Language
  311.     For i = 0 To 1
  312.         If LocLanguage = LangIDValue(CurrIndex,i,0) AND LocCountry = LangIDValue(CurrIndex,i,1) Then
  313.             CheckLocale = True
  314.             Exit Function
  315.         End If
  316.     Next i
  317.     CheckLocale = False
  318. End Function
  319.  
  320.  
  321. Sub    SetOptionValuestoNull()
  322.     With DialogModel
  323.         .optCellTemplates.State = 0
  324.         .optSheetRanges.State = 0
  325.         .optDocRanges.State = 0
  326.         .optSelRange.State = 0
  327.     End With
  328. End Sub
  329. </script:module>