1*b1cdbd2cSJim Jagielski<?xml version="1.0" encoding="UTF-8"?> 2*b1cdbd2cSJim Jagielski<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd"> 3*b1cdbd2cSJim Jagielski<!--*********************************************************** 4*b1cdbd2cSJim Jagielski * 5*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 6*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 7*b1cdbd2cSJim Jagielski * distributed with this work for additional information 8*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 9*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 10*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 11*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 14*b1cdbd2cSJim Jagielski * 15*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 16*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 17*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 18*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 19*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 20*b1cdbd2cSJim Jagielski * under the License. 21*b1cdbd2cSJim Jagielski * 22*b1cdbd2cSJim Jagielski ***********************************************************--> 23*b1cdbd2cSJim Jagielski<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Helpers" script:language="StarBasic">' *** MODULE HELPERS *** 24*b1cdbd2cSJim Jagielski 25*b1cdbd2cSJim Jagielski'======================================================= 26*b1cdbd2cSJim Jagielski' Main 27*b1cdbd2cSJim Jagielski'------------------------------------------------------- 28*b1cdbd2cSJim Jagielski' Ensure that necessary library functions are available 29*b1cdbd2cSJim Jagielski'======================================================= 30*b1cdbd2cSJim JagielskiSub Main 31*b1cdbd2cSJim Jagielski GlobalScope.BasicLibraries.loadLibrary("Tools") 32*b1cdbd2cSJim JagielskiEnd Sub 33*b1cdbd2cSJim Jagielski 34*b1cdbd2cSJim Jagielski'======================================================= 35*b1cdbd2cSJim Jagielski' ShowProp 36*b1cdbd2cSJim Jagielski'------------------------------------------------------- 37*b1cdbd2cSJim Jagielski' Displays a dialog that shows the properties and 38*b1cdbd2cSJim Jagielski' the methods of an object. Used for debugging. 39*b1cdbd2cSJim Jagielski'======================================================= 40*b1cdbd2cSJim JagielskiSub ShowProp(Elem As Object) 41*b1cdbd2cSJim Jagielski dim oDialog As Object 42*b1cdbd2cSJim Jagielski 43*b1cdbd2cSJim Jagielski BasicLibraries.LoadLibrary("HelpAuthoring") 44*b1cdbd2cSJim Jagielski oDialog = LoadDialog("HelpAuthoring", "dlgObjProp") 45*b1cdbd2cSJim Jagielski oDialogModel = oDialog.Model 46*b1cdbd2cSJim Jagielski 47*b1cdbd2cSJim Jagielski oTxtProp = oDialog.GetControl("txtProp") 48*b1cdbd2cSJim Jagielski oTxtProp.Text = Join(Split(Elem.dbg_properties,";"),chr(13)) 49*b1cdbd2cSJim Jagielski 50*b1cdbd2cSJim Jagielski oTxtMeth = oDialog.GetControl("txtMeth") 51*b1cdbd2cSJim Jagielski oTxtMeth.Text = Join(Split(Elem.dbg_methods,";"),chr(13)) 52*b1cdbd2cSJim Jagielski 53*b1cdbd2cSJim Jagielski oTxtInt = oDialog.GetControl("txtInt") 54*b1cdbd2cSJim Jagielski oTxtInt.Text = Join(Split(Elem.dbg_supportedInterfaces,";"),chr(13)) 55*b1cdbd2cSJim Jagielski 56*b1cdbd2cSJim Jagielski oDialog.Execute() 57*b1cdbd2cSJim Jagielski oDialog.dispose 58*b1cdbd2cSJim JagielskiEnd Sub 59*b1cdbd2cSJim Jagielski 60*b1cdbd2cSJim Jagielski'======================================================= 61*b1cdbd2cSJim Jagielski' AlphaNum 62*b1cdbd2cSJim Jagielski'------------------------------------------------------- 63*b1cdbd2cSJim Jagielski' Removes all invalid characters from a string 64*b1cdbd2cSJim Jagielski'======================================================= 65*b1cdbd2cSJim JagielskiFunction AlphaNum(Strg As String) 66*b1cdbd2cSJim Jagielski dim OutStrg As String 67*b1cdbd2cSJim Jagielski dim sValid As String 68*b1cdbd2cSJim Jagielski 69*b1cdbd2cSJim Jagielski sValid = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789" 70*b1cdbd2cSJim Jagielski 71*b1cdbd2cSJim Jagielski For i=1 to Len(Strg) 72*b1cdbd2cSJim Jagielski If (Instr(sValid,LCase(Mid(Strg,i,1)))) Then 73*b1cdbd2cSJim Jagielski OutStrg = OutStrg + Mid(Strg,i,1) 74*b1cdbd2cSJim Jagielski End If 75*b1cdbd2cSJim Jagielski Next i 76*b1cdbd2cSJim Jagielski AlphaNum = OutStrg 77*b1cdbd2cSJim JagielskiEnd Function 78*b1cdbd2cSJim Jagielski 79*b1cdbd2cSJim Jagielski'======================================================= 80*b1cdbd2cSJim Jagielski' Replace 81*b1cdbd2cSJim Jagielski'------------------------------------------------------- 82*b1cdbd2cSJim Jagielski' Replaces a character with another character in a string 83*b1cdbd2cSJim Jagielski'======================================================= 84*b1cdbd2cSJim JagielskiFunction Replace(txt As String, ReplaceFrom As String, ReplaceTo As String) 85*b1cdbd2cSJim Jagielski dim OutStr As String 86*b1cdbd2cSJim Jagielski For i=1 to len(txt) 87*b1cdbd2cSJim Jagielski If LCase(mid(txt,i,1))=ReplaceFrom Then 88*b1cdbd2cSJim Jagielski OutStr = OutStr + ReplaceTo 89*b1cdbd2cSJim Jagielski Else 90*b1cdbd2cSJim Jagielski OutStr = OutStr + mid(txt,i,1) 91*b1cdbd2cSJim Jagielski End If 92*b1cdbd2cSJim Jagielski Next i 93*b1cdbd2cSJim Jagielski Replace = OutStr 94*b1cdbd2cSJim JagielskiEnd Function 95*b1cdbd2cSJim Jagielski 96*b1cdbd2cSJim Jagielski 97*b1cdbd2cSJim Jagielski'======================================================= 98*b1cdbd2cSJim Jagielski' ReplaceAll 99*b1cdbd2cSJim Jagielski'------------------------------------------------------- 100*b1cdbd2cSJim Jagielski' Replaces a character with another character in a string 101*b1cdbd2cSJim Jagielski'======================================================= 102*b1cdbd2cSJim JagielskiFunction ReplaceAll(txt As String, ReplaceFrom As String, ReplaceTo As String) 103*b1cdbd2cSJim Jagielski dim OutStr As String 104*b1cdbd2cSJim Jagielski For i=1 to len(txt) 105*b1cdbd2cSJim Jagielski bFound = 0 106*b1cdbd2cSJim Jagielski For j=1 to len(ReplaceFrom) 107*b1cdbd2cSJim Jagielski If LCase(mid(txt,i,1))=LCase(mid(ReplaceFrom,j,1)) Then 108*b1cdbd2cSJim Jagielski bFound = 1 109*b1cdbd2cSJim Jagielski OutStr = OutStr + ReplaceTo 110*b1cdbd2cSJim Jagielski j = len(ReplaceFrom) 111*b1cdbd2cSJim Jagielski End If 112*b1cdbd2cSJim Jagielski Next j 113*b1cdbd2cSJim Jagielski If bFound=0 Then 114*b1cdbd2cSJim Jagielski OutStr = OutStr + mid(txt,i,1) 115*b1cdbd2cSJim Jagielski End If 116*b1cdbd2cSJim Jagielski Next i 117*b1cdbd2cSJim Jagielski ReplaceAll = OutStr 118*b1cdbd2cSJim JagielskiEnd Function 119*b1cdbd2cSJim Jagielski 120*b1cdbd2cSJim Jagielski 121*b1cdbd2cSJim Jagielski 122*b1cdbd2cSJim Jagielski'======================================================= 123*b1cdbd2cSJim Jagielski' CreateID 124*b1cdbd2cSJim Jagielski'------------------------------------------------------- 125*b1cdbd2cSJim Jagielski' Creates a numerical randomized ID 126*b1cdbd2cSJim Jagielski'======================================================= 127*b1cdbd2cSJim JagielskiFunction CreateID 128*b1cdbd2cSJim Jagielski sDate = ReplaceAll(Date,"/:. \","") 129*b1cdbd2cSJim Jagielski sTime = ReplaceAll(Time,"/:. \AMP","") 130*b1cdbd2cSJim Jagielski Randomize 131*b1cdbd2cSJim Jagielski CreateID = sDate + sTime + Int(Rnd * 100) 132*b1cdbd2cSJim JagielskiEnd Function 133*b1cdbd2cSJim Jagielski 134*b1cdbd2cSJim Jagielski'======================================================= 135*b1cdbd2cSJim Jagielski' InsertTag 136*b1cdbd2cSJim Jagielski'------------------------------------------------------- 137*b1cdbd2cSJim Jagielski' Inserts an inline tag (element) in the document at the 138*b1cdbd2cSJim Jagielski' current cursor position. It also sets the character 139*b1cdbd2cSJim Jagielski' format to hlp_aux_tag 140*b1cdbd2cSJim Jagielski'======================================================= 141*b1cdbd2cSJim JagielskiSub InsertTag (Element As String, Content As String) 142*b1cdbd2cSJim Jagielski dim document as object 143*b1cdbd2cSJim Jagielski dim dispatcher as object 144*b1cdbd2cSJim Jagielski 145*b1cdbd2cSJim Jagielski document = ThisComponent.CurrentController.Frame 146*b1cdbd2cSJim Jagielski dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") 147*b1cdbd2cSJim Jagielski 148*b1cdbd2cSJim Jagielski dim args(5) as new com.sun.star.beans.PropertyValue 149*b1cdbd2cSJim Jagielski args(0).Name = "Type" 150*b1cdbd2cSJim Jagielski args(0).Value = 8 151*b1cdbd2cSJim Jagielski args(1).Name = "SubType" 152*b1cdbd2cSJim Jagielski args(1).Value = 1 153*b1cdbd2cSJim Jagielski args(2).Name = "Name" 154*b1cdbd2cSJim Jagielski args(2).Value = Element 155*b1cdbd2cSJim Jagielski args(3).Name = "Content" 156*b1cdbd2cSJim Jagielski args(3).Value = Content 157*b1cdbd2cSJim Jagielski args(4).Name = "Format" 158*b1cdbd2cSJim Jagielski args(4).Value = -1 159*b1cdbd2cSJim Jagielski args(5).Name = "Separator" 160*b1cdbd2cSJim Jagielski args(5).Value = " " 161*b1cdbd2cSJim Jagielski SetCharStyle("hlp_aux_tag") 162*b1cdbd2cSJim Jagielski dispatcher.executeDispatch(document, ".uno:InsertField", "", 0, args()) 163*b1cdbd2cSJim Jagielski SetCharStyle("Default") 164*b1cdbd2cSJim JagielskiEnd Sub 165*b1cdbd2cSJim Jagielski 166*b1cdbd2cSJim Jagielski'======================================================= 167*b1cdbd2cSJim Jagielski' INSERTTAGCR 168*b1cdbd2cSJim Jagielski'------------------------------------------------------- 169*b1cdbd2cSJim Jagielski' Inserts a tag (element) in the document at the 170*b1cdbd2cSJim Jagielski' current cursor position in its own newly created paragraph. 171*b1cdbd2cSJim Jagielski' It also sets the character format to hlp_aux_tag and 172*b1cdbd2cSJim Jagielski' the paragraph to the specified value (should start with hlp_) 173*b1cdbd2cSJim Jagielski'======================================================= 174*b1cdbd2cSJim JagielskiSub InsertTagCR (Element As String, Content As String, Style As String) 175*b1cdbd2cSJim Jagielski dim document as object 176*b1cdbd2cSJim Jagielski dim dispatcher as object 177*b1cdbd2cSJim Jagielski 178*b1cdbd2cSJim Jagielski document = ThisComponent.CurrentController.Frame 179*b1cdbd2cSJim Jagielski dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") 180*b1cdbd2cSJim Jagielski 181*b1cdbd2cSJim Jagielski dim args(5) as new com.sun.star.beans.PropertyValue 182*b1cdbd2cSJim Jagielski args(0).Name = "Type" 183*b1cdbd2cSJim Jagielski args(0).Value = 8 184*b1cdbd2cSJim Jagielski args(1).Name = "SubType" 185*b1cdbd2cSJim Jagielski args(1).Value = 1 186*b1cdbd2cSJim Jagielski args(2).Name = "Name" 187*b1cdbd2cSJim Jagielski args(2).Value = Element 188*b1cdbd2cSJim Jagielski args(3).Name = "Content" 189*b1cdbd2cSJim Jagielski args(3).Value = Content 190*b1cdbd2cSJim Jagielski args(4).Name = "Format" 191*b1cdbd2cSJim Jagielski args(4).Value = -1 192*b1cdbd2cSJim Jagielski args(5).Name = "Separator" 193*b1cdbd2cSJim Jagielski args(5).Value = " " 194*b1cdbd2cSJim Jagielski 195*b1cdbd2cSJim Jagielski CR 196*b1cdbd2cSJim Jagielski goUp(1) 197*b1cdbd2cSJim Jagielski SetParaStyle(Style) 198*b1cdbd2cSJim Jagielski SetCharStyle("hlp_aux_tag") 199*b1cdbd2cSJim Jagielski dispatcher.executeDispatch(document, ".uno:InsertField", "", 0, args()) 200*b1cdbd2cSJim Jagielski SetCharStyle("Default") 201*b1cdbd2cSJim Jagielski goDown(1) 202*b1cdbd2cSJim JagielskiEnd Sub 203*b1cdbd2cSJim Jagielski 204*b1cdbd2cSJim Jagielski'======================================================= 205*b1cdbd2cSJim Jagielski' InsertField 206*b1cdbd2cSJim Jagielski'------------------------------------------------------- 207*b1cdbd2cSJim Jagielski' Inserts a field in the document at the 208*b1cdbd2cSJim Jagielski' current cursor position. 209*b1cdbd2cSJim Jagielski'======================================================= 210*b1cdbd2cSJim JagielskiSub InsertField(Field as String, Content as String) 211*b1cdbd2cSJim Jagielski dim document as object 212*b1cdbd2cSJim Jagielski dim dispatcher as object 213*b1cdbd2cSJim Jagielski 214*b1cdbd2cSJim Jagielski document = ThisComponent.CurrentController.Frame 215*b1cdbd2cSJim Jagielski dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") 216*b1cdbd2cSJim Jagielski 217*b1cdbd2cSJim Jagielski dim args(5) as new com.sun.star.beans.PropertyValue 218*b1cdbd2cSJim Jagielski args(0).Name = "Type" 219*b1cdbd2cSJim Jagielski args(0).Value = 8 220*b1cdbd2cSJim Jagielski args(1).Name = "SubType" 221*b1cdbd2cSJim Jagielski args(1).Value = 1 222*b1cdbd2cSJim Jagielski args(2).Name = "Name" 223*b1cdbd2cSJim Jagielski args(2).Value = Field 224*b1cdbd2cSJim Jagielski args(3).Name = "Content" 225*b1cdbd2cSJim Jagielski args(3).Value = Content 226*b1cdbd2cSJim Jagielski args(4).Name = "Format" 227*b1cdbd2cSJim Jagielski args(4).Value = -1 228*b1cdbd2cSJim Jagielski args(5).Name = "Separator" 229*b1cdbd2cSJim Jagielski args(5).Value = " " 230*b1cdbd2cSJim Jagielski 231*b1cdbd2cSJim Jagielski dispatcher.executeDispatch(document, ".uno:InsertField", "", 0, args()) 232*b1cdbd2cSJim JagielskiEnd Sub 233*b1cdbd2cSJim Jagielski 234*b1cdbd2cSJim Jagielski'======================================================= 235*b1cdbd2cSJim Jagielski' GoUp 236*b1cdbd2cSJim Jagielski'------------------------------------------------------- 237*b1cdbd2cSJim Jagielski' Simulates the CursorUp key 238*b1cdbd2cSJim Jagielski'======================================================= 239*b1cdbd2cSJim JagielskiSub goUp(Count As Integer, Optional bSelect As Boolean) 240*b1cdbd2cSJim Jagielski dim document as object 241*b1cdbd2cSJim Jagielski dim dispatcher as object 242*b1cdbd2cSJim Jagielski 243*b1cdbd2cSJim Jagielski document = ThisComponent.CurrentController.Frame 244*b1cdbd2cSJim Jagielski dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") 245*b1cdbd2cSJim Jagielski 246*b1cdbd2cSJim Jagielski dim args(1) as new com.sun.star.beans.PropertyValue 247*b1cdbd2cSJim Jagielski args(0).Name = "Count" 248*b1cdbd2cSJim Jagielski args(0).Value = Count 249*b1cdbd2cSJim Jagielski args(1).Name = "Select" 250*b1cdbd2cSJim Jagielski If IsMissing(bSelect) Then 251*b1cdbd2cSJim Jagielski args(1).Value = false 252*b1cdbd2cSJim Jagielski Else 253*b1cdbd2cSJim Jagielski args(1).Value = bSelect 254*b1cdbd2cSJim Jagielski End If 255*b1cdbd2cSJim Jagielski 256*b1cdbd2cSJim Jagielski dispatcher.executeDispatch(document, ".uno:GoUp", "", 0, args()) 257*b1cdbd2cSJim JagielskiEnd Sub 258*b1cdbd2cSJim Jagielski 259*b1cdbd2cSJim Jagielski'======================================================= 260*b1cdbd2cSJim Jagielski' GoDown 261*b1cdbd2cSJim Jagielski'------------------------------------------------------- 262*b1cdbd2cSJim Jagielski' Simulates the CursorDown key 263*b1cdbd2cSJim Jagielski'======================================================= 264*b1cdbd2cSJim JagielskiSub goDown(Count As Integer, Optional bSelect As Boolean) 265*b1cdbd2cSJim Jagielski dim document as object 266*b1cdbd2cSJim Jagielski dim dispatcher as object 267*b1cdbd2cSJim Jagielski 268*b1cdbd2cSJim Jagielski document = ThisComponent.CurrentController.Frame 269*b1cdbd2cSJim Jagielski dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") 270*b1cdbd2cSJim Jagielski 271*b1cdbd2cSJim Jagielski dim args(1) as new com.sun.star.beans.PropertyValue 272*b1cdbd2cSJim Jagielski args(0).Name = "Count" 273*b1cdbd2cSJim Jagielski args(0).Value = Count 274*b1cdbd2cSJim Jagielski args(1).Name = "Select" 275*b1cdbd2cSJim Jagielski If IsMissing(bSelect) Then 276*b1cdbd2cSJim Jagielski args(1).Value = false 277*b1cdbd2cSJim Jagielski Else 278*b1cdbd2cSJim Jagielski args(1).Value = bSelect 279*b1cdbd2cSJim Jagielski End If 280*b1cdbd2cSJim Jagielski 281*b1cdbd2cSJim Jagielski dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args()) 282*b1cdbd2cSJim JagielskiEnd Sub 283*b1cdbd2cSJim Jagielski 284*b1cdbd2cSJim Jagielski 285*b1cdbd2cSJim Jagielski'======================================================= 286*b1cdbd2cSJim Jagielski' GoRight 287*b1cdbd2cSJim Jagielski'------------------------------------------------------- 288*b1cdbd2cSJim Jagielski' Simulates the CursorRight key 289*b1cdbd2cSJim Jagielski'======================================================= 290*b1cdbd2cSJim JagielskiSub goRight(Count As Integer, Optional bSelect As Boolean) 291*b1cdbd2cSJim Jagielski dim document as object 292*b1cdbd2cSJim Jagielski dim dispatcher as object 293*b1cdbd2cSJim Jagielski 294*b1cdbd2cSJim Jagielski document = ThisComponent.CurrentController.Frame 295*b1cdbd2cSJim Jagielski dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") 296*b1cdbd2cSJim Jagielski 297*b1cdbd2cSJim Jagielski dim args(1) as new com.sun.star.beans.PropertyValue 298*b1cdbd2cSJim Jagielski args(0).Name = "Count" 299*b1cdbd2cSJim Jagielski args(0).Value = Count 300*b1cdbd2cSJim Jagielski args(1).Name = "Select" 301*b1cdbd2cSJim Jagielski If IsMissing(bSelect) Then 302*b1cdbd2cSJim Jagielski args(1).Value = false 303*b1cdbd2cSJim Jagielski Else 304*b1cdbd2cSJim Jagielski args(1).Value = bSelect 305*b1cdbd2cSJim Jagielski End If 306*b1cdbd2cSJim Jagielski 307*b1cdbd2cSJim Jagielski dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, args()) 308*b1cdbd2cSJim JagielskiEnd Sub 309*b1cdbd2cSJim Jagielski 310*b1cdbd2cSJim Jagielski'======================================================= 311*b1cdbd2cSJim Jagielski' GoLeft 312*b1cdbd2cSJim Jagielski'------------------------------------------------------- 313*b1cdbd2cSJim Jagielski' Simulates the CursorLeft key 314*b1cdbd2cSJim Jagielski'======================================================= 315*b1cdbd2cSJim JagielskiSub goLeft(Count As Integer, optional bSelect As boolean) 316*b1cdbd2cSJim Jagielski dim document as object 317*b1cdbd2cSJim Jagielski dim dispatcher as object 318*b1cdbd2cSJim Jagielski 319*b1cdbd2cSJim Jagielski document = ThisComponent.CurrentController.Frame 320*b1cdbd2cSJim Jagielski dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") 321*b1cdbd2cSJim Jagielski 322*b1cdbd2cSJim Jagielski dim args(1) as new com.sun.star.beans.PropertyValue 323*b1cdbd2cSJim Jagielski args(0).Name = "Count" 324*b1cdbd2cSJim Jagielski args(0).Value = Count 325*b1cdbd2cSJim Jagielski args(1).Name = "Select" 326*b1cdbd2cSJim Jagielski If IsMissing(bSelect) Then 327*b1cdbd2cSJim Jagielski args(1).Value = false 328*b1cdbd2cSJim Jagielski Else 329*b1cdbd2cSJim Jagielski args(1).Value = bSelect 330*b1cdbd2cSJim Jagielski End If 331*b1cdbd2cSJim Jagielski 332*b1cdbd2cSJim Jagielski dispatcher.executeDispatch(document, ".uno:GoLeft", "", 0, args()) 333*b1cdbd2cSJim JagielskiEnd Sub 334*b1cdbd2cSJim Jagielski 335*b1cdbd2cSJim Jagielski'======================================================= 336*b1cdbd2cSJim Jagielski' CR 337*b1cdbd2cSJim Jagielski'------------------------------------------------------- 338*b1cdbd2cSJim Jagielski' Inserts a Carriage Return (a new paragraph) 339*b1cdbd2cSJim Jagielski'======================================================= 340*b1cdbd2cSJim JagielskiSub CR 341*b1cdbd2cSJim Jagielski dim document as object 342*b1cdbd2cSJim Jagielski dim dispatcher as object 343*b1cdbd2cSJim Jagielski 344*b1cdbd2cSJim Jagielski document = ThisComponent.CurrentController.Frame 345*b1cdbd2cSJim Jagielski dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") 346*b1cdbd2cSJim Jagielski 347*b1cdbd2cSJim Jagielski oSel = thiscomponent.getcurrentcontroller.getselection 348*b1cdbd2cSJim Jagielski oCur = oSel(0).getText.createTextCursorByRange(oSel(0)) 349*b1cdbd2cSJim Jagielski oCur.gotoEndOfParagraph(0) 350*b1cdbd2cSJim Jagielski thiscomponent.getcurrentcontroller.select(oCur) 351*b1cdbd2cSJim Jagielski 352*b1cdbd2cSJim Jagielski dispatcher.executeDispatch(document, ".uno:InsertPara", "", 0, Array()) 353*b1cdbd2cSJim JagielskiEnd Sub 354*b1cdbd2cSJim Jagielski 355*b1cdbd2cSJim Jagielski'======================================================= 356*b1cdbd2cSJim Jagielski' CR_before 357*b1cdbd2cSJim Jagielski'------------------------------------------------------- 358*b1cdbd2cSJim Jagielski' Inserts a Carriage Return (a new paragraph) before the current para 359*b1cdbd2cSJim Jagielski'======================================================= 360*b1cdbd2cSJim JagielskiSub CR_before 361*b1cdbd2cSJim Jagielski dim document as object 362*b1cdbd2cSJim Jagielski dim dispatcher as object 363*b1cdbd2cSJim Jagielski 364*b1cdbd2cSJim Jagielski document = ThisComponent.CurrentController.Frame 365*b1cdbd2cSJim Jagielski dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") 366*b1cdbd2cSJim Jagielski 367*b1cdbd2cSJim Jagielski oSel = thiscomponent.getcurrentcontroller.getselection 368*b1cdbd2cSJim Jagielski oCur = oSel(0).getText.createTextCursorByRange(oSel(0)) 369*b1cdbd2cSJim Jagielski oCur.gotoStartOfParagraph(0) 370*b1cdbd2cSJim Jagielski thiscomponent.getcurrentcontroller.select(oCur) 371*b1cdbd2cSJim Jagielski 372*b1cdbd2cSJim Jagielski dispatcher.executeDispatch(document, ".uno:InsertPara", "", 0, Array()) 373*b1cdbd2cSJim JagielskiEnd Sub 374*b1cdbd2cSJim Jagielski 375*b1cdbd2cSJim Jagielski'======================================================= 376*b1cdbd2cSJim Jagielski' LF 377*b1cdbd2cSJim Jagielski'------------------------------------------------------- 378*b1cdbd2cSJim Jagielski' Inserts a line feed (manual line break) 379*b1cdbd2cSJim Jagielski'======================================================= 380*b1cdbd2cSJim Jagielskisub LF 381*b1cdbd2cSJim Jagielski dim document as object 382*b1cdbd2cSJim Jagielski dim dispatcher as object 383*b1cdbd2cSJim Jagielski document = ThisComponent.CurrentController.Frame 384*b1cdbd2cSJim Jagielski dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") 385*b1cdbd2cSJim Jagielski 386*b1cdbd2cSJim Jagielski dispatcher.executeDispatch(document, ".uno:InsertLinebreak", "", 0, Array()) 387*b1cdbd2cSJim Jagielskiend sub 388*b1cdbd2cSJim Jagielski 389*b1cdbd2cSJim Jagielski'======================================================= 390*b1cdbd2cSJim Jagielski' SetParaStyle 391*b1cdbd2cSJim Jagielski'------------------------------------------------------- 392*b1cdbd2cSJim Jagielski' Sets the para style to the given value 393*b1cdbd2cSJim Jagielski'======================================================= 394*b1cdbd2cSJim JagielskiSub SetParaStyle(StyleName As String) 395*b1cdbd2cSJim Jagielski dim document as object 396*b1cdbd2cSJim Jagielski dim dispatcher as object 397*b1cdbd2cSJim Jagielski 398*b1cdbd2cSJim Jagielski document = ThisComponent.CurrentController.Frame 399*b1cdbd2cSJim Jagielski dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") 400*b1cdbd2cSJim Jagielski 401*b1cdbd2cSJim Jagielski dim args(1) as new com.sun.star.beans.PropertyValue 402*b1cdbd2cSJim Jagielski args(0).Name = "Template" 403*b1cdbd2cSJim Jagielski args(0).Value = StyleName 404*b1cdbd2cSJim Jagielski args(1).Name = "Family" 405*b1cdbd2cSJim Jagielski args(1).Value = 2 406*b1cdbd2cSJim Jagielski 407*b1cdbd2cSJim Jagielski dispatcher.executeDispatch(document, ".uno:StyleApply", "", 0, args()) 408*b1cdbd2cSJim Jagielskiend Sub 409*b1cdbd2cSJim Jagielski 410*b1cdbd2cSJim Jagielski'======================================================= 411*b1cdbd2cSJim Jagielski' SetCharStyle 412*b1cdbd2cSJim Jagielski'------------------------------------------------------- 413*b1cdbd2cSJim Jagielski' Sets the character style to the given value 414*b1cdbd2cSJim Jagielski'======================================================= 415*b1cdbd2cSJim JagielskiSub SetCharStyle(StyleName As String) 416*b1cdbd2cSJim Jagielski dim document as object 417*b1cdbd2cSJim Jagielski dim dispatcher as object 418*b1cdbd2cSJim Jagielski 419*b1cdbd2cSJim Jagielski document = ThisComponent.CurrentController.Frame 420*b1cdbd2cSJim Jagielski dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") 421*b1cdbd2cSJim Jagielski 422*b1cdbd2cSJim Jagielski dim args(1) as new com.sun.star.beans.PropertyValue 423*b1cdbd2cSJim Jagielski args(0).Name = "Template" 424*b1cdbd2cSJim Jagielski args(0).Value = StyleName 425*b1cdbd2cSJim Jagielski args(1).Name = "Family" 426*b1cdbd2cSJim Jagielski args(1).Value = 1 427*b1cdbd2cSJim Jagielski 428*b1cdbd2cSJim Jagielski dispatcher.executeDispatch(document, ".uno:StyleApply", "", 0, args()) 429*b1cdbd2cSJim Jagielskiend Sub 430*b1cdbd2cSJim Jagielski 431*b1cdbd2cSJim Jagielski'======================================================= 432*b1cdbd2cSJim Jagielski' InsertNewParaData 433*b1cdbd2cSJim Jagielski'------------------------------------------------------- 434*b1cdbd2cSJim Jagielski' Inserts a new ID for the paragraph 435*b1cdbd2cSJim Jagielski'======================================================= 436*b1cdbd2cSJim JagielskiSub InsertNewParaData 437*b1cdbd2cSJim Jagielski 438*b1cdbd2cSJim Jagielski If not IsHelpFile Then 439*b1cdbd2cSJim Jagielski msgbox(strErr_NoHelpFile) 440*b1cdbd2cSJim Jagielski Exit Sub 441*b1cdbd2cSJim Jagielski End If 442*b1cdbd2cSJim Jagielski 443*b1cdbd2cSJim Jagielski oSel = thiscomponent.getcurrentcontroller.getselection 444*b1cdbd2cSJim Jagielski oCur = oSel(0).getText.createTextCursorByRange(oSel(0)) 445*b1cdbd2cSJim Jagielski 446*b1cdbd2cSJim Jagielski arParaData = GetParaData 447*b1cdbd2cSJim Jagielski sID = arParaData(0) 448*b1cdbd2cSJim Jagielski slocalize = arParaData(1) 449*b1cdbd2cSJim Jagielski sMsg = arParaData(2) 450*b1cdbd2cSJim Jagielski 451*b1cdbd2cSJim Jagielski If sMsg <> "" Then 452*b1cdbd2cSJim Jagielski msgbox "Cannot assign paragraph id:"+chr(13)+sMsg,48,"Error" 453*b1cdbd2cSJim Jagielski Exit Sub 454*b1cdbd2cSJim Jagielski End If 455*b1cdbd2cSJim Jagielski 456*b1cdbd2cSJim Jagielski If sID <> "" Then 457*b1cdbd2cSJim Jagielski msgbox "Paragraph already has an ID."+chr(13)+"If you want to assign a new ID delete the existing one first.",48,"Error" 458*b1cdbd2cSJim Jagielski Exit Sub 459*b1cdbd2cSJim Jagielski End If 460*b1cdbd2cSJim Jagielski 461*b1cdbd2cSJim Jagielski oCur.gotoStartOfParagraph(0) 462*b1cdbd2cSJim Jagielski 463*b1cdbd2cSJim Jagielski If (Left(oCur.ParaStyleName,8) = "hlp_head") Then 464*b1cdbd2cSJim Jagielski id = "hd_id" + CreateID 465*b1cdbd2cSJim Jagielski thiscomponent.getcurrentcontroller.select(oCur) 466*b1cdbd2cSJim Jagielski MetaData = id 467*b1cdbd2cSJim Jagielski SetCharStyle("hlp_aux_parachanged") 468*b1cdbd2cSJim Jagielski InsertField("ID",MetaData) 469*b1cdbd2cSJim Jagielski SetCharStyle("Default") 470*b1cdbd2cSJim Jagielski Else 471*b1cdbd2cSJim Jagielski id = "par_id" + CreateID 472*b1cdbd2cSJim Jagielski thiscomponent.getcurrentcontroller.select(oCur) 473*b1cdbd2cSJim Jagielski MetaData = id 474*b1cdbd2cSJim Jagielski SetCharStyle("hlp_aux_parachanged") 475*b1cdbd2cSJim Jagielski InsertField("ID",MetaData) 476*b1cdbd2cSJim Jagielski SetCharStyle("Default") 477*b1cdbd2cSJim Jagielski End If 478*b1cdbd2cSJim Jagielski 479*b1cdbd2cSJim Jagielski 480*b1cdbd2cSJim JagielskiEnd Sub 481*b1cdbd2cSJim Jagielski 482*b1cdbd2cSJim Jagielski'======================================================= 483*b1cdbd2cSJim Jagielski' LoadDialog 484*b1cdbd2cSJim Jagielski'------------------------------------------------------- 485*b1cdbd2cSJim Jagielski' Loads a BASIC dialog 486*b1cdbd2cSJim Jagielski'======================================================= 487*b1cdbd2cSJim JagielskiFunction LoadDialog(Libname as String, DialogName as String, Optional oLibContainer) 488*b1cdbd2cSJim Jagielski Dim oLib as Object 489*b1cdbd2cSJim Jagielski Dim oLibDialog as Object 490*b1cdbd2cSJim Jagielski Dim oRuntimeDialog as Object 491*b1cdbd2cSJim Jagielski 492*b1cdbd2cSJim Jagielski If IsMissing(oLibContainer ) then 493*b1cdbd2cSJim Jagielski oLibContainer = DialogLibraries 494*b1cdbd2cSJim Jagielski End If 495*b1cdbd2cSJim Jagielski 496*b1cdbd2cSJim Jagielski oLibContainer.LoadLibrary(LibName) 497*b1cdbd2cSJim Jagielski oLib = oLibContainer.GetByName(Libname) 498*b1cdbd2cSJim Jagielski oLibDialog = oLib.GetByName(DialogName) 499*b1cdbd2cSJim Jagielski oRuntimeDialog = CreateUnoDialog(oLibDialog) 500*b1cdbd2cSJim Jagielski LoadDialog() = oRuntimeDialog 501*b1cdbd2cSJim JagielskiEnd Function 502*b1cdbd2cSJim Jagielski 503*b1cdbd2cSJim Jagielski'======================================================= 504*b1cdbd2cSJim Jagielski' Surprise 505*b1cdbd2cSJim Jagielski'------------------------------------------------------- 506*b1cdbd2cSJim Jagielski' D'oh 507*b1cdbd2cSJim Jagielski'======================================================= 508*b1cdbd2cSJim JagielskiSub Surprise 509*b1cdbd2cSJim Jagielski msgbox "This function is unsupported."+chr(13)+"If you know how to implement this -- go ahead!",0,"D'oh!" 510*b1cdbd2cSJim JagielskiEnd Sub 511*b1cdbd2cSJim Jagielski 512*b1cdbd2cSJim Jagielski'======================================================= 513*b1cdbd2cSJim Jagielski' InsertNote 514*b1cdbd2cSJim Jagielski'------------------------------------------------------- 515*b1cdbd2cSJim Jagielski' Inserts a note (annotation) at the current position 516*b1cdbd2cSJim Jagielski'======================================================= 517*b1cdbd2cSJim Jagielskisub InsertNote(Content As String) 518*b1cdbd2cSJim Jagielski dim document as object 519*b1cdbd2cSJim Jagielski dim dispatcher as object 520*b1cdbd2cSJim Jagielski 521*b1cdbd2cSJim Jagielski document = ThisComponent.CurrentController.Frame 522*b1cdbd2cSJim Jagielski dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") 523*b1cdbd2cSJim Jagielski 524*b1cdbd2cSJim Jagielski dim args(2) as new com.sun.star.beans.PropertyValue 525*b1cdbd2cSJim Jagielski args(0).Name = "Text" 526*b1cdbd2cSJim Jagielski args(0).Value = Content 527*b1cdbd2cSJim Jagielski args(1).Name = "Author" 528*b1cdbd2cSJim Jagielski args(1).Value = "Help Tooling - DO NOT EDIT" 529*b1cdbd2cSJim Jagielski args(2).Name = "Date" 530*b1cdbd2cSJim Jagielski args(2).Value = "02/27/2004" 531*b1cdbd2cSJim Jagielski 532*b1cdbd2cSJim Jagielski dispatcher.executeDispatch(document, ".uno:InsertAnnotation", "", 0, args()) 533*b1cdbd2cSJim Jagielskiend sub 534*b1cdbd2cSJim Jagielski 535*b1cdbd2cSJim Jagielski'======================================================= 536*b1cdbd2cSJim Jagielski' InsertText 537*b1cdbd2cSJim Jagielski'------------------------------------------------------- 538*b1cdbd2cSJim Jagielski' Inserts a string at the current position 539*b1cdbd2cSJim Jagielski'======================================================= 540*b1cdbd2cSJim JagielskiSub InsertText(strg As String) 541*b1cdbd2cSJim Jagielski oSel = thiscomponent.getcurrentcontroller.getselection 542*b1cdbd2cSJim Jagielski oCur = oSel(0).getText.createTextCursorByRange(oSel(0)) 543*b1cdbd2cSJim Jagielski oCur.String = strg 544*b1cdbd2cSJim JagielskiEnd Sub 545*b1cdbd2cSJim Jagielski 546*b1cdbd2cSJim Jagielski'======================================================= 547*b1cdbd2cSJim Jagielski' ParaIsEmpty 548*b1cdbd2cSJim Jagielski'------------------------------------------------------- 549*b1cdbd2cSJim Jagielski' Evaluates if a paragraph is empty. 550*b1cdbd2cSJim Jagielski'======================================================= 551*b1cdbd2cSJim JagielskiFunction ParaIsEmpty 552*b1cdbd2cSJim Jagielski oSel = thiscomponent.getcurrentcontroller.getselection 553*b1cdbd2cSJim Jagielski oCur = oSel(0).getText.createTextCursorByRange(oSel(0)) 554*b1cdbd2cSJim Jagielski oCur.gotoStartOfParagraph(0) 555*b1cdbd2cSJim Jagielski ParaIsEmpty = oCur.IsEndOfParagraph 556*b1cdbd2cSJim JagielskiEnd Function 557*b1cdbd2cSJim Jagielski 558*b1cdbd2cSJim Jagielski'======================================================= 559*b1cdbd2cSJim Jagielski' IsInBookmark 560*b1cdbd2cSJim Jagielski'------------------------------------------------------- 561*b1cdbd2cSJim Jagielski' Evaluates if the cursor is inside a <bookmark> </bookmark> element 562*b1cdbd2cSJim Jagielski'======================================================= 563*b1cdbd2cSJim JagielskiFunction IsInBookmark 564*b1cdbd2cSJim Jagielski oSel = thiscomponent.getcurrentcontroller.getselection 565*b1cdbd2cSJim Jagielski oCur = oSel(0).getText.createTextCursorByRange(oSel(0)) 566*b1cdbd2cSJim Jagielski 567*b1cdbd2cSJim Jagielski If ((oCur.ParaStyleName = "hlp_aux_bookmark") AND (not(oCur.IsEndOfParagraph))) Then 568*b1cdbd2cSJim Jagielski oCur.GotoStartOfParagraph(0) 569*b1cdbd2cSJim Jagielski oCur.GotoEndOfParagraph(1) 570*b1cdbd2cSJim Jagielski sText = Left(oCur.GetString,Instr(oCur.GetString,""" id=""")-1) 571*b1cdbd2cSJim Jagielski sText = Right(sText,Len(sText)-InStr(sText,"""")) 572*b1cdbd2cSJim Jagielski Select Case Left(sText,3) 573*b1cdbd2cSJim Jagielski Case "ind" 574*b1cdbd2cSJim Jagielski IsInBookmark = 1 575*b1cdbd2cSJim Jagielski Case "hid" 576*b1cdbd2cSJim Jagielski IsInBookmark = 2 577*b1cdbd2cSJim Jagielski Case "con" 578*b1cdbd2cSJim Jagielski IsInBookmark = 3 579*b1cdbd2cSJim Jagielski Case Else 580*b1cdbd2cSJim Jagielski IsInBookmark = 0 581*b1cdbd2cSJim Jagielski End Select 582*b1cdbd2cSJim Jagielski Else 583*b1cdbd2cSJim Jagielski IsInBookmark = 0 584*b1cdbd2cSJim Jagielski End If 585*b1cdbd2cSJim JagielskiEnd Function 586*b1cdbd2cSJim Jagielski 587*b1cdbd2cSJim Jagielski'======================================================= 588*b1cdbd2cSJim Jagielski' IsInTable 589*b1cdbd2cSJim Jagielski'------------------------------------------------------- 590*b1cdbd2cSJim Jagielski' Evaluates if the cursor is in a table 591*b1cdbd2cSJim Jagielski'======================================================= 592*b1cdbd2cSJim JagielskiFunction IsInTable 593*b1cdbd2cSJim Jagielski oSel = thiscomponent.getcurrentcontroller.getselection 594*b1cdbd2cSJim Jagielski oCur = oSel(0).getText.createTextCursorByRange(oSel(0)) 595*b1cdbd2cSJim Jagielski 596*b1cdbd2cSJim Jagielski IsInTable = (VarType(oCur.TextTable) <> 0) 597*b1cdbd2cSJim JagielskiEnd Function 598*b1cdbd2cSJim Jagielski 599*b1cdbd2cSJim Jagielski'======================================================= 600*b1cdbd2cSJim Jagielski' InsertLink 601*b1cdbd2cSJim Jagielski'------------------------------------------------------- 602*b1cdbd2cSJim Jagielski' Inserts a hyperlink at the current position 603*b1cdbd2cSJim Jagielski'======================================================= 604*b1cdbd2cSJim JagielskiSub InsertLink(sPath As String, sText As String, sName As String) 605*b1cdbd2cSJim Jagielski dim document as object 606*b1cdbd2cSJim Jagielski dim dispatcher as object 607*b1cdbd2cSJim Jagielski 608*b1cdbd2cSJim Jagielski document = ThisComponent.CurrentController.Frame 609*b1cdbd2cSJim Jagielski dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") 610*b1cdbd2cSJim Jagielski 611*b1cdbd2cSJim Jagielski dim args(4) as new com.sun.star.beans.PropertyValue 612*b1cdbd2cSJim Jagielski args(0).Name = "Hyperlink.Text" 613*b1cdbd2cSJim Jagielski args(0).Value = sText 614*b1cdbd2cSJim Jagielski args(1).Name = "Hyperlink.URL" 615*b1cdbd2cSJim Jagielski args(1).Value = sPath 616*b1cdbd2cSJim Jagielski args(2).Name = "Hyperlink.Target" 617*b1cdbd2cSJim Jagielski args(2).Value = "" 618*b1cdbd2cSJim Jagielski args(3).Name = "Hyperlink.Name" 619*b1cdbd2cSJim Jagielski args(3).Value = sName 620*b1cdbd2cSJim Jagielski args(4).Name = "Hyperlink.Type" 621*b1cdbd2cSJim Jagielski args(4).Value = 1 622*b1cdbd2cSJim Jagielski 623*b1cdbd2cSJim Jagielski dispatcher.executeDispatch(document, ".uno:SetHyperlink", "", 0, args()) 624*b1cdbd2cSJim Jagielski args(0).Name = "Count" 625*b1cdbd2cSJim Jagielski args(0).Value = 1 626*b1cdbd2cSJim Jagielski args(1).Name = "Select" 627*b1cdbd2cSJim Jagielski args(1).Value = false 628*b1cdbd2cSJim Jagielski 629*b1cdbd2cSJim Jagielski dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, args()) 630*b1cdbd2cSJim Jagielski 631*b1cdbd2cSJim JagielskiEnd Sub 632*b1cdbd2cSJim Jagielski 633*b1cdbd2cSJim Jagielski'======================================================= 634*b1cdbd2cSJim Jagielski' AssignMissingIDs 635*b1cdbd2cSJim Jagielski'------------------------------------------------------- 636*b1cdbd2cSJim Jagielski' Assigns IDs to elements that miss them 637*b1cdbd2cSJim Jagielski'======================================================= 638*b1cdbd2cSJim JagielskiSub AssignMissingIDs 639*b1cdbd2cSJim Jagielski' NOT IMPLEMENTED YET 640*b1cdbd2cSJim Jagielskiend sub 641*b1cdbd2cSJim Jagielski 642*b1cdbd2cSJim Jagielski'======================================================= 643*b1cdbd2cSJim Jagielski' CreateTable 644*b1cdbd2cSJim Jagielski'------------------------------------------------------- 645*b1cdbd2cSJim Jagielski' Creates a new table 646*b1cdbd2cSJim Jagielski'======================================================= 647*b1cdbd2cSJim JagielskiSub CreateTable(nRows as Integer, nCols as Integer, sID as String) 648*b1cdbd2cSJim Jagielski dim document as object 649*b1cdbd2cSJim Jagielski dim dispatcher as object 650*b1cdbd2cSJim Jagielski 651*b1cdbd2cSJim Jagielski document = ThisComponent.CurrentController.Frame 652*b1cdbd2cSJim Jagielski dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") 653*b1cdbd2cSJim Jagielski 654*b1cdbd2cSJim Jagielski dim args1(3) as new com.sun.star.beans.PropertyValue 655*b1cdbd2cSJim Jagielski args1(0).Name = "TableName" 656*b1cdbd2cSJim Jagielski args1(0).Value = sID 657*b1cdbd2cSJim Jagielski args1(1).Name = "Columns" 658*b1cdbd2cSJim Jagielski args1(1).Value = nCols 659*b1cdbd2cSJim Jagielski args1(2).Name = "Rows" 660*b1cdbd2cSJim Jagielski args1(2).Value = nRows 661*b1cdbd2cSJim Jagielski args1(3).Name = "Flags" 662*b1cdbd2cSJim Jagielski args1(3).Value = 9 663*b1cdbd2cSJim Jagielski 664*b1cdbd2cSJim Jagielski dispatcher.executeDispatch(document, ".uno:InsertTable", "", 0, args1()) 665*b1cdbd2cSJim Jagielski 666*b1cdbd2cSJim Jagielski args1(0).Name = "TopBottomMargin.TopMargin" 667*b1cdbd2cSJim Jagielski args1(0).Value = 500 668*b1cdbd2cSJim Jagielski args1(1).Name = "TopBottomMargin.BottomMargin" 669*b1cdbd2cSJim Jagielski args1(1).Value = 0 670*b1cdbd2cSJim Jagielski args1(2).Name = "TopBottomMargin.TopRelMargin" 671*b1cdbd2cSJim Jagielski args1(2).Value = 100 672*b1cdbd2cSJim Jagielski args1(3).Name = "TopBottomMargin.BottomRelMargin" 673*b1cdbd2cSJim Jagielski args1(3).Value = 100 674*b1cdbd2cSJim Jagielski 675*b1cdbd2cSJim Jagielski dispatcher.executeDispatch(document, ".uno:TopBottomMargin", "", 0, args1()) 676*b1cdbd2cSJim Jagielski dispatcher.executeDispatch(document, ".uno:SelectAll", "", 0, Array()) 677*b1cdbd2cSJim Jagielski SetParaStyle("hlp_tablecontent") 678*b1cdbd2cSJim Jagielski GoDown(1) 679*b1cdbd2cSJim Jagielskiend Sub 680*b1cdbd2cSJim Jagielski 681*b1cdbd2cSJim Jagielski'======================================================= 682*b1cdbd2cSJim Jagielski' IsBlockImage 683*b1cdbd2cSJim Jagielski'------------------------------------------------------- 684*b1cdbd2cSJim Jagielski' Evaluates if the cursor is in a paragraph with 685*b1cdbd2cSJim Jagielski' a block image (image in its own paragraph) 686*b1cdbd2cSJim Jagielski'======================================================= 687*b1cdbd2cSJim JagielskiFunction IsBlockImage 688*b1cdbd2cSJim Jagielski oSel = thiscomponent.getcurrentcontroller.getselection 689*b1cdbd2cSJim Jagielski oCur = oSel(0).getText.createTextCursorByRange(oSel(0)) 690*b1cdbd2cSJim Jagielski oCur.gotoStartOfParagraph(0) 691*b1cdbd2cSJim Jagielski oCur.gotoEndOfParagraph(1) 692*b1cdbd2cSJim Jagielski sStr = Right(oCur.String,Len(oCur.String)-InStr(oCur.String," ")) 'string must start with <IMG and end with IMG with no <IMG in between 693*b1cdbd2cSJim Jagielski IsBlockImage = (not(Left(sStr,4)="IMG>") AND (Right(sStr,6)="</IMG>")) 694*b1cdbd2cSJim JagielskiEnd Function 695*b1cdbd2cSJim Jagielski 696*b1cdbd2cSJim Jagielski'======================================================= 697*b1cdbd2cSJim Jagielski' HasCaption 698*b1cdbd2cSJim Jagielski'------------------------------------------------------- 699*b1cdbd2cSJim Jagielski' Evaluates if the current image has a caption element 700*b1cdbd2cSJim Jagielski'======================================================= 701*b1cdbd2cSJim JagielskiFunction HasCaption 702*b1cdbd2cSJim Jagielski oSel = thiscomponent.getcurrentcontroller.getselection 703*b1cdbd2cSJim Jagielski If oSel.ImplementationName = "SwXTextGraphicObject" Then 704*b1cdbd2cSJim Jagielski oCur = oSel(0).getAnchor.getText.createTextCursorByRange(oSel(0).getAnchor) 705*b1cdbd2cSJim Jagielski Else 706*b1cdbd2cSJim Jagielski oCur = oSel(0).getText.createTextCursorByRange(oSel(0)) 707*b1cdbd2cSJim Jagielski End If 708*b1cdbd2cSJim Jagielski oCur.gotoStartOfParagraph(0) 709*b1cdbd2cSJim Jagielski oCur.gotoEndOfParagraph(1) 710*b1cdbd2cSJim Jagielski HasCaption = (InStr(oCur.String,"<IMGCAPTION")>0) 711*b1cdbd2cSJim JagielskiEnd Function 712*b1cdbd2cSJim Jagielski 713*b1cdbd2cSJim Jagielski'======================================================= 714*b1cdbd2cSJim Jagielski' GetImageID 715*b1cdbd2cSJim Jagielski'------------------------------------------------------- 716*b1cdbd2cSJim Jagielski' Returns the ID of an image at the cursor position 717*b1cdbd2cSJim Jagielski'======================================================= 718*b1cdbd2cSJim JagielskiFunction GetImageID 719*b1cdbd2cSJim Jagielski oSel = thiscomponent.getcurrentcontroller.getselection 720*b1cdbd2cSJim Jagielski If oSel.ImplementationName = "SwXTextGraphicObject" Then 721*b1cdbd2cSJim Jagielski oCur = oSel(0).getAnchor.getText.createTextCursorByRange(oSel(0).getAnchor) 722*b1cdbd2cSJim Jagielski Else 723*b1cdbd2cSJim Jagielski oCur = oSel(0).getText.createTextCursorByRange(oSel(0)) 724*b1cdbd2cSJim Jagielski End If 725*b1cdbd2cSJim Jagielski oCur.gotoStartOfParagraph(0) 726*b1cdbd2cSJim Jagielski oCur.gotoEndOfParagraph(1) 727*b1cdbd2cSJim Jagielski sStr = Right(oCur.String,Len(oCur.String)-(InStr(oCur.String,"IMG ID=""")+7)) 728*b1cdbd2cSJim Jagielski GetImageID = Left(sStr,InStr(sStr,""">")+1) 'string must start with <IMG and end with IMG with no <IMG in between 729*b1cdbd2cSJim JagielskiEnd Function 730*b1cdbd2cSJim Jagielski 731*b1cdbd2cSJim Jagielski'======================================================= 732*b1cdbd2cSJim Jagielski' SelAll 733*b1cdbd2cSJim Jagielski'------------------------------------------------------- 734*b1cdbd2cSJim Jagielski' Selects everything 735*b1cdbd2cSJim Jagielski'======================================================= 736*b1cdbd2cSJim JagielskiSub SelAll 737*b1cdbd2cSJim Jagielski dim document as object 738*b1cdbd2cSJim Jagielski dim dispatcher as object 739*b1cdbd2cSJim Jagielski 740*b1cdbd2cSJim Jagielski document = ThisComponent.CurrentController.Frame 741*b1cdbd2cSJim Jagielski dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") 742*b1cdbd2cSJim Jagielski 743*b1cdbd2cSJim Jagielski dispatcher.executeDispatch(document, ".uno:SelectAll", "", 0, Array()) 744*b1cdbd2cSJim JagielskiEnd Sub 745*b1cdbd2cSJim Jagielski 746*b1cdbd2cSJim Jagielski'======================================================= 747*b1cdbd2cSJim Jagielski' GetParaData 748*b1cdbd2cSJim Jagielski'------------------------------------------------------- 749*b1cdbd2cSJim Jagielski' Returns the Paragraph ID and localization status 750*b1cdbd2cSJim Jagielski'======================================================= 751*b1cdbd2cSJim JagielskiFunction GetParaData 752*b1cdbd2cSJim Jagielski arParaData = Array("","","") ' ID, localize, #message 753*b1cdbd2cSJim Jagielski 754*b1cdbd2cSJim Jagielski oSel = thiscomponent.getcurrentcontroller.getselection 755*b1cdbd2cSJim Jagielski oCur = oSel(0).getText.createTextCursorByRange(oSel(0)) 756*b1cdbd2cSJim Jagielski oCur.gotoStartOfParagraph(0) 757*b1cdbd2cSJim Jagielski oCur.gotoEndOfParagraph(1) 758*b1cdbd2cSJim Jagielski sID = "" 759*b1cdbd2cSJim Jagielski Enum = oCur.createEnumeration 760*b1cdbd2cSJim Jagielski Fd = FALSE 761*b1cdbd2cSJim Jagielski 762*b1cdbd2cSJim Jagielski 763*b1cdbd2cSJim Jagielski TE = Enum.nextElement 764*b1cdbd2cSJim Jagielski 765*b1cdbd2cSJim Jagielski TP = TE.createEnumeration 766*b1cdbd2cSJim Jagielski Ct = 0 767*b1cdbd2cSJim Jagielski posID = 0 768*b1cdbd2cSJim Jagielski 769*b1cdbd2cSJim Jagielski Do While TP.hasmoreElements 770*b1cdbd2cSJim Jagielski Ct = Ct+1 771*b1cdbd2cSJim Jagielski TPE = TP.nextElement 772*b1cdbd2cSJim Jagielski If TPE.TextPortionType="TextField" Then 773*b1cdbd2cSJim Jagielski If TPE.TextField.TextFieldMaster.Name="ID" Then 774*b1cdbd2cSJim Jagielski sID = TPE.TextField.Content 775*b1cdbd2cSJim Jagielski Fd = TRUE 776*b1cdbd2cSJim Jagielski Exit Do 777*b1cdbd2cSJim Jagielski End If 778*b1cdbd2cSJim Jagielski End If 779*b1cdbd2cSJim Jagielski If TPE.String = "" Then 780*b1cdbd2cSJim Jagielski Ct = Ct-1 781*b1cdbd2cSJim Jagielski End If 782*b1cdbd2cSJim Jagielski Loop 783*b1cdbd2cSJim Jagielski 784*b1cdbd2cSJim Jagielski If ((Left(oCur.ParaStyleName,8) = "hlp_aux_") or (Left(oCur.ParaStyleName,4) <> "hlp_")) Then 785*b1cdbd2cSJim Jagielski arParaData(2)="Invalid Paragraph Style" 786*b1cdbd2cSJim Jagielski GetParaData = arParaData 787*b1cdbd2cSJim Jagielski Exit Function 788*b1cdbd2cSJim Jagielski End If 789*b1cdbd2cSJim Jagielski 790*b1cdbd2cSJim Jagielski If sID = "" Then 791*b1cdbd2cSJim Jagielski GetParaData = arParaData 792*b1cdbd2cSJim Jagielski Exit Function 793*b1cdbd2cSJim Jagielski End If 794*b1cdbd2cSJim Jagielski 795*b1cdbd2cSJim Jagielski If Right(sID,7) = "_NOL10N" Then 796*b1cdbd2cSJim Jagielski arParaData(0) = Left(sID,Len(sID)-7) 797*b1cdbd2cSJim Jagielski arParaData(1) = "no" 798*b1cdbd2cSJim Jagielski Else 799*b1cdbd2cSJim Jagielski arParaData(0) = sID 800*b1cdbd2cSJim Jagielski arParaData(1) = "yes" 801*b1cdbd2cSJim Jagielski End If 802*b1cdbd2cSJim Jagielski 803*b1cdbd2cSJim Jagielski GetParaData = arParaData 804*b1cdbd2cSJim JagielskiEnd Function 805*b1cdbd2cSJim Jagielski 806*b1cdbd2cSJim Jagielski'======================================================= 807*b1cdbd2cSJim Jagielski' SetsParaData 808*b1cdbd2cSJim Jagielski'------------------------------------------------------- 809*b1cdbd2cSJim Jagielski' Sets the Paragraph ID and localization status 810*b1cdbd2cSJim Jagielski'======================================================= 811*b1cdbd2cSJim Jagielski 812*b1cdbd2cSJim JagielskiSub SetParaData(sID as String, sLocalize as String) 813*b1cdbd2cSJim Jagielski 814*b1cdbd2cSJim Jagielski oSel = thiscomponent.getcurrentcontroller.getselection 815*b1cdbd2cSJim Jagielski oCur = oSel(0).getText.createTextCursorByRange(oSel(0)) 816*b1cdbd2cSJim Jagielski oCur.gotoStartOfParagraph(0) 817*b1cdbd2cSJim Jagielski oCur.gotoEndOfParagraph(1) 818*b1cdbd2cSJim Jagielski Enum = oCur.createEnumeration 819*b1cdbd2cSJim Jagielski Fd = FALSE 820*b1cdbd2cSJim Jagielski 821*b1cdbd2cSJim Jagielski 822*b1cdbd2cSJim Jagielski Do While Enum.hasMoreElements 823*b1cdbd2cSJim Jagielski TE = Enum.nextElement 824*b1cdbd2cSJim Jagielski 825*b1cdbd2cSJim Jagielski TP = TE.createEnumeration 826*b1cdbd2cSJim Jagielski Ct = 0 827*b1cdbd2cSJim Jagielski posID = 0 828*b1cdbd2cSJim Jagielski 829*b1cdbd2cSJim Jagielski Do While TP.hasmoreElements 830*b1cdbd2cSJim Jagielski Ct = Ct+1 831*b1cdbd2cSJim Jagielski TPE = TP.nextElement 832*b1cdbd2cSJim Jagielski If TPE.TextPortionType="TextField" Then 833*b1cdbd2cSJim Jagielski If TPE.TextField.TextFieldMaster.Name="ID" Then 834*b1cdbd2cSJim Jagielski posID = Ct 835*b1cdbd2cSJim Jagielski If sLocalize = "no" Then 836*b1cdbd2cSJim Jagielski TPE.TextField.Content = sID+"_NOL10N" 837*b1cdbd2cSJim Jagielski TPE.TextField.IsVisible = TRUE 838*b1cdbd2cSJim Jagielski ElseIf sLocalize = "yes" Then 839*b1cdbd2cSJim Jagielski TPE.TextField.Content = sID 840*b1cdbd2cSJim Jagielski TPE.TextField.IsVisible = TRUE 841*b1cdbd2cSJim Jagielski Else 842*b1cdbd2cSJim Jagielski msgbox "Unknown localization parameter: "+sLocalize,0,"Error" 843*b1cdbd2cSJim Jagielski End If 844*b1cdbd2cSJim Jagielski Fd = TRUE 845*b1cdbd2cSJim Jagielski Exit Do 846*b1cdbd2cSJim Jagielski End If 847*b1cdbd2cSJim Jagielski End If 848*b1cdbd2cSJim Jagielski If TPE.String = "" Then 849*b1cdbd2cSJim Jagielski Ct = Ct-1 850*b1cdbd2cSJim Jagielski End If 851*b1cdbd2cSJim Jagielski Loop 852*b1cdbd2cSJim Jagielski If Fd Then 853*b1cdbd2cSJim Jagielski Exit Do 854*b1cdbd2cSJim Jagielski End If 855*b1cdbd2cSJim Jagielski Loop 856*b1cdbd2cSJim Jagielski 857*b1cdbd2cSJim Jagielski oCur.TextField.update 858*b1cdbd2cSJim Jagielski UpdateFields 859*b1cdbd2cSJim Jagielski 860*b1cdbd2cSJim JagielskiEnd Sub 861*b1cdbd2cSJim Jagielski 862*b1cdbd2cSJim Jagielski 863*b1cdbd2cSJim Jagielski'======================================================= 864*b1cdbd2cSJim Jagielski' IsInList 865*b1cdbd2cSJim Jagielski'------------------------------------------------------- 866*b1cdbd2cSJim Jagielski' Evaluates if the cursor is inside a list (ordered or unordered) 867*b1cdbd2cSJim Jagielski'======================================================= 868*b1cdbd2cSJim JagielskiFunction IsInList 869*b1cdbd2cSJim Jagielski oSel = thiscomponent.getcurrentcontroller.getselection 870*b1cdbd2cSJim Jagielski oCur = oSel(0).getText.createTextCursorByRange(oSel(0)) 871*b1cdbd2cSJim Jagielski If oCur.NumberingStyleName = "" Then 872*b1cdbd2cSJim Jagielski IsInList = false 873*b1cdbd2cSJim Jagielski ElseIf oCur.NumberingRules.NumberingIsOutline = true Then 874*b1cdbd2cSJim Jagielski IsInList = false 875*b1cdbd2cSJim Jagielski Else 876*b1cdbd2cSJim Jagielski IsInList = true 877*b1cdbd2cSJim Jagielski End If 878*b1cdbd2cSJim JagielskiEnd Function 879*b1cdbd2cSJim Jagielski 880*b1cdbd2cSJim Jagielski'======================================================= 881*b1cdbd2cSJim Jagielski' TagFormatIsCorrect 882*b1cdbd2cSJim Jagielski'------------------------------------------------------- 883*b1cdbd2cSJim Jagielski' Checks for correct paragraph format for tags 884*b1cdbd2cSJim Jagielski'======================================================= 885*b1cdbd2cSJim JagielskiFunction TagFormatIsCorrect(sTN As String, sPS As String) 886*b1cdbd2cSJim Jagielski 887*b1cdbd2cSJim Jagielski arTag = Array("BOOKMARK","SORT","SECTION","SWITCH","CASE","DEFAULT") 888*b1cdbd2cSJim Jagielski arTagFormat = Array("hlp_aux_bookmark","hlp_aux_sort","hlp_aux_section","hlp_aux_switch","hlp_aux_switch","hlp_aux_switch") 889*b1cdbd2cSJim Jagielski 890*b1cdbd2cSJim Jagielski For n=0 to ubound(arTag) 891*b1cdbd2cSJim Jagielski If (sTN = arTag(n) AND sPS <> arTagFormat(n)) Then 892*b1cdbd2cSJim Jagielski TagFormatIsCorrect = arTagFormat(n) 893*b1cdbd2cSJim Jagielski Exit Function 894*b1cdbd2cSJim Jagielski End If 895*b1cdbd2cSJim Jagielski TagFormatIsCorrect = "" 896*b1cdbd2cSJim Jagielski Next n 897*b1cdbd2cSJim Jagielski 898*b1cdbd2cSJim JagielskiEnd Function 899*b1cdbd2cSJim Jagielski 900*b1cdbd2cSJim Jagielski'======================================================= 901*b1cdbd2cSJim Jagielski' GetFilePath 902*b1cdbd2cSJim Jagielski'------------------------------------------------------- 903*b1cdbd2cSJim Jagielski' look for the "text/..." part of the file name and separate it 904*b1cdbd2cSJim Jagielski'======================================================= 905*b1cdbd2cSJim JagielskiFunction GetFilePath(fname As String) 906*b1cdbd2cSJim Jagielski 907*b1cdbd2cSJim Jagielski i = 1 908*b1cdbd2cSJim Jagielski Do 909*b1cdbd2cSJim Jagielski If (Mid(fname,i,5) = "text/") Then 910*b1cdbd2cSJim Jagielski Strg = Mid(fname,i,Len(fname)-i+1) 911*b1cdbd2cSJim Jagielski Exit Do 912*b1cdbd2cSJim Jagielski Else 913*b1cdbd2cSJim Jagielski i = i+1 914*b1cdbd2cSJim Jagielski Strg = fname 915*b1cdbd2cSJim Jagielski End If 916*b1cdbd2cSJim Jagielski Loop While (i+5 < Len(fname)) 917*b1cdbd2cSJim Jagielski GetFilePath = Strg 918*b1cdbd2cSJim JagielskiEnd Function 919*b1cdbd2cSJim Jagielski 920*b1cdbd2cSJim Jagielski'======================================================= 921*b1cdbd2cSJim Jagielski' OpenGraphics 922*b1cdbd2cSJim Jagielski'------------------------------------------------------- 923*b1cdbd2cSJim Jagielski' Calls the graphic open dialog for inserting an image 924*b1cdbd2cSJim Jagielski'======================================================= 925*b1cdbd2cSJim JagielskiFunction OpenGraphics(oDoc As Object) 926*b1cdbd2cSJim JagielskiDim ListAny(0) as Long 927*b1cdbd2cSJim JagielskiDim oStoreProperties(0) as New com.sun.star.beans.PropertyValue 928*b1cdbd2cSJim Jagielski GlobalScope.BasicLibraries.loadLibrary("Tools") 929*b1cdbd2cSJim Jagielski ListAny(0) = com.sun.star.ui.dialogs.TemplateDescription.FILEOPEN_SIMPLE 930*b1cdbd2cSJim Jagielski' ListAny(0) = com.sun.star.ui.dialogs.TemplateDescription.FILEOPEN_LINK_PREVIEW_IMAGE_TEMPLATE 931*b1cdbd2cSJim Jagielski oFileDialog = CreateUnoService("com.sun.star.ui.dialogs.FilePicker") 932*b1cdbd2cSJim Jagielski oFileDialog.Initialize(ListAny()) 933*b1cdbd2cSJim Jagielski 934*b1cdbd2cSJim Jagielski sLastImgDir = ReadConfig("LastImgDir") 935*b1cdbd2cSJim Jagielski If sLastImgDir <> "" Then 936*b1cdbd2cSJim Jagielski oFileDialog.setDisplayDirectory(sLastImgDir) 937*b1cdbd2cSJim Jagielski End If 938*b1cdbd2cSJim Jagielski 939*b1cdbd2cSJim Jagielski oMasterKey = GetRegistryKeyContent("org.openoffice.TypeDetection.Types/") 940*b1cdbd2cSJim Jagielski oTypes() = oMasterKey.Types 941*b1cdbd2cSJim Jagielski 942*b1cdbd2cSJim Jagielski oFileDialog.AppendFilter(oTypes.GetByName("gif_Graphics_Interchange").UIName, "*.gif") 943*b1cdbd2cSJim Jagielski oFileDialog.AppendFilter(oTypes.GetByName("png_Portable_Network_Graphic").UIName, "*.png") 944*b1cdbd2cSJim Jagielski 945*b1cdbd2cSJim Jagielski oFileDialog.SetTitle("Insert Image") 946*b1cdbd2cSJim Jagielski iAccept = oFileDialog.Execute() 947*b1cdbd2cSJim Jagielski If iAccept = 1 Then 948*b1cdbd2cSJim Jagielski sPath = oFileDialog.Files(0) 949*b1cdbd2cSJim Jagielski WriteConfig("LastImgDir",oFileDialog.getDisplayDirectory) 950*b1cdbd2cSJim Jagielski UIFilterName = oFileDialog.GetCurrentFilter() 951*b1cdbd2cSJim Jagielski OpenGraphics = oFileDialog.Files(0) 952*b1cdbd2cSJim Jagielski Else 953*b1cdbd2cSJim Jagielski OpenGraphics = "" 954*b1cdbd2cSJim Jagielski End If 955*b1cdbd2cSJim Jagielski oFileDialog.Dispose() 956*b1cdbd2cSJim JagielskiEnd Function 957*b1cdbd2cSJim Jagielski 958*b1cdbd2cSJim Jagielski'======================================================= 959*b1cdbd2cSJim Jagielski' WriteConfig 960*b1cdbd2cSJim Jagielski'------------------------------------------------------- 961*b1cdbd2cSJim Jagielski' Reads a parameter value from the config file 962*b1cdbd2cSJim Jagielski'======================================================= 963*b1cdbd2cSJim JagielskiFunction ReadConfig(Parm As String) 964*b1cdbd2cSJim Jagielski oPath = createUNOService("com.sun.star.util.PathSettings") 965*b1cdbd2cSJim Jagielski filename = oPath.UserConfig+"/helpauthoring.cfg" 966*b1cdbd2cSJim Jagielski iNumber = Freefile 967*b1cdbd2cSJim Jagielski bFound = false 968*b1cdbd2cSJim Jagielski If FileExists(filename) Then 969*b1cdbd2cSJim Jagielski Open filename For Input As iNumber 970*b1cdbd2cSJim Jagielski Do While (not eof(iNumber) AND not(bFound)) 971*b1cdbd2cSJim Jagielski Line Input #iNumber, sLine 972*b1cdbd2cSJim Jagielski If InStr(sLine, "=") > 0 Then 973*b1cdbd2cSJim Jagielski arLine = split(sLine,"=") 974*b1cdbd2cSJim Jagielski If arLine(0) = Parm Then 975*b1cdbd2cSJim Jagielski sResult = arLine(1) 976*b1cdbd2cSJim Jagielski bFound = true 977*b1cdbd2cSJim Jagielski End If 978*b1cdbd2cSJim Jagielski End If 979*b1cdbd2cSJim Jagielski Loop 980*b1cdbd2cSJim Jagielski Close #iNumber 981*b1cdbd2cSJim Jagielski If bFound Then 982*b1cdbd2cSJim Jagielski ReadConfig = sResult 983*b1cdbd2cSJim Jagielski Else 984*b1cdbd2cSJim Jagielski ReadConfig = "" 985*b1cdbd2cSJim Jagielski End If 986*b1cdbd2cSJim Jagielski Else 987*b1cdbd2cSJim Jagielski ReadConfig = "" 988*b1cdbd2cSJim Jagielski End If 989*b1cdbd2cSJim JagielskiEnd Function 990*b1cdbd2cSJim Jagielski 991*b1cdbd2cSJim Jagielski 992*b1cdbd2cSJim Jagielski'======================================================= 993*b1cdbd2cSJim Jagielski' WriteConfig 994*b1cdbd2cSJim Jagielski'------------------------------------------------------- 995*b1cdbd2cSJim Jagielski' Writes a parameter/value pair to the config file 996*b1cdbd2cSJim Jagielski'======================================================= 997*b1cdbd2cSJim JagielskiFunction WriteConfig(Parm As String, Value As String) 998*b1cdbd2cSJim Jagielski Dim arLines(0) As String 999*b1cdbd2cSJim Jagielski bFound = false 1000*b1cdbd2cSJim Jagielski oPath = createUNOService("com.sun.star.util.PathSettings") 1001*b1cdbd2cSJim Jagielski filename = oPath.UserConfig+"/helpauthoring.cfg" 1002*b1cdbd2cSJim Jagielski iNumber = Freefile 1003*b1cdbd2cSJim Jagielski If FileExists(filename) Then 1004*b1cdbd2cSJim Jagielski 1005*b1cdbd2cSJim Jagielski Open filename For Input As iNumber 1006*b1cdbd2cSJim Jagielski Do While (not eof(iNumber)) 1007*b1cdbd2cSJim Jagielski Line Input #iNumber, sLine 1008*b1cdbd2cSJim Jagielski If InStr(sLine, "=") > 0 Then 1009*b1cdbd2cSJim Jagielski sDim = ubound(arLines())+1 1010*b1cdbd2cSJim Jagielski ReDim Preserve arLines(sDim) 1011*b1cdbd2cSJim Jagielski arLines(sDim) = sLine 1012*b1cdbd2cSJim Jagielski End If 1013*b1cdbd2cSJim Jagielski Loop 1014*b1cdbd2cSJim Jagielski Close #iNumber 1015*b1cdbd2cSJim Jagielski 1016*b1cdbd2cSJim Jagielski nLine = 1 1017*b1cdbd2cSJim Jagielski Do While (nLine <= ubound(arLines())) and (not bFound) 1018*b1cdbd2cSJim Jagielski arLine = split(arLines(nLine),"=") 1019*b1cdbd2cSJim Jagielski If arLine(0) = Parm Then 1020*b1cdbd2cSJim Jagielski arLines(nLine) = Parm+"="+Value 1021*b1cdbd2cSJim Jagielski bFound = true 1022*b1cdbd2cSJim Jagielski End If 1023*b1cdbd2cSJim Jagielski nLine = nLine +1 1024*b1cdbd2cSJim Jagielski Loop 1025*b1cdbd2cSJim Jagielski 1026*b1cdbd2cSJim Jagielski nLine = 1 1027*b1cdbd2cSJim Jagielski Open filename For Output As iNumber 1028*b1cdbd2cSJim Jagielski Do While (nLine <= ubound(arLines())) 1029*b1cdbd2cSJim Jagielski Print #iNumber, arLines(nLine) 1030*b1cdbd2cSJim Jagielski nLine = nLine + 1 1031*b1cdbd2cSJim Jagielski Loop 1032*b1cdbd2cSJim Jagielski If (not bFound) Then 1033*b1cdbd2cSJim Jagielski Print #iNumber, Parm+"="+Value 1034*b1cdbd2cSJim Jagielski End If 1035*b1cdbd2cSJim Jagielski Close #iNumber 1036*b1cdbd2cSJim Jagielski 1037*b1cdbd2cSJim Jagielski Else 1038*b1cdbd2cSJim Jagielski Open filename For Output As iNumber 1039*b1cdbd2cSJim Jagielski Print #iNumber, Parm+"="+Value 1040*b1cdbd2cSJim Jagielski Close #iNumber 1041*b1cdbd2cSJim Jagielski End If 1042*b1cdbd2cSJim JagielskiEnd Function 1043*b1cdbd2cSJim Jagielski 1044*b1cdbd2cSJim JagielskiFunction GetRelPath(sPath As String) 1045*b1cdbd2cSJim Jagielski sHelpPrefix = ReadConfig("HelpPrefix") 1046*b1cdbd2cSJim Jagielski If sHelpPrefix = "" Then 1047*b1cdbd2cSJim Jagielski sHelpPrefix = SetDocumentRoot 1048*b1cdbd2cSJim Jagielski End If 1049*b1cdbd2cSJim Jagielski GetRelPath = Right(sPath, Len(sPath)-(InStr(sPath,sHelpPrefix) + Len(sHelpPrefix)-1)) 1050*b1cdbd2cSJim JagielskiEnd Function 1051*b1cdbd2cSJim Jagielski 1052*b1cdbd2cSJim JagielskiFunction SetDocumentRoot 1053*b1cdbd2cSJim Jagielski sHelpPrefix = ReadConfig("HelpPrefix") 1054*b1cdbd2cSJim Jagielski oFolderDialog = CreateUnoService("com.sun.star.ui.dialogs.FolderPicker") 1055*b1cdbd2cSJim Jagielski oFolderDialog.SetTitle("Select Document Root Folder") 1056*b1cdbd2cSJim Jagielski If sHelpPrefix > "" Then 1057*b1cdbd2cSJim Jagielski oFolderDialog.setDisplayDirectory(sHelpPrefix) 1058*b1cdbd2cSJim Jagielski End If 1059*b1cdbd2cSJim Jagielski iAccept = oFolderDialog.Execute() 1060*b1cdbd2cSJim Jagielski 1061*b1cdbd2cSJim Jagielski If iAccept = 1 Then 1062*b1cdbd2cSJim Jagielski sHelpPrefix = oFolderDialog.getDirectory + "/" 1063*b1cdbd2cSJim Jagielski WriteConfig("HelpPrefix",sHelpPrefix) 1064*b1cdbd2cSJim Jagielski End If 1065*b1cdbd2cSJim Jagielski 1066*b1cdbd2cSJim Jagielski SetDocumentRoot = sHelpPrefix 1067*b1cdbd2cSJim JagielskiEnd Function 1068*b1cdbd2cSJim Jagielski 1069*b1cdbd2cSJim JagielskiFunction MakeAbsPath(sPath As String) 1070*b1cdbd2cSJim Jagielski 1071*b1cdbd2cSJim Jagielski sHelpPrefix = ReadConfig("HelpPrefix") 1072*b1cdbd2cSJim Jagielski If sHelpPrefix = "" Then 1073*b1cdbd2cSJim Jagielski sHelpPrefix = SetDocumentRoot 1074*b1cdbd2cSJim Jagielski End If 1075*b1cdbd2cSJim Jagielski 1076*b1cdbd2cSJim Jagielski If Right(sPath,4) <> ".xhp" Then 1077*b1cdbd2cSJim Jagielski sPath=sPath+".xhp" 1078*b1cdbd2cSJim Jagielski End If 1079*b1cdbd2cSJim Jagielski MakeAbsPath = sHelpPrefix+sPath 1080*b1cdbd2cSJim JagielskiEnd Function 1081*b1cdbd2cSJim Jagielski 1082*b1cdbd2cSJim Jagielski 1083*b1cdbd2cSJim JagielskiSub UpdateFields 1084*b1cdbd2cSJim Jagielski dim document as object 1085*b1cdbd2cSJim Jagielski dim dispatcher as object 1086*b1cdbd2cSJim Jagielski document = ThisComponent.CurrentController.Frame 1087*b1cdbd2cSJim Jagielski dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") 1088*b1cdbd2cSJim Jagielski 1089*b1cdbd2cSJim Jagielski dispatcher.executeDispatch(document, ".uno:UpdateFields", "", 0, Array()) 1090*b1cdbd2cSJim JagielskiEnd Sub 1091*b1cdbd2cSJim Jagielski 1092*b1cdbd2cSJim JagielskiFunction IsHelpFile 1093*b1cdbd2cSJim Jagielski document = StarDesktop.CurrentComponent 1094*b1cdbd2cSJim Jagielski IsHelpFile = (Right(GetFilePath(document.URL),4)=".xhp") 1095*b1cdbd2cSJim JagielskiEnd Function 1096*b1cdbd2cSJim Jagielski 1097*b1cdbd2cSJim JagielskiFunction GetUserFieldNumber(fn as String) 1098*b1cdbd2cSJim Jagielski fnum = -1 1099*b1cdbd2cSJim Jagielski For a=0 to document.DocumentInfo.getUserFieldCount - 1 1100*b1cdbd2cSJim Jagielski If document.DocumentInfo.getUserFieldName(a) = fn Then 1101*b1cdbd2cSJim Jagielski fnum = a 1102*b1cdbd2cSJim Jagielski Exit for 1103*b1cdbd2cSJim Jagielski End If 1104*b1cdbd2cSJim Jagielski Next a 1105*b1cdbd2cSJim Jagielski GetUserFieldNumber = fnum 1106*b1cdbd2cSJim JagielskiEnd Function 1107*b1cdbd2cSJim Jagielski</script:module> 1108