11ecadb57SMathias Bauer<?xml version="1.0" encoding="UTF-8"?> 21ecadb57SMathias Bauer<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd"> 3*3e02b54dSAndrew Rist<!--*********************************************************** 4*3e02b54dSAndrew Rist * 5*3e02b54dSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 6*3e02b54dSAndrew Rist * or more contributor license agreements. See the NOTICE file 7*3e02b54dSAndrew Rist * distributed with this work for additional information 8*3e02b54dSAndrew Rist * regarding copyright ownership. The ASF licenses this file 9*3e02b54dSAndrew Rist * to you under the Apache License, Version 2.0 (the 10*3e02b54dSAndrew Rist * "License"); you may not use this file except in compliance 11*3e02b54dSAndrew Rist * with the License. You may obtain a copy of the License at 12*3e02b54dSAndrew Rist * 13*3e02b54dSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 14*3e02b54dSAndrew Rist * 15*3e02b54dSAndrew Rist * Unless required by applicable law or agreed to in writing, 16*3e02b54dSAndrew Rist * software distributed under the License is distributed on an 17*3e02b54dSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 18*3e02b54dSAndrew Rist * KIND, either express or implied. See the License for the 19*3e02b54dSAndrew Rist * specific language governing permissions and limitations 20*3e02b54dSAndrew Rist * under the License. 21*3e02b54dSAndrew Rist * 22*3e02b54dSAndrew Rist ***********************************************************--> 231ecadb57SMathias Bauer<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Find" script:language="StarBasic">' *** MODULE FIND *** 241ecadb57SMathias Bauer 251ecadb57SMathias BauerDim oDialog AS Object 261ecadb57SMathias BauerDim document AS Object 271ecadb57SMathias BauerDim Found(0) As Object 281ecadb57SMathias BauerDim nPos As Integer 291ecadb57SMathias Bauer 301ecadb57SMathias Bauer'======================================================= 311ecadb57SMathias Bauer' Main 321ecadb57SMathias Bauer'------------------------------------------------------- 331ecadb57SMathias Bauer' Calls the Find routine to search in fields 341ecadb57SMathias Bauer'======================================================= 351ecadb57SMathias BauerSub Main 361ecadb57SMathias Bauer 371ecadb57SMathias Bauer If not IsHelpFile Then 381ecadb57SMathias Bauer msgbox(strErr_NoHelpFile) 391ecadb57SMathias Bauer Exit Sub 401ecadb57SMathias Bauer End If 411ecadb57SMathias Bauer 421ecadb57SMathias Bauer BasicLibraries.LoadLibrary("HelpAuthoring") 431ecadb57SMathias Bauer oDialog = LoadDialog("HelpAuthoring", "dlgFind") 441ecadb57SMathias Bauer 451ecadb57SMathias Bauer oDoc = StarDesktop.CurrentComponent 461ecadb57SMathias Bauer Enum = oDoc.Text.createEnumeration 471ecadb57SMathias Bauer 481ecadb57SMathias Bauer LastSearchTerm = ReadConfig("SearchTerm") 491ecadb57SMathias Bauer If LastSearchTerm <> "" Then 501ecadb57SMathias Bauer oTxtFind = oDialog.GetControl("txtFind") 511ecadb57SMathias Bauer oTxtFind.Text = LastSearchTerm 521ecadb57SMathias Bauer End If 531ecadb57SMathias Bauer 541ecadb57SMathias Bauer If oDialog.execute() = 1 Then 551ecadb57SMathias Bauer oTxtFind = oDialog.GetControl("txtFind") 561ecadb57SMathias Bauer sFind = oTxtFind.Text 571ecadb57SMathias Bauer WriteConfig("SearchTerm",sFind) 581ecadb57SMathias Bauer 591ecadb57SMathias Bauer Do While Enum.hasMoreElements 601ecadb57SMathias Bauer TE = Enum.nextElement 611ecadb57SMathias Bauer If TE.supportsService("com.sun.star.text.Paragraph") Then 621ecadb57SMathias Bauer TP = TE.createEnumeration 631ecadb57SMathias Bauer While TP.hasmoreElements 641ecadb57SMathias Bauer TPE = TP.nextElement 651ecadb57SMathias Bauer If TPE.supportsService("com.sun.star.text.TextField") Then 661ecadb57SMathias Bauer If Instr(TPE.String, sFind) Then 671ecadb57SMathias Bauer sDim = ubound(Found())+1 681ecadb57SMathias Bauer Redim Preserve Found(sDim) As Object 691ecadb57SMathias Bauer Found(sDim) = TPE.TextField.getAnchor.getText.createTextCursorbyRange(TPE.TextField.getAnchor) 701ecadb57SMathias Bauer End If 711ecadb57SMathias Bauer End If 721ecadb57SMathias Bauer Wend 731ecadb57SMathias Bauer ElseIf TE.supportsService("com.sun.star.text.TextTable") Then 741ecadb57SMathias Bauer CellName = "A1" 751ecadb57SMathias Bauer Cell = TE.getCellByName(CellName) 761ecadb57SMathias Bauer tmpCellEnum = Cell.createEnumeration 771ecadb57SMathias Bauer tmpCellElement = tmpCellEnum.nextElement 781ecadb57SMathias Bauer 791ecadb57SMathias Bauer Rows = TE.getRows 801ecadb57SMathias Bauer Cols = TE.getColumns 811ecadb57SMathias Bauer 821ecadb57SMathias Bauer For RowIndex = 1 to Rows.getCount() 831ecadb57SMathias Bauer For ColIndex = 1 to Cols.getCount() 841ecadb57SMathias Bauer CellName = Chr(64 + ColIndex) & RowIndex 851ecadb57SMathias Bauer Cell = TE.getCellByName(CellName) 861ecadb57SMathias Bauer CellEnum = Cell.createEnumeration 871ecadb57SMathias Bauer 881ecadb57SMathias Bauer Do While CellEnum.hasMoreElements 891ecadb57SMathias Bauer 901ecadb57SMathias Bauer CellElement = CellEnum.nextElement 911ecadb57SMathias Bauer 921ecadb57SMathias Bauer If CellElement.supportsService("com.sun.star.text.Paragraph") Then 931ecadb57SMathias Bauer TP = CellElement.createEnumeration 941ecadb57SMathias Bauer While TP.hasmoreElements 951ecadb57SMathias Bauer TPE = TP.nextElement 961ecadb57SMathias Bauer If TPE.supportsService("com.sun.star.text.TextField") Then 971ecadb57SMathias Bauer If Instr(TPE.String, sFind) Then 981ecadb57SMathias Bauer sDim = ubound(Found())+1 991ecadb57SMathias Bauer Redim Preserve Found(sDim) As Object 1001ecadb57SMathias Bauer Found(sDim) = TPE.TextField.getAnchor.getText.createTextCursorbyRange(TPE.TextField.getAnchor) 1011ecadb57SMathias Bauer End If 1021ecadb57SMathias Bauer End If 1031ecadb57SMathias Bauer Wend 1041ecadb57SMathias Bauer EndIf 1051ecadb57SMathias Bauer 1061ecadb57SMathias Bauer Loop 1071ecadb57SMathias Bauer 1081ecadb57SMathias Bauer Next 1091ecadb57SMathias Bauer Next 1101ecadb57SMathias Bauer 1111ecadb57SMathias Bauer EndIf 1121ecadb57SMathias Bauer Loop 1131ecadb57SMathias Bauer 1141ecadb57SMathias Bauer If ubound(Found()) < 1 Then 1151ecadb57SMathias Bauer msgbox "Nothing found" 1161ecadb57SMathias Bauer ElseIf ubound(Found()) > 1 Then 1171ecadb57SMathias Bauer nPos = 1 1181ecadb57SMathias Bauer thiscomponent.getcurrentcontroller.select(Found(1)) 1191ecadb57SMathias Bauer oDialog = LoadDialog("HelpAuthoring", "dlgRepeatFind") 1201ecadb57SMathias Bauer oPrev = oDialog.GetControl("butPrev") 1211ecadb57SMathias Bauer oPrev.Enable = FALSE 1221ecadb57SMathias Bauer oDialog.Execute() 1231ecadb57SMathias Bauer Else 1241ecadb57SMathias Bauer thiscomponent.getcurrentcontroller.select(Found(1)) 1251ecadb57SMathias Bauer End If 1261ecadb57SMathias Bauer End If 1271ecadb57SMathias BauerEnd Sub 1281ecadb57SMathias Bauer 1291ecadb57SMathias Bauer'======================================================= 1301ecadb57SMathias Bauer' FindNext 1311ecadb57SMathias Bauer'------------------------------------------------------- 1321ecadb57SMathias Bauer' Goes to the next search result position. 1331ecadb57SMathias Bauer'======================================================= 1341ecadb57SMathias BauerSub FindNext 1351ecadb57SMathias Bauer If nPos < ubound(Found()) Then 1361ecadb57SMathias Bauer nPos = nPos + 1 1371ecadb57SMathias Bauer thiscomponent.getcurrentcontroller.select(Found(nPos)) 1381ecadb57SMathias Bauer If nPos = ubound(Found()) Then 1391ecadb57SMathias Bauer oNext = oDialog.GetControl("butNext") 1401ecadb57SMathias Bauer oNext.Enable = FALSE 1411ecadb57SMathias Bauer End If 1421ecadb57SMathias Bauer If nPos > 1 Then 1431ecadb57SMathias Bauer oPrev = oDialog.GetControl("butPrev") 1441ecadb57SMathias Bauer oPrev.Enable = TRUE 1451ecadb57SMathias Bauer End If 1461ecadb57SMathias Bauer End If 1471ecadb57SMathias BauerEnd Sub 1481ecadb57SMathias Bauer 1491ecadb57SMathias Bauer'======================================================= 1501ecadb57SMathias Bauer' FindPrev 1511ecadb57SMathias Bauer'------------------------------------------------------- 1521ecadb57SMathias Bauer' Goes to the previous search result position. 1531ecadb57SMathias Bauer'======================================================= 1541ecadb57SMathias BauerSub FindPrev 1551ecadb57SMathias Bauer If nPos > 1 Then 1561ecadb57SMathias Bauer nPos = nPos - 1 1571ecadb57SMathias Bauer thiscomponent.getcurrentcontroller.select(Found(nPos)) 1581ecadb57SMathias Bauer If nPos = 1 Then 1591ecadb57SMathias Bauer oPrev = oDialog.GetControl("butPrev") 1601ecadb57SMathias Bauer oPrev.Enable = FALSE 1611ecadb57SMathias Bauer End If 1621ecadb57SMathias Bauer If nPos < ubound(Found()) Then 1631ecadb57SMathias Bauer oNext = oDialog.GetControl("butNext") 1641ecadb57SMathias Bauer oNext.Enable = TRUE 1651ecadb57SMathias Bauer End If 1661ecadb57SMathias Bauer End If 1671ecadb57SMathias BauerEnd Sub 1681ecadb57SMathias Bauer 169*3e02b54dSAndrew Rist</script:module> 170