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