REM ***** BASIC ***** Dim DialogVisible As Boolean Dim TutorStep As Integer Dim TutorLastStep As Integer Dim myDialog As Object Dim myTutorial As Object Public TutorText() As String Dim documentTitle As String Dim exampleUse As Object Dim properties() As Object Dim docTYP As String 'public myWidth As Long Dim myHeight As Long Dim oTextField As Object Dim stepTitle As String Dim oOpenDialogFlag Dim imageStatus As String

Sub LoadTutorialDialog(exampleToUse, documentTYP) Init() exampleUse = exampleToUse TutorText() = exampleUse.LoadText() properties() = exampleUse.GetProperties() If properties(3).Value = "True" Then Dim localisation(0) As new com.sun.star.beans.NamedValue localisation(0).Name = "Localisation" localisation(0).Value = properties() myTutorial.execute(localisation()) Else TutorStep = 0 TutorLastStep = 0 docTYP = documentTYP InitAction() ShowInfoMain() DialogVisible = True myDialog = LoadDialog("Tutorials","TutorialsDialog")

SetTutorialDocumentPosSize()

documentProps = ThisComponent.getDocumentProperties() myDialog.Title = "Tutorials - " & documentProps.Title oTextField = myDialog.GetControl("myTextField") oTextField.setVisible(False)

imageStatus = "MIN" setMaxMinImage(imageStatus)

'myWidth = myDialog.Size.Width myHeight = myDialog.Size.Height

CheckForStepShowButtonStatus() CheckForStepNextButtonStatus() InitRoadMap() SetVisibleTrue() myDialog.model.myTextField.Label = stepTitle myDialog.model.myText.Label = GetStepText()'TutorText(TutorStep)

Do wait 1000 Loop Until DialogVisible = False If( oOpenDialogFlag = True) Then Destroy() TutorialOpen.TutorialOpenMain() Else Destroy() End If End If End Sub

Sub setMaxMinImage(param As String) On Local Error Goto NOIMAGE oCommandButton = myDialog.GetControl("CommandButton") templatePath = GetPathSettings("Template",false, 0) Dim bitmapPath As String iPos = InStr(templatePath,"/") If(iPos > 0) Then If(param = "MAX") Then bitmapPath = templatePath & "../wizard/bitmap/maximize.png" ElseIf(param = "MIN") Then bitmapPath = templatePath & "../wizard/bitmap/minimize.png" End If Else If(param = "MAX") Then bitmapPath = templatePath & "..\wizard\bitmap\maximize.png" ElseIf(param = "MIN") Then bitmapPath = templatePath & "..\wizard\bitmap\minimize.png" End If End If 'printdbgInfo oCommandButton.Model oCommandButton.Model.ImageUrl = bitmapPath Exit Sub NOIMAGE: End Sub

Sub SetTutorialDocumentPosSize() activDesktopWindow = StarDesktop.activeFrame.ContainerWindow If(activDesktopWindow.posSize.Height < 550) Then activDesktopWindow.setPosSize(0,0,0,550,8) End If If (activDesktopWindow.posSize.Width < 750 ) Then activDesktopWindow.setPosSize(0,0,750,0,4) EndIf End Sub

Sub InitRoadMap() RoadMapMain(Functions, myDialog) SetControlModelPosSize(0, 0, 85, 176) SetControlModelText("Steps")

StepSize = Ubound(TutorText()) Dim ItemsArray(StepSize) as String For i = 0 To StepSize stepcontent = TutorText(i) iPos = InStr(stepcontent,CHR(13)) ItemName = Left(stepcontent, iPos) ItemsArray(i) = ItemName Next i InsertItemsLabels( ItemsArray())

For i = 1 To StepSize SetItemEnabled( i, False) Next i SetItemEnabled( 0, True) End Sub

Sub Destroy() 'myDialog.dispose wait 1000 ShowInfoDialog.DisposeIDialog()

' THE DOCUMENT GETS CLOSED HERE!!!!!!!! GPF thisComponent.CurrentController.Frame.close(True)

End Sub

Sub Init GlobalScope.BasicLibraries.LoadLibrary("Tools") myTutorial = createUNOService("com.sun.star.wizards.tutorial.executer.CallTutorialFramework") documentTitle = ThisComponent.getCurrentController.getFrame.Title End Sub

Sub InitStep udProps = ThisComponent.DocumentProperties.UserDefinedProperties If udProps.PropertySetInfo.hasPropertyByName("CurrentStep") Then TutorStep = udProps.CurrentStep Else udProps.addProperty("CurrentStep", 0, TutorStep) End If End Sub

Sub setStep ThisComponent.DocumentProperties.UserDefinedProperties.CurrentStep = TutorStep End Sub

Sub InitAction() SetStepTitle()

Dim property(6) As new com.sun.star.beans.PropertyValue property(0).Name = "DocumentTYP" property(0).Value = docTYP property(1).Name = "MethodName" property(1).Value = "setDelay" property(2).Name = "Param" property(2).Value = 0 'key insert speed (Millis) property(3).Name = "Param" property(3).Value = 4 'mouse animate speed (Millis) property(4).Name = "Param" property(4).Value = 2000 'after mouse animate sleep (Millis) property(5).Name = "Param" property(5).Value = 10 'mouse scroll speed (Millis) property(6).Name = "Param" property(6).Value = -1 'mouse speed (step) myTutorial.setPropertyValues(property()) End Sub

Sub EndDialog oOpenDialogFlag = False If (myDialog.model.done.Label = "Close") Then TutorialCloseMain() Else DialogVisible = False End If End Sub

Sub NextStep GotoStep(TutorStep + 1) End Sub

Sub GotoStep(StepIndex) If(StepIndex <= Ubound(TutorText())) Then TutorStep = StepIndex If TutorStep > TutorLastStep Then TutorLastStep = TutorStep End If If(TutorStep = Ubound(TutorText())) Then myDialog.model.next.enabled = False myDialog.model.done.Label = "Done" myDialog.model.show.Label = "Tutorials" Else myDialog.model.next.enabled = True End If SetStepTitle() myDialog.model.myText.Label = GetStepText() CheckForStepShowButtonStatus() SetItemEnabled( TutorStep, True) 'setStep() End If End Sub

Function GetStepText() Dim tempText As String tempText = TutorText(TutorStep) iPos = InStr(tempText,CHR(13)) ResultString = Right(tempText, Len(tempText) - iPos - 1) GetStepText() = ResultString End Function

Sub ItemChange(CurrentItemID, SelectitemID) GotoStep(SelectitemID) End Sub

Sub SetDisableShowMeButton() myDialog.model.show.enabled = False TutorLastStep = TutorLastStep + 1 End Sub

Sub Minimize(aEvent) ActionItemsTextField = myDialog.GetControl("ActionItemsLabel") FixedLineVertikal = myDialog.GetControl("FixedLineVertikal")

If myDialog.Size.Height = 35 Then myDialog.setPosSize(0,0,0,myHeight,8) oTextField.setVisible(False) ActionItemsTextField.setVisible(True) FixedLineVertikal.setVisible(True) RoadMap.SetVisibleRoadMap(True) Else myDialog.setPosSize(0,0,0,35,8) rmSelectedIndex = RoadMap.GetSelectedIndex() + 1 gsTitle = GetStepTitle() oTextField.setText(rmSelectedIndex & ". " & gsTitle) oTextField.setVisible(True) ActionItemsTextField.setVisible(False) FixedLineVertikal.setVisible(False) RoadMap.SetVisibleRoadMap(False) End If If(imageStatus = "MAX") Then imageStatus = "MIN" ElseIf(imageStatus = "MIN") Then imageStatus = "MAX" End If setMaxMinImage(imageStatus)

End Sub

Sub SetStepTitle() stepcontent = TutorText(TutorStep) iPos = InStr(stepcontent,CHR(13)) stepTitle = Left(stepcontent, iPos) SetStepTitle() = stepTitle End Sub

Function GetStepTitle() GetStepTitle() = stepTitle End Function

Sub CheckForStepShowButtonStatus() If ((exampleUse.ContainsStepAction() = True And TutorStep = TutorLastStep) Or myDialog.model.show.Label = "Tutorials") Then myDialog.model.show.enabled = True Else myDialog.model.show.enabled = False End If End Sub

Sub CheckForStepNextButtonStatus() If(TutorStep = Ubound(TutorText())) Then myDialog.model.next.enabled = False myDialog.model.done.Label = "Done" End If End Sub

Sub Show(aEvent) 'ShowInfoMain() If( myDialog.model.show.Label = "Tutorials") Then oOpenDialogFlag = True DialogVisible = False Else SetMousePosition(aEvent) exampleUse.Action() End If End Sub

Sub SetMousePosition(aEvent) MyPoints() = MousePoints(aEvent)

Dim mousePosition(3) as new com.sun.star.beans.PropertyValue mousePosition(0).Name = "DocumentTYP" mousePosition(0).Value = docTYP mousePosition(1).Name = "MethodName" mousePosition(1).Value = "setMousePosition" mousePosition(2).Name = "Param" mousePosition(2).Value = MyPoints(0) mousePosition(3).Name = "Param" mousePosition(3).Value = MyPoints(1)

myTutorial.setPropertyValues(mousePosition()) End Sub

Function MousePoints(aEvent) Dim position(1) As Integer position(0) = myDialog.getControl("show").AccessibleContext.LocationOnScreen.X + aEvent.Source.Model.PositionX position(1) = myDialog.getControl("show").AccessibleContext.LocationOnScreen.Y + aEvent.Source.Model.PositionY MousePoints = position() End Function

Function CheckPath(path() As String) 'documentTitle = ThisComponent.getCurrentController.getFrame.Title sTitle = path(0) ResultString = Right(sTitle, 3) iPos = InStr(ResultString,"#") ResultString = Right(ResultString, Len(ResultString) - iPos) ResultFrameString = InStr (sTitle, "{D}FRAME#") If ResultFrameString <> 0 Then If Not (sTitle = ("{D}FRAME#" & documentTitle & "#" & ResultString)) Then 'path(0) = "{D}FRAME#" & documentTitle & "#" & ResultString path(0) = "FRAME#" & documentTitle & "#" & ResultString sTitle = path(1) ResultString = Right(sTitle, 3) iPos = InStr(ResultString,"#") ResultString = Right(ResultString, Len(ResultString) - iPos) path(1) = "ROOT_PANE#" & documentTitle & "#" & ResultString Else 'path(0) = "{D}FRAME#" & documentTitle & "#" & ResultString path(0) = "FRAME#" & documentTitle & "#" & ResultString End If End If End Function

Sub SetVisibleTutorialsDialog(param) myDialog.setVisible(param) End Sub

Sub SetVisibleTrue() myDialog.setVisible(True) End Sub

Sub SetVisibleFalse() myDialog.setVisible(False) End Sub

Sub ExitTutorial() Dim aUrl As new com.sun.star.util.URL oDoc = ThisComponent urlTransformer = createUNOService("com.sun.star.util.URLTransformer") aUrl.Complete = "slot:5621" urlTransformer.parseStrict(aUrl) xController = oDoc.getCurrentController() xDispatcher = xController.queryDispatch(aUrl, "", 0) if NOT isNull(xDispatcher) then xDispatcher.dispatch(aUrl, DimArray()) else msgBox "Error! Cannot close document." End If End Sub