Archív Inet.sk Pôvodný autor: Július Pastierik
10. 11. 2010 o 00:00 1343x

Makrá v OpenOffice.org – definícia a nastavenie znakových štýlov

Musíte vo svojich dokumentoch používať znakové štýly pre šikmé a tučné písmo? Naprogramujte si makro, ktoré ich vytvorí a automaticky nimi označí príslušné znaky v dokumente.
Makrá v OpenOffice.org – definícia a nastavenie znakových štýlov

Pri odovzdávaní podkladov na ďalšie spracovanie (hlavne v DTP programoch) častokrát potrebujete, aby ste používali znakové štýly pre šikmé a tučné písmo a, samozrejme, príslušné písmo mali nimi aj označené. Pretože počas vlastného písania sa tieto štýly aplikujú pomerne pracne (stačí si predstaviť, že okrem zmeny písma musíte zmeniť aj štýl), je výhodnejšie, ak si na tieto účely pripravíte makro, ktoré to urobí za vás na „jeden klik“.

Pri vlastnej definícii štýlov musíme, samozrejme, ošetriť prípad, ak existujú, čím umožníme makro spustiť v jednom a tom istom dokumente viackrát. Pre jednoznačnosť a jednoduchosť vytvoríme tri štýly – „Kurziva“, „Tucne“ a „TucnaKurziva“.

Pri vlastnom označovaní (toto, samozrejme, platí aj pre prípadné manuálne označovanie) budeme hľadať písmo, ktoré jednak spĺňa podmienku, že je tučné alebo šikmé a zároveň toto písmo nebude mať nastavený znakový štýl. Týmto ošetríme prípady, keď si ho v dokumente nastavíte manuálne. Z tejto podmienky však zároveň vyplýva postupnosť hľadania – najprv musíme vyhľadať písmo, ktoré je tučné a šikmé zároveň, aby sme mu priradili správny štýl a až potom samostatné šikmé a samostatné tučné písmo (tu už na poradí nezáleží).

To by pre uvedenie problematiky stačilo a preto teraz už môžeme uviesť vlastný zdrojový kód makier. Podotýkame, že pre spustenie stačí napokon volať procedúru „Nastav_Styly“.

dim sPopis$, sNadpis$



REM Funkcia pre zistenie jazyka OO.o

function Jazyk_OOo as string

 dim oConfigProvider, oMasterKey

 dim oNodePath()

 

 oNodePath=array(Vytvor_Property("nodepath", "org.openoffice.Setup/L10N/"))

 oConfigProvider=createUnoService("com.sun.star.configuration.ConfigurationProvider")

 oMasterKey=oConfigProvider.createInstanceWithArguments("com.sun.star.configuration.ConfigurationAccess", oNodePath())

 Jazyk_OOo=left(oMasterKey.getByName("ooLocale"),2) '"sk", "cs", ...

end function



REM Procedúra pre načítanie vypisovaných textov

Sub Set_jazyk_textov (sNazov$)

 dim sRiadok$, sPremenna$, sDefinicia$

 dim rovna%

 dim sf, inStream, inFile ' Pre čítanie z lokalizačného súboru



 on error resume next

 

 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) ' Otvorenie definičného súboru

  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

   sRiadok=inFile.readLine ' Načítanie riadku zo súboru

   rovna=instr(sRiadok,"=")

   if rovna<>0 then

    sPremenna=trim(left(sRiadok,rovna-1)) ' Budeme ignorovať medzery

    sDefinicia=trim(right(sRiadok,len(sRiadok)-rovna))

    select case sPremenna

     case "popis"

      sPopis=sDefinicia

     case "nadpis"

      sNadpis=sDefinicia

    end select

   end if

  loop

  ' Zatvorenie definičného súboru

  inStream.closeInput

  inFile.closeInput

 end if

end sub



REM Vytvorenie "PropertyValue" štruktúry

function Vytvor_Property(sNazov$, Hodnota) as com.sun.star.beans.PropertyValue

 dim oPropertyValue as New com.sun.star.beans.PropertyValue

 oPropertyValue.Name=sNazov

 oPropertyValue.Value=Hodnota

 Vytvor_Property()=oPropertyValue

end function



REM Vytvorenie znakových štýlov (ak neexistujú)

sub Vytvor_Znakovy_Styl(sNazov_Stylu$ as string, oParametre())

 dim i%

 dim oSkupinyStylov, oStyl, oZnakoveStyly

 

 oSkupinyStylov=ThisComponent.StyleFamilies ' Skupiny štýlov

 oZnakoveStyly=oSkupinyStylov.getByName("CharacterStyles") ' Znakové štýly

 if oZnakoveStyly.HasByName(sNazov_Stylu) then exit sub ' Štýl existuje – procedúru ukončíme

 oStyl=ThisComponent.createInstance("com.sun.star.style.CharacterStyle")

 for i=LBound(oParametre) to UBound(oParametre) ' Pre všetky nastavované parametre

  if oParametre(i).Name = "ParentStyle" then ' Ak nastavujeme rodičovský štýl

   if oZnakoveStyly.HasByName(oParametre(i).Value) then ' Test, či rodičovský štýl existuje

    oStyl.ParentStyle=oParametre(i).Value ' Názov rodičovského štýlu

   end if

  else

   oStyl.setPropertyValue(oParametre(i).Name, oParametre(i).Value) ' Nastavenie ostatných parametrov

  end if

 next

 oZnakoveStyly.insertByName(sNazov_Stylu, oStyl) ' Vloženie štýlu do zoznamu štýlov

end sub



REM Definícia a vytvorenie znakových štýlov

sub Definuj_Znakove_Styly

 dim oParametre()

 

 REM Šikmé písmo

 oParametre()=array(Vytvor_Property("CharWeight", com.sun.star.awt.FontWeight.NORMAL), _

                    Vytvor_Property("CharPosture", com.sun.star.awt.FontSlant.ITALIC))

 Vytvor_Znakovy_Styl("Kurziva", oParametre()) ' Vlastné vytvorenie znakového štýlu "Kurziva"

 

 REM Tučné písmo

 oParametre()=array(Vytvor_Property("CharWeight", com.sun.star.awt.FontWeight.BOLD), _

                    Vytvor_Property("CharPosture", com.sun.star.awt.FontSlant.NONE))

 Vytvor_Znakovy_Styl("Tucne", oParametre()) ' Vlastné vytvorenie znakového štýlu "Tucne"

 

 REM Tučné šikmé písmo

 oParametre()=array(Vytvor_Property("CharPosture", com.sun.star.awt.FontSlant.ITALIC), _

                    Vytvor_Property("CharWeight", com.sun.star.awt.FontWeight.BOLD))

 Vytvor_Znakovy_Styl("TucnaKurziva", oParametre()) ' Vlastné vytvorenie znakového štýlu "TucnaKurziva"

end sub



REM Vyhľadanie šikmého a tučného písma a nastavenie príslušného štýlu

Sub Nastav_Styly

 Dim oDokument, oHladaj, oNasiel

 Dim oAtributy()

 dim sSubor$, kde$

 

 Definuj_Znakove_Styly ' Vytvorenie znakových štýlov pre šikmé, tučné a tučné šikmé písmo

 

 oDokument=ThisComponent

 oHladaj=oDokument.createReplaceDescriptor

 oHladaj.SearchRegularExpression=True ' Hľadáme pomocou regulárnych výrazov

 oHladaj.SearchString = ".*" ' Regulárny výraz pre všetky znaky

 oHladaj.searchStyles=True ' Hľadáme štýly

 

 ' Musíme hľadať najprv tučné šikmé písmo, inak by sme mu priradili iný štýl (šikmé/tučné – podľa toho, čo by sme hľadali skôr)

 ' Hľadáme tučné šikmé písmo

 Atributy()=array(Vytvor_Property("CharWeight", com.sun.star.awt.FontWeight.BOLD), _

                  Vytvor_Property("CharPosture", com.sun.star.awt.FontSlant.ITALIC))

 oHladaj.SetSearchAttributes(Atributy())

 oNasiel=oDokument.findFirst(oHladaj) ' Hľadáme od prvého výskytu tučného šikmého písma od začiatku dokumentu

 Do While NOT isNull(oNasiel) ' Pokiaľ sme niečo našli

  if oNasiel.CharStyleName="" then oNasiel.CharStyleName="TucnaKurziva" ' Ak nie je nastavený žiaden znakový štýl, nastavíme štýl "TucnaKurziva"

  oNasiel=oDokument.findNext( oNasiel.getEnd(), oHladaj) ' Hľadanie ďalšieho výskytu tučného šikmého písma

 Loop

 

 ' Hľadáme šikmé písmo

 Atributy()=array(Vytvor_Property("CharPosture", com.sun.star.awt.FontSlant.ITALIC))

 oHladaj.SetSearchAttributes(Atributy())

 oNasiel=oDokument.findFirst(oHladaj) ' Hľadáme od prvého výskytu šikmého písma od začiatku dokumentu

 Do While NOT isNull(oNasiel) ' Pokiaľ sme niečo našli

  if oNasiel.CharStyleName="" then oNasiel.CharStyleName="Kurziva" ' Ak nie je nastavený žiaden znakový štýl, nastavíme štýl "Kurziva"

  oNasiel=oDokument.findNext( oNasiel.getEnd(), oHladaj) ' Hľadanie ďalšieho výskytu šikmého písma

 Loop

 

 ' Hľadáme kolmé tučné písmo

 Atributy()=array(Vytvor_Property("CharWeight", com.sun.star.awt.FontWeight.BOLD))

 oHladaj.SetSearchAttributes(Atributy())

 oNasiel=oDokument.findFirst(oHladaj) ' Hľadáme od prvého výskytu tučného písma od začiatku dokumentu

 Do While NOT isNull(oNasiel) ' Pokiaľ sme niečo našli

  if oNasiel.CharStyleName="" then oNasiel.CharStyleName="Tucne" ' Ak nie je nastavený žiaden znakový štýl, nastavíme štýl "Tucne"

  oNasiel=oDokument.findNext( oNasiel.getEnd(), oHladaj) ' Hľadanie ďalšieho výskytu tučného písma

 Loop

 sPopis="Znakové štýly nastavené."

 sNadpis="Nastavenie štýlov kurzíva, tučné"

 

 kde=basiclibraries.getLibraryLinkURL("JP_kurziva_tucne") ' Adresár, kde je rozšírenie nainštalované

 sSubor=left(kde,len(kde)-10)+"jp_kurziva_tucne_"+Jazyk_OOo+".txt" ' Súbor s jazykovou lokalizáciou

 Set_jazyk_textov(sSubor)

 msgbox (sPopis,0,sNadpis)

End Sub

Novinky a inšpirácie

Z nášho blogu

Prečítajte si novinky, inšpirácie a dôležité informácie zo sveta webhostingu a technológií.

Bezpečnostné aktualizácie PHP: Chráňte svoj web pred hrozbami Oznamy
21. 10. 2026

Bezpečnostné aktualizácie PHP: Chráňte svoj web pred hrozbami

Vývojársky tím PHP vydal dôležité bezpečnostné záplaty pre všetky oficiálne podporované verzie PHP 8. Na našich serveroch sme nezaváhali ...

Čítať viac
Gmail končí s funkciou „Odoslať ako“ pre cudzie e-mailové adresy. Čo to znamená pre vás? Oznamy
01. 10. 2026

Gmail končí s funkciou „Odoslať ako“ pre cudzie e-mailové adresy. Čo to znamená pre vás?

Google oznámil, že v januári 2027 zruší v Gmaile funkciu „Odoslať ako“ (Send as) pre e-mailové adresy od iných poskytovateľov. Ak ste si ...

Čítať viac
Večerná „prestávka“ pre server VIP033 Oznamy
25. 09. 2026

Večerná „prestávka“ pre server VIP033

Neustále pracujeme na tom, aby vaše weby bežali hladko, rýchlo a bezpečne. Technológie idú míľovými krokmi vpred a my v Inet.sk s nimi dr...

Čítať viac
Novinky na Inet.sk (09 / 2026) Novinky
09. 09. 2026

Novinky na Inet.sk (09 / 2026)

Posledné mesiace sme v Inet.sk nevenovali len stabilite serverov, ale najmä počúvaniu vašich reálnych skúseností z každodennej praxe. Výs...

Čítať viac

Podpora klientom

Máte ďalšie otázky?

Nezúfajte, pripravili sme pre Vás jednoduché odpovede na najdôležitejšie otázky, ktoré od našich klientov dostávame.

Zistiť viac

Naše výhody

Prečo si nás vybrať?

Našim klientom ponúkame až 30-dňovú záruku vrátenia peňazí.

Sme skutočný slovenský webhosting

Slovenská
firma

Nepatríme pod žiadnu nadnárodnú spoločnosť, sme malá rodinná firma.

Na nás sa môžete kedykoľvek spoľahnúť

Dlhoročné
skúsenosti

Na slovenskom trhu pôsobíme už viac ako 20 rokov, sme overená značka.

Naši prví zákazníci sú stále s nami

Spokojní
zákazníci

Naši zákazníci sú ako naša rodina, preto nám verí už viac ako 1250 klientov.

Maximálna bezpečnosť

Maximálna
bezpečnosť

Chránime Vás pred útokmi i SPAMom. U nás sú Vaše dáta v bezpečí.

Prozákaznícka podpora

Ochotná
podpora

Zakladáme si na individuálnom prístupe, preto Vám vždy radi pomôžeme.

Kvalita a dobrá cena

Férová
cena

Cena pri obnove je rovnaká ako pri objednávke. Nezdražujeme po prvom roku a bez skrytých poplatkov.

U nás sa Vám nič nestratí

Pravidelné
zálohovanie

Vaše dáta zálohujeme každý deň, dostupné sú aj zálohy z pred niekoľkých mesiacov.

Svižný Admin Panel nájdete len u nás

Prehľadný
Admin Panel

Máme rýchly a prehľadný Admin Panel, ktorý zvládne používať naozaj každý.

Správa používateľov

Správa
používateľov

Spravujte svoje projekty bez akýchkoľvek obáv s kolegami alebo externými partnermi.

Máme zľavy pre verných klientov

Vernostné
zľavy

Verní klienti u nás automaticky získavajú 15 % zľavu na každú ďalšiu objednávku.

My Vás nebudeme obmedzovať

Bez
obmedzení

Neobmedzujeme počet databáz, e-mailov, ftp a ani prenos dát.

Hosting pre WordPress

WordPress
na 1 klik

Nainštalujte si obľúbené redakčné systémy rýchlo a jednoducho.

Referencie

Spokojní zákazníci

Pozrite sa, čo o nás povedali naši klienti. Neváhajte a pridajte sa k nám ešte dnes.

Auto 100
Bystricoviny
eCall Slovakia
Filip Jančík
Frost
Merkury Broker
Mi:Su Design
Mesto Nitra
Pro Clienta
Schneider Lekáreň
Vego Marketing
Mesto Zlaté Moravce

Všetky ceny sú uvádzané bez DPH
© 2006 - 2026, Inet.sk, s. r. o., Všetky práva vyhradené

Na našej stránke používame "cookies". Vďaka nim sledujeme návštevnosť, prispôsobujeme reklamu a používateľské nastavenia, čo zlepšuje Váš zážitok z našej stránky. Súhlasíte s ich spracovaním?
Vlastné nastavenia cookies