Július Pastierik / 09. 02. 2011, 08:51
Obsahujú textové dokumenty, s ktorými v OpenOffice.org pracujete, hypertextové odkazy, ktoré potrebujete opraviť, vymazať a pod.? Naprogramujte si niekoľko makier, ktoré vám uľahčia prácu.
Obzvlášť pri kopírovaní dokumentov z internetu sa v nich vyskytujú hypertextové odkazy, ktoré však nemusia vždy vyhovovať vašim predstavám. Niekedy ich potrebujete jednoducho vymazať, inokedy opraviť a, samozrejme, niekedy potrebujete do dokumentu hypertextový odkaz aj vložiť.
Samozrejme, na toto všetko nájdete v OpenOffice.org aj štandardné nástroje, ktoré však nie vždy vyhovujú, pretože prístup k nim nie je „na jedno kliknutie klik“ a navyše nie vždy spĺňajú vaše predstavy. Ako príklad môžeme použiť odstránenie hypertextového odkazu, ktoré sa dá urobiť jednoducho zmenou formátu (menu „Formát – Východzie formátovanie“). Táto funkcia však zmení nastavenia textu – napríklad ak bol tučný, nastaví ho na obyčajný.
Okrem toho sa môžete stretnúť aj s inými problémami – pri kopírovaní nechtiac vložíte na koniec hypertextového odkazu medzeru a z tohto dôvodu prestane byť funkčný. Na toto nenájdete v OpenOffice.org žiadne riešenie a preto je lepšie, ak si naprogramujete makro, ktoré takéto odkazy dokáže automaticky vyhľadať a opraviť.
Aby bol počet funkcií úplnejší, doplníme ho aj o možnosť vloženia hypertextového odkazu do označeného textu, čím sa práca zrýchli hlavne vtedy, ak pracovné okno „Odkaz“, ktoré sa otvára pomocou menu „Vložiť – Hypertextový odkaz“ považujete za zbytočne zložité. Pre tento účel si nebudeme teraz pripravovať žiadne dialógové okno, ale využijeme štandardnú funkciu „inputbox“ (samozrejme, vypisované texty pripravíme na prípadnú jazykovú lokalizáciu).
Rem Funkcia, ktorá vracia jazyk pracovného rozhrania OO.o
function Jazyk_OOo as string
dim ConfigProvider, MasterKey as object
dim NodePath(0) as new com.sun.star.beans.PropertyValue
NodePath(0).Name = "nodepath"
NodePath(0).Value = "org.openoffice.Setup/L10N/"
ConfigProvider = createUnoService("com.sun.star.configuration.ConfigurationProvider")
MasterKey = ConfigProvider.createInstanceWithArguments("com.sun.star.configuration.ConfigurationAccess", NodePath())
Jazyk_OOo = left(MasterKey.getByName("ooLocale"),2) '"sk", "cs", ...
end function
REM Funkcia pre zadanie hypertextového odkazu
function daj_hypertext(retazec as string) as string
dim jazyk, tt1, tt2 as string
dim sf, inStream, inFile ' Pre čítanie z lokalizačného súboru
kde=basiclibraries.getLibraryLinkURL("JP_hypertext") ' Adresár, kde je rozšírenie nainštalované
REM Nastavenie textu dialógu
tt1="Zadajte hypertextový odkaz."
tt2="Hypertextové odkazy"
sNazov=left(kde,len(kde)-10)+"JP_hypertext_"+Jazyk_OOo+".txt" ' Súbor s jazykovou lokalizáciou
if fileexists(sNazov) then ' Ak lokalizačný súbor existuje, tak načítame definície do premenných
sf = createUnoService("com.sun.star.ucb.SimpleFileAccess")
inStream = sf.openFileRead(sNazov)
inFile = createUnoService("com.sun.star.io.TextInputStream")
inFile.InputStream = inStream
inFile.Encoding = "UTF-8" ' lokalizačný súbor musí byť v UTF-8, inak nebude dobrá diakritika
Do While not inFile.IsEOF
riadok = inFile.readLine ' namiesto Line Input #subor, riadok
rovna=instr(riadok,"=")
if rovna<>0 then
premenna=trim(left(riadok,rovna-1)) ' Budeme ignorovať medzery
definicia=trim(right(riadok,len(riadok)-rovna))
select case premenna
case "t1"
tt1=definicia
case "t2"
tt2=definicia
end select
end if
loop
' Zatvorenie definičného súboru – namiesto close #subor
inStream.closeInput
inFile.closeInput
end if
daj_hypertext=trim(inputbox(tt1,tt2,retazec)) ' Zadanie hypertextového odkazu
end function
REM Funkcia pre označenie textu s rovnakým hypertextovým odkazom. Vracia počet označených znakov –1
function OznacText(Kurzor as object, Odkaz as string) as long
dim ViditelnyKurzor as object
dim pocet as long
ViditelnyKurzor = ThisComponent.getCurrentController().getViewCursor()
ViditelnyKurzor.gotoRange(Kurzor,false)
pocet=0
do
ViditelnyKurzor.goRight(1,true)
pocet=pocet+1
loop while ViditelnyKurzor.HyperLinkURL=Odkaz
ViditelnyKurzor.goLeft(1,true)
OznacText=pocet
end function
sub Oprav_HyperText
dim stary, novy as string
dim este, opakuj as boolean
dim Kurzor, ViditelnyKurzor, PovodnyKurzor, Priebeh as object
ViditelnyKurzor = ThisComponent.getCurrentController().getViewCursor()
PovodnyKurzor=ViditelnyKurzor.getstart() ' Odpamätanie aktuálnej pozície
Kurzor=StarDesktop.CurrentComponent.Text.CreateTextCursor()
Kurzor.gotoStart(false)
stary=""
novy=""
kolko=0
Priebeh=ThisComponent.CurrentController.StatusIndicator ' Indikátor priebehu v spodnej časti pracovného rozhrania OO.o
Priebeh.start("",ThisComponent.CharacterCount) ' Otvorenie indikátora s nastavením max. hodnoty
do
este=kurzor.goRight(1,true) ' Ak sme označili text
if este then
if kolko mod 10 = 0 then Priebeh.setValue(kolko) ' Nastavenie aktuálnej hodnoty indikátora priebehu
if Kurzor.HyperLinkURL<>"" then
if Kurzor.HyperLinkURL=stary then ' Ak je pôvodné URL zhodné s už otestovaným URL, tak nastavíme nové URL
pocet=OznacText(Kurzor, stary)
else ' Ideme opraviť URL
stary=Kurzor.HyperLinkURL
pocet=OznacText(Kurzor, stary)
novy=trim(stary) ' Odstránenie medzier
do ' Odstránenie medzier %20 na začiatku odkazov
opakuj=(left(novy,3)="%20")
if opakuj then novy=trim(right(novy,len(novy)-3))
loop while opakuj
do ' Odstránenie medzier %20 na konci odkazov
opakuj=(right(novy,3)="%20")
if opakuj then novy=trim(left(novy,len(novy)-3))
loop while opakuj
pom=daj_hypertext(novy) ' Zadanie hypertextového odkazu
if pom<>"" then novy=pom
end if
ViditelnyKurzor.HyperLinkURL=novy
if pocet>1 then kurzor.goRight(pocet,true) ' Ak je počet 1, tak je práve jeden znak a ten je už označený
kolko=kolko+pocet
else
kolko=kolko+1
stary=""
novy=""
end if
kurzor.CollapseToEnd(false)
end if
loop while este
Priebeh.end() ' Zatvorenie indikátora priebehu
ViditelnyKurzor.gotoRange(PovodnyKurzor,false)
end sub
sub Nastav_HyperText
dim novy as string
dim Kurzor as object
Kurzor = ThisComponent.getCurrentController().getViewCursor()
novy=trim(Kurzor.HyperLinkURL)
if novy="" then
novy=trim(Kurzor.String)
endif
do ' Odstránenie medzier %20 na začiatku odkazov
opakuj=(left(novy,3)="%20")
if opakuj then novy=trim(right(novy,len(novy)-3))
loop while opakuj
do ' Odstránenie medzier %20 na konci odkazov
opakuj=(right(novy,3)="%20")
if opakuj then novy=trim(left(novy,len(novy)-3))
loop while opakuj
novy=daj_hypertext(novy) ' Zadanie hypertextového odkazu
if novy<>"" then Kurzor.HyperLinkURL=novy
end sub
sub Vymaz_HyperText
dim Kurzor as object
Kurzor = ThisComponent.getCurrentController().getViewCursor()
Kurzor.HyperLinkURL=""
end sub
Copyright © 2002 - 2013 inet.sk, s. r. o. | Všetky práva vyhradené | Neprešlo jazykovou úpravou | ISSN 1336-1899
Využívame kvalitný webhosting za rozumnú cenu od Inet.sk