1<?xml version="1.0" encoding="UTF-8"?> 2<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd"> 3<!--*********************************************************** 4 * 5 * Licensed to the Apache Software Foundation (ASF) under one 6 * or more contributor license agreements. See the NOTICE file 7 * distributed with this work for additional information 8 * regarding copyright ownership. The ASF licenses this file 9 * to you under the Apache License, Version 2.0 (the 10 * "License"); you may not use this file except in compliance 11 * with the License. You may obtain a copy of the License at 12 * 13 * http://www.apache.org/licenses/LICENSE-2.0 14 * 15 * Unless required by applicable law or agreed to in writing, 16 * software distributed under the License is distributed on an 17 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 18 * KIND, either express or implied. See the License for the 19 * specific language governing permissions and limitations 20 * under the License. 21 * 22 ***********************************************************--> 23<script:module xmlns:script="http://openoffice.org/2000/script" script:name="HtmlAutoPilotBasic" script:language="StarBasic">' Variables must be declared 24Option Explicit 25 26Public CurDocIndex as Integer 27Public CurWebPageIndex as Integer 28 29 30Public bWithBackGraphic as Boolean 31Public oStyle as Object 32' Maximum number of content templates, style templates and bullets 33Const MaxLayouts = 50 34Const MaxStyles = 100 35Const MaxBullets = 10 36 37'Public NumberOfLayouts%, NumberOfStyles% 38 39' Filled with title, previous, next, home, top, bullet, background, file name 40Public Style(MaxStyles, 8) as String 41 42Public Layout$(MaxLayouts, 2) 43 44Public TextureDir$, BulletDir$, GraphicsDir$, GalleryDir$, PhotosDir$ 45Public SOBitmapPath as String 46Public CurrentBullet$, CurrentPrev$, CurrentNext$, CurrentHome$, CurrentTop$ 47Public FileStr as String 48 49Public WebWiz_gWizardName$, WebWiz_gErrContentNotFound$, WebWiz_gErrStyleNotFound$ 50Public WebWiz_gErrMainTemplateError$, WebWiz_gErrWhileReloading$ 51Public WebWiz_gErrWhileLoadStyles$, WebWiz_gErrMsg$, WebWiz_gErrMainDocumentError$ 52 53Public ProgressBar as Object 54Public ProgressValue As Long 55Public oBaseDocument as Object 56Public oViewCursor as Object 57Public oViewSettings as Object 58Public NoArgs() as New com.sun.star.beans.PropertyValue 59 60Public oCursor as Object 61Public oBookmarks as Object 62Public oBookMark as Object 63 64Public oUcb as Object 65Public MainDialog as Object 66Public DialogModel as Object 67 68 69Sub Main 70Dim RetValue 71On Local Error Goto GlobalErrorHandler 72 BasicLibraries.LoadLibrary("Tools") 73 oUcb = createUnoService("com.sun.star.ucb.SimpleFileAccess") 74 oBaseDocument = StarDesktop.LoadComponentFromURL("private:factory/swriter/web", "_default", 0, NoArgs()) 75 oViewSettings = oBaseDocument.CurrentController.ViewSettings 76 oViewCursor = oBaseDocument.GetCurrentController.ViewCursor 77 CurWebPageIndex = -1 78 ProgressBar = oBaseDocument.GetCurrentController.GetFrame.CreateStatusIndicator 79 ProgressBar.Start("", 100) 80 SetProgressValue(2) 81 oBaseDocument.LockControllers 82 oViewSettings.ShowTableBoundaries = False 83 If Not GetWebWizardPaths() Then 84 Exit Sub 85 End If 86 LoadLanguage 87 SetProgressValue(10) 88 Layout() = getListBoxArrays(oUcb, "/cnt") 89 GetCurIndex(DialogModel, Layout(),2) 90 SetProgressValue(30) 91 oCursor = oBasedocument.Text.CreateTextCursor 92 oCursor.InsertDocumentfromURL(FileStr, NoArgs()) 93 SetProgressValue(50) 94 Style() = getListBoxArrays(oUcb, "/stl") 95 SetProgressValue(70) 96 LoadWebPageStyles(oBaseDocument) 97 SetProgressValue(90) 98 oBaseDocument.UnlockControllers 99 OpenWebDialog() 100 SetProgressValue(98) 101 SetProgressValue(0) 102 MainDialog.Model.ImagePreview.BackGroundColor = RGB(0, 60,126) 103 RetValue = MainDialog.Execute 104 Select Case RetValue 105 Case 0 106 MainDialog.Dispose() 107 DisposeDocument(oBaseDocument) 108 Case 1 109 EndDialog() 110 MainDialog.Dispose() 111 End Select 112GLOBALERRORHANDLER: 113 If Err <> 0 Then 114 MsgBox (WebWiz_gErrMsg$, 16, WebWiz_gWizardName$) 115 DisposeDocument(oBaseDocument) 116 RESUME EXITWIZARD 117EXITWIZARD: 118 End If 119End Sub 120 121 122Function SetProgressValue(iValue as Integer) 123 If iValue = 0 Then 124 ProgressBar.End 125 End If 126 ProgressValue = iValue 127 ProgressBar.Value = iValue 128End Function 129 130 131Sub ReloadCurrentDocument() 132Dim OldDocIndex as Integer 133On Local Error Goto ErrorOcurred 134 OldDocIndex = CurDocIndex 135 CurDocIndex = GetCurIndex(DialogModel.lbTemplate, Layout(), 2) 136 If OldDocIndex <> CurDocIndex Then 137 oBaseDocument.LockControllers 138 ToggleDialogControls(False) 139 oCursor = oBaseDocument.Text.CreateTextCursor() 140 oCursor.GotoStart(False) 141 oCursor.GotoEnd(True) 142 oCursor.SetAllPropertiesToDefault() 143 oCursor.InsertDocumentfromURL(FileStr, NoArgs()) 144 SetBulletAndGraphics 145 CheckControls(oBaseDocument.DrawPage) 146 ErrorOcurred: 147 If Err <> 0 Then 148 MsgBox(WebWiz_gErrWhileReloading$, 16, WebWiz_gWizardName$) 149 End If 150 oBaseDocument.UnlockControllers 151 oViewCursor.GotoStart(False) 152 ToggleDialogControls(True, "lbTemplate") 153 End If 154End Sub 155 156 157 158 159Sub LoadWebPageStyles(aEvent as Object, Optional bStartUp as Boolean) 160Dim OldWebPageIndex as Integer 161 OldWebPageIndex = CurWebPageIndex 162 If IsNull(DialogModel) Then 163 CurWebPageIndex = GetCurIndex(DialogModel, Style(), 8) 164 Else 165 CurWebPageIndex = GetCurIndex(DialogModel.lbStyles, Style(), 8) 166 End If 167 If OldWebPageIndex <> CurWebPageIndex Then 168 ToggleDialogControls(False) 169 oBaseDocument.LockControllers 170 bWithBackGraphic = LoadNewStyles(oBaseDocument, DialogModel, CurWebPageIndex, FileStr, Style(), TextureDir) 171 CurrentBullet$ = BulletDir + Style(CurWebPageIndex, 6) 172 CurrentPrev$ = GraphicsDir + Style(CurWebPageIndex, 2) 173 CurrentNext$ = GraphicsDir + Style(CurWebPageIndex, 3) 174 CurrentHome$ = GraphicsDir + Style(CurWebPageIndex, 4) 175 CurrentTop$ = GraphicsDir + Style(CurWebPageIndex, 5) 176 With oBaseDocument.DocumentProperties.UserDefinedProperties 177 .AutoPilotName1 = ExtractGraphicNames(CurWebPageIndex,2) 178 .AutoPilotName2 = ExtractGraphicNames(CurWebPageIndex, 4) 179 .AutoPilotBullet = Style(CurWebPageIndex, 6) 180 .AutoPilotBackground = Style(CurWebPageIndex, 7) 181 End With 182 SetBulletAndGraphics() 183 CheckControls(oBaseDocument.DrawPage) 184 oViewCursor.GotoStart(False) 185 oBaseDocument.UnlockControllers 186 ToggleDialogControls(True, "lbStyles") 187 End If 188End Sub 189 190 191Function ExtractGraphicNames(CurIndex as Integer, i as Integer) as String 192Dim FieldValue as String 193 FieldValue = GetFileNameWithoutExtension(Style(CurIndex, i)) 194 FieldValue = FieldValue & " " & GetFileNameWithoutExtension(Style(CurIndex, i+1)) 195 ExtractGraphicNames = FieldValue 196End Function 197 198 199Sub SetBulletAndGraphics 200 SetGraphic("Prev", CurrentPrev) 201 SetGraphic("Next", CurrentNext) 202 SetGraphic("Home", CurrentHome) 203 SetGraphic("Top", CurrentTop) 204 SetBulletGraphics(CurrentBullet) 205 SetGraphicsToOriginalSize() 206End Sub 207 208 209Sub SetGraphicsToOriginalSize() 210Dim oGraphics as Object 211Dim oGraphic as Object 212Dim i as Integer 213Dim aActSize as New com.sun.star.awt.Size 214 oGraphics = oBaseDocument.GraphicObjects 215 For i = 0 To oGraphics.Count-1 216 oGraphic = oGraphics.GetByIndex(i) 217 aActSize = oGraphic.ActualSize 218 If aActSize.Height > 0 And aActSize.Width > 0 Then 219 oGraphic.SetSize(aActSize) 220 End If 221 Next i 222End Sub 223 224 225Sub EndDialog() 226 If DialogModel.chkSaveasTemplate.State = 1 Then 227 ' Generating template? Set events later! 228 AttachBasicMacroToEvent(oBaseDocument,"OnNew", "WebWizard.HtmlAutoPilotBasic.SetEvent()") 229 ' Call the Store template dialog 230 DispatchSlot(5538) 231 AttachBasicMacroToEvent(oBaseDocument,"OnNew", "") 232 End If 233 SetEvent() 234End Sub 235 236 237Sub SetEvent() 238Dim oDocument as Object 239' This sub links the events OnSaveDone and OnSaveAsDone to the procedure 240' CopyGraphics. It is invoked when a document is created, either directly 241' from the AutoPilot or from a template. It is not possible to set these 242' links for the template created by the AutoPilot because then it is not 243' possible to modify the template. 244 BasicLibraries.LoadLibrary("Tools") 245 oDocument = ThisComponent 246 AttachBasicMacroToEvent(oDocument,"OnSaveDone", "WebWizard.HtmlAutoPilotBasic.CopyGraphics()") 247 AttachBasicMacroToEvent(oDocument,"OnSaveAsDone", "WebWizard.HtmlAutoPilotBasic.CopyGraphics()") 248End Sub 249 250 251 252Sub CopyGraphics 253' This sub copies all the graphics used in the document to the same directory the 254' document has been copied into and changes the graphics links in the document. 255Dim oGraphicObjects as Object 256Dim oGraphic as Object 257Dim i as Integer 258Dim udProps as Object 259Dim SavePath as String 260 BasicLibraries.LoadLibrary("Tools") 261 oUcb = createUnoService("com.sun.star.ucb.SimpleFileAccess") 262 GetWebWizardPaths() 263 oBaseDocument = ThisComponent 264' oBaseDocument.LockControllers() 265 266 ' Note: The sub DirectoryNameoutofPath should be change, so that the last character is a slash 267 SavePath = DirectoryNameoutofPath(oBaseDocument.Url, "/") & "/" 268 269 oGraphicObjects = oBaseDocument.GraphicObjects 270 For i = 0 to oGraphicObjects.Count-1 271 oGraphic = oGraphicObjects.GetbyIndex(i) 272 oGraphic.GraphicUrl = CopyFile(oGraphic.GraphicURL, SavePath) 273 Next i 274 275 ChangeBackGraphicUrl(SavePath) 276 277 BulletUrlsToSavePath(SavePath) 278 279 udProps = oBaseDocument.DocumentProperties.UserDefinedProperties 280 udProps.addProperty("AutoPilotName1", 0, "") 281 udProps.addProperty("AutoPilotName2", 0, "") 282 udProps.addProperty("AutoPilotBullet", 0, "") 283 udProps.addProperty("AutoPilotBackground", 0, "") 284 285 AttachBasicMacroToEvent(oBaseDocument,"OnSaveDone", "") 286 AttachBasicMacroToEvent(oBaseDocument,"OnSaveAsDone", "") 287 AttachBasicMacroToEvent(oBaseDocument,"OnNew", "") 288 oBaseDocument.Store 289' oBaseDocument.UnlockControllers() 290End Sub 291 292 293Function CopyFile(ByVal SourceUrl as String, TargetDir as String) 294Dim sFileName as String 295Dim sNewFileUrl as String 296 If oUcb.Exists(TargetDir) Then 297 If Len(TargetDir) > 2 Then 298 sFileName = FileNameoutofPath(SourceUrl) 299 sNewFileUrl = TargetDir & sFileName 300 oUcb.Copy(SourceUrl, sNewFileUrl) 301 CopyFile() = sNewFileUrl 302 End If 303 End If 304End Function 305 306 307Function getListBoxArrays(oUcb as Object, sFileFilter as String) 308Dim oDocProps as Object 309Dim oListboxControl as Object 310Dim Description as String 311Dim sField as String 312Dim sFieldList() as String 313Dim bItemFound as Boolean 314Dim MaxIndex as Integer 315Dim DirContent() as String 316Dim FileName as String 317Dim TemplatePath as String 318Dim FilterLen as Integer 319Dim i as Integer 320Dim m as Integer 321Dim n as Integer 322Dim s as Integer 323Dim a as Integer 324Dim LocMaxIndex as Integer 325Dim Properties() 326Dim DimCount as Integer 327Dim sExtension as String 328 oDocProps = CreateUnoService("com.sun.star.document.DocumentProperties") 329 FilterLen = Len(sFileFilter) 330 bItemFound = False 331 ' It has to be made sure that the TemplatePath <> "" 332 TemplatePath = GetOfficeSubPath("Template", "wizard/web/") 333 If TemplatePath = "" Then 334 Dim NullList() 335 getListBoxArrays() = NullList() 336 Exit Function 337 End If 338 DirContent() = oUcb.GetFolderContents(TemplatePath,True) 339 If sFileFilter = "/cnt" Then 340 DimCount = 2 341 Else 342 DimCount = 8 343 End If 344 LocMaxIndex = Ubound(DirContent()) 345 Dim List(LocMaxIndex, DimCount) as String 346 Dim SortList(LocMaxIndex,1) 347 For i = 0 to LocMaxIndex 348 SortList(i,0) = DirContent(i) 349 SortList(i,1) = RetrieveDocTitle(oDocProps, DirContent(i)) 350 Next i 351 SortList() = BubbleSortList(SortList(),True) 352 For i = 0 to LocMaxIndex 353 DirContent(i) = SortList(i,0) 354 Next i 355 a = 0 356 For i = 0 To LocMaxIndex 357 FileName = DirContent(i) 358 sExtension = Ucase(GetFileNameExtension(FileName)) 359 If Instr(1,Filename, sFileFilter) And sExtension = "STW" Then 360 bItemFound = True 361 Description = RetrieveDocTitle(oDocProps, FileName) 362 Properties = oDocProps.UserDefinedProperties.PropertyValues 363 List(a,1) = Description 364 If sFileFilter = "/cnt" Then 365 List(a,2) = Filename 366 Else 367 m = 2 368 For n = 0 To 3 369 sField = Properties(n).Value 370 sFieldList() = ArrayoutofString(sField, " ", MaxIndex) 371 For s = 0 To MaxIndex 372 If m < 6 Then 373 List(a,m) = sFieldList(s) & ".gif" 374 Else 375 List(a,m) = sFieldList(s) 376 End If 377 m = m + 1 378 Next s 379 Next n 380 List(a,8) = FileName 381 End If 382 a = a + 1 383 End If 384 Next i 385 If sFileFilter = "/cnt" Then 386 ReDim Preserve List(a-1,2) as String 387 Else 388 ReDim Preserve List(a-1,8) as String 389 End If 390 If Not bItemfound Then 391 MsgBox(WebWiz_gErrContentNotFound$, 16, WebWiz_gWizardName$) 392 DisposeDocument(oBaseDocument) 393 Stop 394 End If 395 getListBoxArrays = List() 396End Function 397 398 399Sub SetGraphic(sWhich, sGraphicText as String) 400Dim oLocCursor as Object 401Dim oGraphic as Object 402Dim bGetGraphic as Boolean 403 oBookmarks = oBaseDocument.BookMarks 404 If oBookmarks.HasbyName(sWhich)Then 405 oBookMark = oBookmarks.GetbyName(sWhich) 406 oLocCursor = oBookMark.Anchor.Text.CreateTextCursorByRange(oBookMark.Anchor) 407 oGraphic = oBaseDocument.CreateInstance("com.sun.star.text.GraphicObject") 408 oLocCursor.GoRight(3,True) 409 oGraphic.AnchorType = 1 410 oGraphic.GraphicURL = ConverttoURL(sGraphicText) 411 oLocCursor.Text.InsertTextContent(oLocCursor, oGraphic, True) 412 oGraphic.Name = sWhich 413 ElseIf oBaseDocument.GraphicObjects.HasbyName(sWhich) Then 414 oGraphic = oBaseDocument.GraphicObjects.GetByName(sWhich) 415 oGraphic.GraphicUrl = sGraphicText 416 End If 417End Sub 418 419 420Sub CheckControls(oDrawPage as Object) 421Dim aForm as Object 422Dim m,n as integer 423Dim lColor as Long 424Dim oControl as Object 425 lColor = oBaseDocument.StyleFamilies.GetbyName("ParagraphStyles").GetByName("Standard").CharColor 426 'SearchFor all possible Controls 427 For n = 0 to oDrawPage.Forms.Count - 1 428 aForm = oDrawPage.Forms(n) 429 For m = 0 to aForm.Count-1 430 oControl = aForm.GetbyIndex(m) 431 oControl.TextColor = lColor 432 Next 433 Next 434End Sub 435 436 437Sub RepaintHeaderPreview() 438Dim Bitmap As Object 439Dim sBitmapPath as String 440 sBitmapPath = SOBitmapPath & "webwizard.png" 441 WebWzrd.ImagePreview.ImageURL = sBitmapPath 442End Sub 443 444 445Sub ToggleDialogControls(ByVal bDoEnable as Boolean, Optional FocusControlName as String) 446 If Not IsNull(DialogModel) Then 447 DialogModel.Enabled = bDoEnable 448 If bDoEnable Then 449 ' Enable Controls referring to Background graphic only when this Property is set 450 bDoEnable = bWithBackGraphic 451 ToggleOptionButtons(DialogModel, bDoEnable) 452 MainDialog.GetControl(FocusControlName).SetFocus() 453 End If 454 End If 455End Sub 456</script:module> 457