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=
"Misc" script:
language=
"StarBasic">REM ***** BASIC *****
7 Dim Taskindex as Integer
11 Dim PropList(
3,
1)
' as String
12 PropList(
0,
0) =
"URL
"
13 PropList(
0,
1) =
"sdbc:odbc:Erica_Test_Unicode
"
14 PropList(
1,
0) =
"User
"
15 PropList(
1,
1) =
"extra
"
16 PropList(
2,
0) =
"Password
"
17 PropList(
2,
1) =
"extra
"
18 PropList(
3,
0) =
"IsPasswordRequired
"
23 Function RegisterNewDataSource(DSName as String, PropertyList(), Optional DriverProperties() as New com.sun.star.beans.PropertyValue)
24 Dim oDataSource as Object
25 Dim oDBContext as Object
26 Dim oPropInfo as Object
28 oDBContext = createUnoService(
"com.sun.star.sdb.DatabaseContext
")
29 oDataSource = createUnoService(
"com.sun.star.sdb.DataSource
")
30 For i =
0 To Ubound(PropertyList(),
1)
31 sPropName = PropertyList(i,
0)
32 sPropValue = PropertyList(i,
1)
33 oDataSource.SetPropertyValue(sPropName,sPropValue)
35 If Not IsMissing(DriverProperties()) Then
36 oDataSource.Info() = DriverProperties()
38 oDBContext.RegisterObject(DSName, oDataSource)
39 RegisterNewDataSource () = oDataSource
43 ' Connects to a registered Database
44 Function ConnecttoDatabase(DSName as String, UserID as String, Password as String, Optional Propertylist(), Optional DriverProperties() as New com.sun.star.beans.PropertyValue)
45 Dim oDBContext as Object
46 Dim oDBSource as Object
47 ' On Local Error Goto NOCONNECTION
48 oDBContext = CreateUnoService(
"com.sun.star.sdb.DatabaseContext
")
49 If oDBContext.HasbyName(DSName) Then
50 oDBSource = oDBContext.GetByName(DSName)
51 ConnectToDatabase = oDBSource.GetConnection(UserID, Password)
53 If Not IsMissing(Namelist()) Then
54 If Not IsMissing(DriverProperties()) Then
55 RegisterNewDataSource(DSName, PropertyList(), DriverProperties())
57 RegisterNewDataSource(DSName, PropertyList())
59 oDBSource = oDBContext.GetByName(DSName)
60 ConnectToDatabase = oDBSource.GetConnection(UserID, Password)
62 Msgbox(
"DataSource
" & DSName
& " is not registered
" ,
16, GetProductname())
63 ConnectToDatabase() = NULL
67 If Err
<> 0 Then
68 Msgbox(Error$,
16, GetProductName())
75 Function GetStarOfficeLocale() as New com.sun.star.lang.Locale
76 Dim aLocLocale As New com.sun.star.lang.Locale
80 oMasterKey = GetRegistryKeyContent(
"org.openoffice.Setup/L10N/
")
81 sLocale = oMasterKey.getByName(
"ooLocale
")
82 sLocaleList() = ArrayoutofString(sLocale,
"-
")
83 aLocLocale.Language = sLocaleList(
0)
84 If Ubound(sLocaleList())
> 0 Then
85 aLocLocale.Country = sLocaleList(
1)
87 GetStarOfficeLocale() = aLocLocale
91 Function GetRegistryKeyContent(sKeyName as string, Optional bforUpdate as Boolean)
92 Dim oConfigProvider as Object
93 Dim aNodePath(
0) as new com.sun.star.beans.PropertyValue
94 oConfigProvider = createUnoService(
"com.sun.star.configuration.ConfigurationProvider
")
95 aNodePath(
0).Name =
"nodepath
"
96 aNodePath(
0).Value = sKeyName
97 If IsMissing(bForUpdate) Then
98 GetRegistryKeyContent() = oConfigProvider.createInstanceWithArguments(
"com.sun.star.configuration.ConfigurationAccess
", aNodePath())
101 GetRegistryKeyContent() = oConfigProvider.createInstanceWithArguments(
"com.sun.star.configuration.ConfigurationUpdateAccess
", aNodePath())
103 GetRegistryKeyContent() = oConfigProvider.createInstanceWithArguments(
"com.sun.star.configuration.ConfigurationAccess
", aNodePath())
109 Function GetProductname() as String
110 Dim oProdNameAccess as Object
111 Dim sVersion as String
112 Dim sProdName as String
113 oProdNameAccess = GetRegistryKeyContent(
"org.openoffice.Setup/Product
")
114 sProdName = oProdNameAccess.getByName(
"ooName
")
115 sVersion = oProdNameAccess.getByName(
"ooSetupVersion
")
116 GetProductName = sProdName
& sVersion
120 ' Opens a Document, checks beforehand, wether it has to be loaded
121 ' or wether it is already on the desktop.
122 ' If the parameter bDisposable is set to False then then returned document
123 ' should not be disposed afterwards, because it is already opened.
124 Function OpenDocument(DocPath as String, Args(), Optional bDisposable as Boolean)
125 Dim oComponents as Object
126 Dim oComponent as Object
127 ' Search if one of the active Components ist the one that you search for
128 oComponents = StarDesktop.Components.CreateEnumeration
129 While oComponents.HasmoreElements
130 oComponent = oComponents.NextElement
131 If hasUnoInterfaces(oComponent,
"com.sun.star.frame.XModel
") then
132 If UCase(oComponent.URL) = UCase(DocPath) then
133 OpenDocument() = oComponent
134 If Not IsMissing(bDisposable) Then
141 If Not IsMissing(bDisposable) Then
144 OpenDocument() = StarDesktop.LoadComponentFromURL(DocPath,
"_default
",
0,Args())
148 Function TaskonDesktop(DocPath as String) as Boolean
149 Dim oComponents as Object
150 Dim oComponent as Object
151 ' Search if one of the active Components ist the one that you search for
152 oComponents = StarDesktop.Components.CreateEnumeration
153 While oComponents.HasmoreElements
154 oComponent = oComponents.NextElement
155 If hasUnoInterfaces(oComponent,
"com.sun.star.frame.XModel
") then
156 If UCase(oComponent.URL) = UCase(DocPath) then
162 TaskonDesktop = False
166 ' Retrieves a FileName out of a StarOffice-Document
167 Function RetrieveFileName(LocDoc as Object)
169 Dim LocURLArray() as String
170 Dim MaxArrIndex as integer
173 LocURLArray() = ArrayoutofString(LocURL,
"/
",MaxArrIndex)
174 RetrieveFileName = LocURLArray(MaxArrIndex)
178 ' Gets a special configured PathSetting
179 Function GetPathSettings(sPathType as String, Optional bshowall as Boolean, Optional ListIndex as integer) as String
180 Dim oSettings, oPathSettings as Object
182 Dim PathList() as String
183 Dim MaxIndex as Integer
186 oPS = createUnoService(
"com.sun.star.util.PathSettings
")
188 If Not IsMissing(bShowall) Then
190 ShowPropertyValues(oPS)
194 sPath = oPS.getPropertyValue(sPathType)
195 If Not IsMissing(ListIndex) Then
196 ' Share and User-Directory
197 If Instr(
1,sPath,
";
")
<> 0 Then
198 PathList = ArrayoutofString(sPath,
";
", MaxIndex)
199 If ListIndex
<= MaxIndex Then
200 sPath = PathList(ListIndex)
202 Msgbox(
"String Cannot be analyzed!
" & sPath ,
16, GetProductName())
206 If Instr(
1, sPath,
";
") =
0 Then
207 GetPathSettings = ConvertToUrl(sPath)
209 GetPathSettings = sPath
216 ' Gets the fully qualified path to a subdirectory of the
217 ' Template Directory, e. g. with the parameter
"wizard/bitmap
"
218 ' The parameter must be passed over in Url-scription
219 ' The return-Value is in Urlscription
220 Function GetOfficeSubPath(sOfficePath as String, ByVal sSubDir as String)
221 Dim sOfficeString as String
222 Dim sOfficeList() as String
223 Dim sOfficeDir as String
224 Dim sBigDir as String
226 Dim MaxIndex as Integer
228 oUcb = createUnoService(
"com.sun.star.ucb.SimpleFileAccess
")
229 sOfficeString = GetPathSettings(sOfficePath)
230 If Right(sSubDir,
1)
<> "/
" Then
231 sSubDir = sSubDir
& "/
"
233 sOfficeList() = ArrayoutofString(sOfficeString,
";
", MaxIndex)
234 For i =
0 To MaxIndex
235 sOfficeDir = ConvertToUrl(sOfficeList(i))
236 If Right(sOfficeDir,
1)
<> "/
" Then
237 sOfficeDir = sOfficeDir
& "/
"
239 sBigDir = sOfficeDir
& sSubDir
240 If oUcb.Exists(sBigDir) Then
241 GetOfficeSubPath() = sBigDir
245 ShowNoOfficePathError()
246 GetOfficeSubPath =
""
250 Sub ShowNoOfficePathError()
251 Dim ProductName as String
253 Dim bResObjectexists as Boolean
254 Dim oLocResSrv as Object
255 bResObjectexists = not IsNull(oResSrv)
256 If bResObjectexists Then
259 If InitResources(
"Tools
",
"com
") Then
260 ProductName = GetProductName()
261 sError = GetResText(
1006)
262 sError = ReplaceString(sError, ProductName,
"%PRODUCTNAME
")
263 sError = ReplaceString(sError, chr(
13),
"<BR
>")
264 MsgBox(sError,
16, ProductName)
266 If bResObjectexists Then
273 Function InitResources(Description, ShortDescription as String) as boolean
274 On Error Goto ErrorOcurred
275 oResSrv = createUnoService(
"com.sun.star.resource.VclStringResourceLoader
" )
276 If (IsNull(oResSrv)) then
277 InitResources = FALSE
278 MsgBox( Description
& ": No resource loader found
",
16, GetProductName())
281 oResSrv.FileName = ShortDescription
286 InitResources = FALSE
287 nSolarVer = GetSolarVersion()
288 MsgBox(
"Resource file missing (
" & ShortDescription
& trim(str(nSolarVer)) +
"*.res)
",
16, GetProductName())
294 Function GetResText( nID as integer ) As string
295 On Error Goto ErrorOcurred
296 If Not IsNull(oResSrv) Then
297 GetResText = oResSrv.getString( nID )
299 GetResText =
""
303 GetResText =
""
304 MsgBox(
"Resource with ID =
" + str( nID ) +
" not found!
",
16, GetProductName())
310 Function CutPathView(sDocUrl as String, Optional PathLen as Integer)
311 Dim sViewPath as String
312 Dim FileName as String
313 Dim iFileLen as Integer
314 sViewPath = ConvertfromURL(sDocURL)
315 iViewPathLen = Len(sViewPath)
316 If iViewPathLen
> 60 Then
317 FileName = FileNameoutofPath(sViewPath,
"/
")
318 iFileLen = Len(FileName)
319 If iFileLen
< 44 Then
320 sViewPath = Left(sViewPath,
57-iFileLen-
10)
& "...
" & Right(sViewPath,iFileLen +
10)
322 sViewPath = Left(sViewPath,
27)
& " ...
" & Right(sViewPath,
28)
325 CutPathView = sViewPath
329 ' Deletes the content of all cells that are softformatted according
330 ' to the
'InputStyleName
'
331 Sub DeleteInputCells(oSheet as Object, InputStyleName as String)
332 Dim oRanges as Object
334 oRanges = oSheet.CellFormatRanges.createEnumeration
335 While oRanges.hasMoreElements
336 oRange = oRanges.NextElement
337 If Instr(
1,oRange.CellStyle, InputStyleName)
<> 0 Then
338 Call ReplaceRangeValues(oRange,
"")
344 ' Inserts a certain String to all cells of a Range that ist passed over
345 ' either as an object or as the RangeName
346 Sub ChangeValueofRange(oSheet as Object, Range, ReplaceValue, Optional StyleName as String)
347 Dim oCellRange as Object
348 If Vartype(Range) =
8 Then
349 ' Get the Range out of the Rangename
350 oCellRange = oSheet.GetCellRangeByName(Range)
352 ' The range is passed over as an object
353 Set oCellRange = Range
355 If IsMissing(StyleName) Then
356 ReplaceRangeValues(oCellRange, ReplaceValue)
358 If Instr(
1,oCellRange.CellStyle,StyleName) Then
359 ReplaceRangeValues(oCellRange, ReplaceValue)
365 Sub ReplaceRangeValues(oRange as Object, ReplaceValue)
366 Dim oRangeAddress as Object
367 Dim ColCount as Integer
368 Dim RowCount as Integer
370 oRangeAddress = oRange.RangeAddress
371 ColCount = oRangeAddress.EndColumn - oRangeAddress.StartColumn
372 RowCount = oRangeAddress.EndRow - oRangeAddress.StartRow
373 Dim FillArray(RowCount) as Variant
374 Dim sLine(ColCount) as Variant
375 For i =
0 To ColCount
376 sLine(i) = ReplaceValue
378 For i =
0 To RowCount
379 FillArray(i) = sLine()
381 oRange.DataArray = FillArray()
385 ' Returns the Value of the first cell of a Range
386 Function GetValueofCellbyName(oSheet as Object, sCellName as String)
388 oCell = GetCellByName(oSheet, sCellName)
389 GetValueofCellbyName = oCell.Value
393 Function DuplicateRow(oSheet as Object, RangeName as String)
396 Dim oCellAddress as New com.sun.star.table.CellAddress
397 Dim oRangeAddress as New com.sun.star.table.CellRangeAddress
398 oRange = oSheet.GetCellRangeByName(RangeName)
399 oRangeAddress = oRange.RangeAddress
400 oCell = oSheet.GetCellByPosition(oRangeAddress.StartColumn,oRangeAddress.StartRow)
401 oCellAddress = oCell.CellAddress
402 oSheet.Rows.InsertByIndex(oCellAddress.Row,
1)
403 oRangeAddress = oRange.RangeAddress
404 oSheet.CopyRange(oCellAddress, oRangeAddress)
405 DuplicateRow = oRangeAddress.StartRow-
1
409 ' Returns the String of the first cell of a Range
410 Function GetStringofCellbyName(oSheet as Object, sCellName as String)
412 oCell = GetCellByName(oSheet, sCellName)
413 GetStringofCellbyName = oCell.String
417 ' Returns a named Cell
418 Function GetCellByName(oSheet as Object, sCellName as String) as Object
419 Dim oCellRange as Object
420 Dim oCellAddress as Object
421 oCellRange = oSheet.GetCellRangeByName(sCellName)
422 oCellAddress = oCellRange.RangeAddress
423 GetCellByName = oSheet.GetCellByPosition(oCellAddress.StartColumn,oCellAddress.StartRow)
427 ' Changes the numeric Value of a cell by transmitting the String of the numeric Value
428 Sub ChangeCellValue(oCell as Object, ValueString as String)
430 oCell.Formula =
"=Value(
" & """" & ValueString
& """" & ")
"
431 CellValue = oCell.Value
432 oCell.Formula =
""
433 oCell.Value = CellValue
437 Function GetDocumentType(oDocument)
438 On Local Error GoTo NODOCUMENTTYPE
439 ' ShowSupportedServiceNames(oDocument)
440 If oDocument.SupportsService(
"com.sun.star.sheet.SpreadsheetDocument
") Then
441 GetDocumentType() =
"scalc
"
442 ElseIf oDocument.SupportsService(
"com.sun.star.text.TextDocument
") Then
443 GetDocumentType() =
"swriter
"
444 ElseIf oDocument.SupportsService(
"com.sun.star.drawing.DrawingDocument
") Then
445 GetDocumentType() =
"sdraw
"
446 ElseIf oDocument.SupportsService(
"com.sun.star.presentation.PresentationDocument
") Then
447 GetDocumentType() =
"simpress
"
448 ElseIf oDocument.SupportsService(
"com.sun.star.formula.FormulaProperties
") Then
449 GetDocumentType() =
"smath
"
452 If Err
<> 0 Then
453 GetDocumentType =
""
460 Function GetNumberFormatType(oDocFormats, oFormatObject as Object) as Integer
461 Dim ThisFormatKey as Long
462 Dim oObjectFormat as Object
463 On Local Error Goto NOFORMAT
464 ThisFormatKey = oFormatObject.NumberFormat
465 oObjectFormat = oDocFormats.GetByKey(ThisFormatKey)
466 GetNumberFormatType = oObjectFormat.Type
468 If Err
<> 0 Then
469 Msgbox(
"Numberformat of Object is not available!
",
16, GetProductName())
470 GetNumberFormatType =
0
474 On Local Error Goto
0
478 Sub ProtectSheets(Optional oSheets as Object)
480 Dim oDocSheets as Object
481 If IsMissing(oSheets) Then
482 oDocSheets = StarDesktop.CurrentFrame.Controller.Model.Sheets
484 Set oDocSheets = oSheets
487 For i =
0 To oDocSheets.Count-
1
488 oDocSheets(i).Protect(
"")
493 Sub UnprotectSheets(Optional oSheets as Object)
495 Dim oDocSheets as Object
496 If IsMissing(oSheets) Then
497 oDocSheets = StarDesktop.CurrentFrame.Controller.Model.Sheets
499 Set oDocSheets = oSheets
502 For i =
0 To oDocSheets.Count-
1
503 oDocSheets(i).Unprotect(
"")
508 Function GetRowIndex(oSheet as Object, RowName as String)
510 oRange = oSheet.GetCellRangeByName(RowName)
511 GetRowIndex = oRange.RangeAddress.StartRow
515 Function GetColumnIndex(oSheet as Object, ColName as String)
517 oRange = oSheet.GetCellRangeByName(ColName)
518 GetColumnIndex = oRange.RangeAddress.StartColumn
522 Function CopySheetbyName(oSheets as Object, OldName as String, NewName as String, DestPos as Integer) as Object
525 Dim BasicSheetName as String
527 BasicSheetName = NewName
528 ' Copy the last table. Assumption: The last table is the template
529 On Local Error Goto RENAMESHEET
530 oSheets.CopybyName(OldName, NewName, DestPos)
533 oSheet = oSheets(DestPos)
534 If Err
<> 0 Then
535 ' Test if renaming failed
537 Do While oSheet.Name
<> NewName
538 NewName = BasicSheetName
& "_
" & Count
539 oSheet.Name = NewName
545 CopySheetbyName = oSheet
549 ' Dis-or enables a Window and adjusts the mousepointer accordingly
550 Sub ToggleWindow(bDoEnable as Boolean)
551 Dim oWindow as Object
552 oWindow = StarDesktop.CurrentFrame.ComponentWindow
553 oWindow.Enable = bDoEnable
557 Function CheckNewSheetname(oSheets as Object, Sheetname as String, Optional oLocale) as String
558 Dim nStartFlags as Long
559 Dim nContFlags as Long
560 Dim oCharService as Object
561 Dim iSheetNameLength as Integer
562 Dim iResultPos as Integer
563 Dim WrongChar as String
564 Dim oResult as Object
565 nStartFlags = com.sun.star.i18n.KParseTokens.ANY_LETTER_OR_NUMBER + com.sun.star.i18n.KParseTokens.ASC_UNDERSCORE
566 nContFlags = nStartFlags
567 oCharService = CreateUnoService(
"com.sun.star.i18n.CharacterClassification
")
568 iSheetNameLength = Len(SheetName)
569 If IsMissing(oLocale) Then
570 oLocale = ThisComponent.CharLocale
573 oResult =oCharService.parsePredefinedToken(com.sun.star.i18n.KParseType.IDENTNAME, SheetName,
0, oLocale, nStartFlags,
"", nContFlags,
" ")
574 iResultPos = oResult.EndPos
575 If iResultPos
< iSheetNameLength Then
576 WrongChar = Mid(SheetName, iResultPos+
1,
1)
577 SheetName = ReplaceString(SheetName,
"_
", WrongChar)
579 Loop Until iResultPos = iSheetNameLength
580 CheckNewSheetname = SheetName
584 Sub AddNewSheetName(oSheets as Object, ByVal SheetName as String)
586 Dim bSheetIsThere as Boolean
587 Dim iSheetNameLength as Integer
588 iSheetNameLength = Len(SheetName)
591 bSheetIsThere = oSheets.HasByName(SheetName)
592 If bSheetIsThere Then
593 SheetName = Right(SheetName,iSheetNameLength)
& "_
" & Count
596 Loop Until Not bSheetIsThere
597 AddNewSheetname = SheetName
601 Function GetSheetIndex(oSheets, sName) as Integer
603 For i =
0 To oSheets.Count-
1
604 If oSheets(i).Name = sName Then
613 Function GetLastUsedRow(oSheet as Object) as Integer
615 Dim oCursor As Object
616 Dim aAddress As Variant
617 oCell = oSheet.GetCellbyPosition(
0,
0)
618 oCursor = oSheet.createCursorByRange(oCell)
619 oCursor.GotoEndOfUsedArea(True)
620 aAddress = oCursor.RangeAddress
621 GetLastUsedRow = aAddress.EndRow
625 ' Note To set a one lined frame you have to set the inner width to
0
626 ' In the API all Units that refer to pt-Heights are
"1/
100mm
"
627 ' The convert factor from
1pt to
1/
100 mm is approximately
35
628 Function ModifyBorderLineWidth(ByVal oStyleBorder, iInnerLineWidth as Integer, iOuterLineWidth as Integer)
629 Dim aBorder as New com.sun.star.table.BorderLine
630 aBorder = oStyleBorder
631 aBorder.InnerLineWidth = iInnerLineWidth
632 aBorder.OuterLineWidth = iOuterLineWidth
633 ModifyBorderLineWidth = aBorder
637 Sub AttachBasicMacroToEvent(oDocument as Object, EventName as String, SubPath as String)
638 Dim PropValue(
1) as new com.sun.star.beans.PropertyValue
639 PropValue(
0).Name =
"EventType
"
640 PropValue(
0).Value =
"StarBasic
"
641 PropValue(
1).Name =
"Script
"
642 PropValue(
1).Value =
"macro:///
" & SubPath
643 oDocument.Events.ReplaceByName(EventName, PropValue())
648 Function ModifyPropertyValue(oContent() as New com.sun.star.beans.PropertyValue, TargetProperties() as New com.sun.star.beans.PropertyValue)
649 Dim MaxIndex as Integer
652 MaxIndex = Ubound(oContent())
654 For i =
0 To MaxIndex
655 a = GetPropertyValueIndex(oContent(i).Name, TargetProperties())
656 If a
<> -
1 Then
657 If Vartype(TargetProperties(a).Value)
<> 9 Then
658 If TargetProperties(a).Value
<> oContent(i).Value Then
659 oContent(i).Value = TargetProperties(a).Value
663 If Not EqualUnoObjects(TargetProperties(a).Value, oContent(i).Value) Then
664 oContent(i).Value = TargetProperties(a).Value
670 ModifyPropertyValue() = bDoReplace
674 Function GetPropertyValueIndex(SearchName as String, TargetProperties() as New com.sun.star.beans.PropertyValue ) as Integer
676 For i =
0 To Ubound(TargetProperties())
677 If Searchname = TargetProperties(i).Name Then
678 GetPropertyValueIndex = i
682 GetPropertyValueIndex() = -
1
686 Sub DispatchSlot(SlotID as Integer)
687 Dim oArg() as new com.sun.star.beans.PropertyValue
688 Dim oUrl as new com.sun.star.util.URL
691 oTrans = createUNOService(
"com.sun.star.util.URLTransformer
")
692 oUrl.Complete =
"slot:
" & CStr(SlotID)
693 oTrans.parsestrict(oUrl)
694 oDisp = StarDesktop.ActiveFrame.queryDispatch(oUrl,
"_self
",
0)
695 oDisp.dispatch(oUrl, oArg())
699 'returns the type of the office application
700 'FatOffice =
0, WebTop =
1
701 'This routine has to be changed if the Product Name is being changed!
702 Function IsFatOffice() As Boolean
703 If sProductname =
"" Then
704 sProductname = GetProductname()
707 'The following line has to include the current productname
708 If Instr(
1,sProductname,
"WebTop
",
1)
<> 0 Then
714 Function GetLocale(sLanguage as String, sCountry as String)
715 Dim oLocale as New com.sun.star.lang.Locale
716 oLocale.Language = sLanguage
717 oLocale.Country = sCountry
722 Sub ToggleDesignMode(oDocument as Object)
723 Dim aSwitchMode as new com.sun.star.util.URL
724 aSwitchMode.Complete =
".uno:SwitchControlDesignMode
"
725 aTransformer = createUnoService(
"com.sun.star.util.URLTransformer
")
726 aTransformer.parseStrict(aSwitchMode)
727 oFrame = oDocument.currentController.Frame
728 oDispatch = oFrame.queryDispatch(aSwitchMode, oFrame.Name,
63)
729 Dim aEmptyArgs() as New com.sun.star.bean.PropertyValue
730 oDispatch.dispatch(aSwitchMode, aEmptyArgs())
735 Function isHighContrast(oPeer as Object)
738 Dim myGreen as Integer
739 Dim myBlue as Integer
740 Dim myLuminance as Double
742 UIColor = oPeer.getProperty(
"DisplayBackgroundColor
" )
743 myRed = Red (UIColor)
744 myGreen = Green (UIColor)
745 myBlue = Blue (UIColor)
746 myLuminance = (( myBlue*
28 + myGreen*
151 + myRed*
77 ) /
256 )
747 isHighContrast = false
748 If myLuminance
<=
25 Then isHighContrast = true
752 Function CreateNewDocument(sType as String, Optional sAddMsg as String) as Object
753 Dim NoArgs() as new com.sun.star.beans.PropertyValue
754 Dim oDocument as Object
757 On Local Error Goto NOMODULEINSTALLED
758 sUrl =
"private:factory/
" & sType
759 oDocument = StarDesktop.LoadComponentFromURL(sUrl,
"_default
",
0, NoArgs())
761 If (Err
<> 0) OR IsNull(oDocument) Then
762 If InitResources(
"",
"com
") Then
764 Case
"swriter
"
765 ErrMsg = GetResText(
1001)
766 Case
"scalc
"
767 ErrMsg = GetResText(
1002)
768 Case
"simpress
"
769 ErrMsg = GetResText(
1003)
770 Case
"sdraw
"
771 ErrMsg = GetResText(
1004)
772 Case
"smath
"
773 ErrMsg = GetResText(
1005)
775 ErrMsg =
"Invalid Document Type!
"
777 ErrMsg = ReplaceString(ErrMsg, chr(
13),
"<BR
>")
778 If Not IsMissing(sAddMsg) Then
779 ErrMsg = ErrMsg
& chr(
13)
& sAddMsg
781 Msgbox(ErrMsg,
48, GetProductName())
783 If Err
<> 0 Then
788 CreateNewDocument = oDocument
792 ' This Sub has been used in order to ensure that after disposing a document
793 ' from the backing window it is returned to the backing window, so the
794 ' office won
't be closed
795 Sub DisposeDocument(oDocument as Object)
796 Dim dispatcher as Object
799 Dim url as new com.sun.star.util.URL
800 Dim NoArgs() as New com.sun.star.beans.PropertyValue
802 If Not IsNull(oDocument) Then
803 oDocument.setModified(false)
804 parser = createUnoService(
"com.sun.star.util.URLTransformer
")
805 url.Complete =
".uno:CloseDoc
"
806 parser.parseStrict(url)
807 oFrame = oDocument.CurrentController.Frame
808 disp = oFrame.queryDispatch(url,
"_self
", com.sun.star.util.SearchFlags.NORM_WORD_ONLY)
809 disp.dispatch(url, NoArgs())
813 'Function to calculate if the year is a leap year
814 Function CalIsLeapYear(ByVal iYear as Integer) as Boolean
815 CalIsLeapYear = ((iYear Mod
4 =
0) And ((iYear Mod
100 <> 0) Or (iYear Mod
400 =
0)))