| <?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="HtmlAutoPilotBasic" script:language="StarBasic">' Variables must be declared |
| Option Explicit |
| |
| Public CurDocIndex as Integer |
| Public CurWebPageIndex as Integer |
| |
| |
| Public bWithBackGraphic as Boolean |
| Public oStyle as Object |
| ' Maximum number of content templates, style templates and bullets |
| Const MaxLayouts = 50 |
| Const MaxStyles = 100 |
| Const MaxBullets = 10 |
| |
| 'Public NumberOfLayouts%, NumberOfStyles% |
| |
| ' Filled with title, previous, next, home, top, bullet, background, file name |
| Public Style(MaxStyles, 8) as String |
| |
| Public Layout$(MaxLayouts, 2) |
| |
| Public TextureDir$, BulletDir$, GraphicsDir$, GalleryDir$, PhotosDir$ |
| Public SOBitmapPath as String |
| Public CurrentBullet$, CurrentPrev$, CurrentNext$, CurrentHome$, CurrentTop$ |
| Public FileStr as String |
| |
| Public WebWiz_gWizardName$, WebWiz_gErrContentNotFound$, WebWiz_gErrStyleNotFound$ |
| Public WebWiz_gErrMainTemplateError$, WebWiz_gErrWhileReloading$ |
| Public WebWiz_gErrWhileLoadStyles$, WebWiz_gErrMsg$, WebWiz_gErrMainDocumentError$ |
| |
| Public ProgressBar as Object |
| Public ProgressValue As Long |
| Public oBaseDocument as Object |
| Public oViewCursor as Object |
| Public oViewSettings as Object |
| Public NoArgs() as New com.sun.star.beans.PropertyValue |
| |
| Public oCursor as Object |
| Public oBookmarks as Object |
| Public oBookMark as Object |
| |
| Public oUcb as Object |
| Public MainDialog as Object |
| Public DialogModel as Object |
| |
| |
| Sub Main |
| Dim RetValue |
| On Local Error Goto GlobalErrorHandler |
| BasicLibraries.LoadLibrary("Tools") |
| oUcb = createUnoService("com.sun.star.ucb.SimpleFileAccess") |
| oBaseDocument = StarDesktop.LoadComponentFromURL("private:factory/swriter/web", "_default", 0, NoArgs()) |
| oViewSettings = oBaseDocument.CurrentController.ViewSettings |
| oViewCursor = oBaseDocument.GetCurrentController.ViewCursor |
| CurWebPageIndex = -1 |
| ProgressBar = oBaseDocument.GetCurrentController.GetFrame.CreateStatusIndicator |
| ProgressBar.Start("", 100) |
| SetProgressValue(2) |
| oBaseDocument.LockControllers |
| oViewSettings.ShowTableBoundaries = False |
| If Not GetWebWizardPaths() Then |
| Exit Sub |
| End If |
| LoadLanguage |
| SetProgressValue(10) |
| Layout() = getListBoxArrays(oUcb, "/cnt") |
| GetCurIndex(DialogModel, Layout(),2) |
| SetProgressValue(30) |
| oCursor = oBasedocument.Text.CreateTextCursor |
| oCursor.InsertDocumentfromURL(FileStr, NoArgs()) |
| SetProgressValue(50) |
| Style() = getListBoxArrays(oUcb, "/stl") |
| SetProgressValue(70) |
| LoadWebPageStyles(oBaseDocument) |
| SetProgressValue(90) |
| oBaseDocument.UnlockControllers |
| OpenWebDialog() |
| SetProgressValue(98) |
| SetProgressValue(0) |
| MainDialog.Model.ImagePreview.BackGroundColor = RGB(0, 60,126) |
| RetValue = MainDialog.Execute |
| Select Case RetValue |
| Case 0 |
| MainDialog.Dispose() |
| DisposeDocument(oBaseDocument) |
| Case 1 |
| EndDialog() |
| MainDialog.Dispose() |
| End Select |
| GLOBALERRORHANDLER: |
| If Err <> 0 Then |
| MsgBox (WebWiz_gErrMsg$, 16, WebWiz_gWizardName$) |
| DisposeDocument(oBaseDocument) |
| RESUME EXITWIZARD |
| EXITWIZARD: |
| End If |
| End Sub |
| |
| |
| Function SetProgressValue(iValue as Integer) |
| If iValue = 0 Then |
| ProgressBar.End |
| End If |
| ProgressValue = iValue |
| ProgressBar.Value = iValue |
| End Function |
| |
| |
| Sub ReloadCurrentDocument() |
| Dim OldDocIndex as Integer |
| On Local Error Goto ErrorOcurred |
| OldDocIndex = CurDocIndex |
| CurDocIndex = GetCurIndex(DialogModel.lbTemplate, Layout(), 2) |
| If OldDocIndex <> CurDocIndex Then |
| oBaseDocument.LockControllers |
| ToggleDialogControls(False) |
| oCursor = oBaseDocument.Text.CreateTextCursor() |
| oCursor.GotoStart(False) |
| oCursor.GotoEnd(True) |
| oCursor.SetAllPropertiesToDefault() |
| oCursor.InsertDocumentfromURL(FileStr, NoArgs()) |
| SetBulletAndGraphics |
| CheckControls(oBaseDocument.DrawPage) |
| ErrorOcurred: |
| If Err <> 0 Then |
| MsgBox(WebWiz_gErrWhileReloading$, 16, WebWiz_gWizardName$) |
| End If |
| oBaseDocument.UnlockControllers |
| oViewCursor.GotoStart(False) |
| ToggleDialogControls(True, "lbTemplate") |
| End If |
| End Sub |
| |
| |
| |
| |
| Sub LoadWebPageStyles(aEvent as Object, Optional bStartUp as Boolean) |
| Dim OldWebPageIndex as Integer |
| OldWebPageIndex = CurWebPageIndex |
| If IsNull(DialogModel) Then |
| CurWebPageIndex = GetCurIndex(DialogModel, Style(), 8) |
| Else |
| CurWebPageIndex = GetCurIndex(DialogModel.lbStyles, Style(), 8) |
| End If |
| If OldWebPageIndex <> CurWebPageIndex Then |
| ToggleDialogControls(False) |
| oBaseDocument.LockControllers |
| bWithBackGraphic = LoadNewStyles(oBaseDocument, DialogModel, CurWebPageIndex, FileStr, Style(), TextureDir) |
| CurrentBullet$ = BulletDir + Style(CurWebPageIndex, 6) |
| CurrentPrev$ = GraphicsDir + Style(CurWebPageIndex, 2) |
| CurrentNext$ = GraphicsDir + Style(CurWebPageIndex, 3) |
| CurrentHome$ = GraphicsDir + Style(CurWebPageIndex, 4) |
| CurrentTop$ = GraphicsDir + Style(CurWebPageIndex, 5) |
| With oBaseDocument.DocumentProperties.UserDefinedProperties |
| .AutoPilotName1 = ExtractGraphicNames(CurWebPageIndex,2) |
| .AutoPilotName2 = ExtractGraphicNames(CurWebPageIndex, 4) |
| .AutoPilotBullet = Style(CurWebPageIndex, 6) |
| .AutoPilotBackground = Style(CurWebPageIndex, 7) |
| End With |
| SetBulletAndGraphics() |
| CheckControls(oBaseDocument.DrawPage) |
| oViewCursor.GotoStart(False) |
| oBaseDocument.UnlockControllers |
| ToggleDialogControls(True, "lbStyles") |
| End If |
| End Sub |
| |
| |
| Function ExtractGraphicNames(CurIndex as Integer, i as Integer) as String |
| Dim FieldValue as String |
| FieldValue = GetFileNameWithoutExtension(Style(CurIndex, i)) |
| FieldValue = FieldValue & " " & GetFileNameWithoutExtension(Style(CurIndex, i+1)) |
| ExtractGraphicNames = FieldValue |
| End Function |
| |
| |
| Sub SetBulletAndGraphics |
| SetGraphic("Prev", CurrentPrev) |
| SetGraphic("Next", CurrentNext) |
| SetGraphic("Home", CurrentHome) |
| SetGraphic("Top", CurrentTop) |
| SetBulletGraphics(CurrentBullet) |
| SetGraphicsToOriginalSize() |
| End Sub |
| |
| |
| Sub SetGraphicsToOriginalSize() |
| Dim oGraphics as Object |
| Dim oGraphic as Object |
| Dim i as Integer |
| Dim aActSize as New com.sun.star.awt.Size |
| oGraphics = oBaseDocument.GraphicObjects |
| For i = 0 To oGraphics.Count-1 |
| oGraphic = oGraphics.GetByIndex(i) |
| aActSize = oGraphic.ActualSize |
| If aActSize.Height > 0 And aActSize.Width > 0 Then |
| oGraphic.SetSize(aActSize) |
| End If |
| Next i |
| End Sub |
| |
| |
| Sub EndDialog() |
| If DialogModel.chkSaveasTemplate.State = 1 Then |
| ' Generating template? Set events later! |
| AttachBasicMacroToEvent(oBaseDocument,"OnNew", "WebWizard.HtmlAutoPilotBasic.SetEvent()") |
| ' Call the Store template dialog |
| DispatchSlot(5538) |
| AttachBasicMacroToEvent(oBaseDocument,"OnNew", "") |
| End If |
| SetEvent() |
| End Sub |
| |
| |
| Sub SetEvent() |
| Dim oDocument as Object |
| ' This sub links the events OnSaveDone and OnSaveAsDone to the procedure |
| ' CopyGraphics. It is invoked when a document is created, either directly |
| ' from the AutoPilot or from a template. It is not possible to set these |
| ' links for the template created by the AutoPilot because then it is not |
| ' possible to modify the template. |
| BasicLibraries.LoadLibrary("Tools") |
| oDocument = ThisComponent |
| AttachBasicMacroToEvent(oDocument,"OnSaveDone", "WebWizard.HtmlAutoPilotBasic.CopyGraphics()") |
| AttachBasicMacroToEvent(oDocument,"OnSaveAsDone", "WebWizard.HtmlAutoPilotBasic.CopyGraphics()") |
| End Sub |
| |
| |
| |
| Sub CopyGraphics |
| ' This sub copies all the graphics used in the document to the same directory the |
| ' document has been copied into and changes the graphics links in the document. |
| Dim oGraphicObjects as Object |
| Dim oGraphic as Object |
| Dim i as Integer |
| Dim udProps as Object |
| Dim SavePath as String |
| BasicLibraries.LoadLibrary("Tools") |
| oUcb = createUnoService("com.sun.star.ucb.SimpleFileAccess") |
| GetWebWizardPaths() |
| oBaseDocument = ThisComponent |
| ' oBaseDocument.LockControllers() |
| |
| ' Note: The sub DirectoryNameoutofPath should be change, so that the last character is a slash |
| SavePath = DirectoryNameoutofPath(oBaseDocument.Url, "/") & "/" |
| |
| oGraphicObjects = oBaseDocument.GraphicObjects |
| For i = 0 to oGraphicObjects.Count-1 |
| oGraphic = oGraphicObjects.GetbyIndex(i) |
| oGraphic.GraphicUrl = CopyFile(oGraphic.GraphicURL, SavePath) |
| Next i |
| |
| ChangeBackGraphicUrl(SavePath) |
| |
| BulletUrlsToSavePath(SavePath) |
| |
| udProps = oBaseDocument.DocumentProperties.UserDefinedProperties |
| udProps.addProperty("AutoPilotName1", 0, "") |
| udProps.addProperty("AutoPilotName2", 0, "") |
| udProps.addProperty("AutoPilotBullet", 0, "") |
| udProps.addProperty("AutoPilotBackground", 0, "") |
| |
| AttachBasicMacroToEvent(oBaseDocument,"OnSaveDone", "") |
| AttachBasicMacroToEvent(oBaseDocument,"OnSaveAsDone", "") |
| AttachBasicMacroToEvent(oBaseDocument,"OnNew", "") |
| oBaseDocument.Store |
| ' oBaseDocument.UnlockControllers() |
| End Sub |
| |
| |
| Function CopyFile(ByVal SourceUrl as String, TargetDir as String) |
| Dim sFileName as String |
| Dim sNewFileUrl as String |
| If oUcb.Exists(TargetDir) Then |
| If Len(TargetDir) > 2 Then |
| sFileName = FileNameoutofPath(SourceUrl) |
| sNewFileUrl = TargetDir & sFileName |
| oUcb.Copy(SourceUrl, sNewFileUrl) |
| CopyFile() = sNewFileUrl |
| End If |
| End If |
| End Function |
| |
| |
| Function getListBoxArrays(oUcb as Object, sFileFilter as String) |
| Dim oDocProps as Object |
| Dim oListboxControl as Object |
| Dim Description as String |
| Dim sField as String |
| Dim sFieldList() as String |
| Dim bItemFound as Boolean |
| Dim MaxIndex as Integer |
| Dim DirContent() as String |
| Dim FileName as String |
| Dim TemplatePath as String |
| Dim FilterLen as Integer |
| Dim i as Integer |
| Dim m as Integer |
| Dim n as Integer |
| Dim s as Integer |
| Dim a as Integer |
| Dim LocMaxIndex as Integer |
| Dim Properties() |
| Dim DimCount as Integer |
| Dim sExtension as String |
| oDocProps = CreateUnoService("com.sun.star.document.DocumentProperties") |
| FilterLen = Len(sFileFilter) |
| bItemFound = False |
| ' It has to be made sure that the TemplatePath <> "" |
| TemplatePath = GetOfficeSubPath("Template", "wizard/web/") |
| If TemplatePath = "" Then |
| Dim NullList() |
| getListBoxArrays() = NullList() |
| Exit Function |
| End If |
| DirContent() = oUcb.GetFolderContents(TemplatePath,True) |
| If sFileFilter = "/cnt" Then |
| DimCount = 2 |
| Else |
| DimCount = 8 |
| End If |
| LocMaxIndex = Ubound(DirContent()) |
| Dim List(LocMaxIndex, DimCount) as String |
| Dim SortList(LocMaxIndex,1) |
| For i = 0 to LocMaxIndex |
| SortList(i,0) = DirContent(i) |
| SortList(i,1) = RetrieveDocTitle(oDocProps, DirContent(i)) |
| Next i |
| SortList() = BubbleSortList(SortList(),True) |
| For i = 0 to LocMaxIndex |
| DirContent(i) = SortList(i,0) |
| Next i |
| a = 0 |
| For i = 0 To LocMaxIndex |
| FileName = DirContent(i) |
| sExtension = Ucase(GetFileNameExtension(FileName)) |
| If Instr(1,Filename, sFileFilter) And sExtension = "STW" Then |
| bItemFound = True |
| Description = RetrieveDocTitle(oDocProps, FileName) |
| Properties = oDocProps.UserDefinedProperties.PropertyValues |
| List(a,1) = Description |
| If sFileFilter = "/cnt" Then |
| List(a,2) = Filename |
| Else |
| m = 2 |
| For n = 0 To 3 |
| sField = Properties(n).Value |
| sFieldList() = ArrayoutofString(sField, " ", MaxIndex) |
| For s = 0 To MaxIndex |
| If m < 6 Then |
| List(a,m) = sFieldList(s) & ".gif" |
| Else |
| List(a,m) = sFieldList(s) |
| End If |
| m = m + 1 |
| Next s |
| Next n |
| List(a,8) = FileName |
| End If |
| a = a + 1 |
| End If |
| Next i |
| If sFileFilter = "/cnt" Then |
| ReDim Preserve List(a-1,2) as String |
| Else |
| ReDim Preserve List(a-1,8) as String |
| End If |
| If Not bItemfound Then |
| MsgBox(WebWiz_gErrContentNotFound$, 16, WebWiz_gWizardName$) |
| DisposeDocument(oBaseDocument) |
| Stop |
| End If |
| getListBoxArrays = List() |
| End Function |
| |
| |
| Sub SetGraphic(sWhich, sGraphicText as String) |
| Dim oLocCursor as Object |
| Dim oGraphic as Object |
| Dim bGetGraphic as Boolean |
| oBookmarks = oBaseDocument.BookMarks |
| If oBookmarks.HasbyName(sWhich)Then |
| oBookMark = oBookmarks.GetbyName(sWhich) |
| oLocCursor = oBookMark.Anchor.Text.CreateTextCursorByRange(oBookMark.Anchor) |
| oGraphic = oBaseDocument.CreateInstance("com.sun.star.text.GraphicObject") |
| oLocCursor.GoRight(3,True) |
| oGraphic.AnchorType = 1 |
| oGraphic.GraphicURL = ConverttoURL(sGraphicText) |
| oLocCursor.Text.InsertTextContent(oLocCursor, oGraphic, True) |
| oGraphic.Name = sWhich |
| ElseIf oBaseDocument.GraphicObjects.HasbyName(sWhich) Then |
| oGraphic = oBaseDocument.GraphicObjects.GetByName(sWhich) |
| oGraphic.GraphicUrl = sGraphicText |
| End If |
| End Sub |
| |
| |
| Sub CheckControls(oDrawPage as Object) |
| Dim aForm as Object |
| Dim m,n as integer |
| Dim lColor as Long |
| Dim oControl as Object |
| lColor = oBaseDocument.StyleFamilies.GetbyName("ParagraphStyles").GetByName("Standard").CharColor |
| 'SearchFor all possible Controls |
| For n = 0 to oDrawPage.Forms.Count - 1 |
| aForm = oDrawPage.Forms(n) |
| For m = 0 to aForm.Count-1 |
| oControl = aForm.GetbyIndex(m) |
| oControl.TextColor = lColor |
| Next |
| Next |
| End Sub |
| |
| |
| Sub RepaintHeaderPreview() |
| Dim Bitmap As Object |
| Dim sBitmapPath as String |
| sBitmapPath = SOBitmapPath & "webwizard.bmp" |
| WebWzrd.ImagePreview.ImageURL = sBitmapPath |
| End Sub |
| |
| |
| Sub ToggleDialogControls(ByVal bDoEnable as Boolean, Optional FocusControlName as String) |
| If Not IsNull(DialogModel) Then |
| DialogModel.Enabled = bDoEnable |
| If bDoEnable Then |
| ' Enable Controls referring to Background graphic only when this Property is set |
| bDoEnable = bWithBackGraphic |
| ToggleOptionButtons(DialogModel, bDoEnable) |
| MainDialog.GetControl(FocusControlName).SetFocus() |
| End If |
| End If |
| End Sub |
| </script:module> |