V základnom pracovnom rozhraní ponúka OpenOffice.org niekoľko možností formátovania textu, ako je tučné písmo, kurzíva či podčiarknuté písmo. Okrem toho si môžete nastaviť ďalšie parametre (reliéf, prečiarknutie, podčiarknutie, nadčiarknutie) v štýloch odseku alebo v textových štýloch. Medzi týmito voľbami však nenájdeme napr. čírku písma a navyše nie každému vyhovuje napr. práca s textovými štýlmi, hlavne ak potrebujú nastaviť vyššie uvedené parametre rýchlo. Z tohto dôvodu si ukážeme makro, ktoré pracuje nad označeným textom a dokáže uvedené parametre nastaviť.
Samozrejme, pre optimálnu prácu si zadefinujeme pracovné okno, v ktorom si budeme môcť nastaviť uvedené parametre formátu textu tak, ako nám to vyhovuje a potom, po označení príslušného textu na jednoduché stlačenie tlačidla „Nastav“ nastavíme príslušné parametre. Pravdaže, rozšírenie musíme naprogramovať tak, aby sa nastavením nezrušili už nastavené veci,pretože označený text už môže mať niektoré veci v rôznych častiach rôzne nastavené (napr. kurzívu). Preto pri každom nastavení musíme určiť, či sa má vôbec aplikovať.

V úvodnej časti si najprv ukážeme makrá pre otvorenie pracovného okna, jeho prípadnú jazykovú lokalizáciu a inicializáciu (budeme predpokladať, že sa nič nebude nastavovať). Vlastné nastavovanie si potom ukážeme v nasledujúcom dieli tohto seriálu o týždeň.
dim oDlgn as object
REM Funkcia pre zistenie jazyka 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(trim(MasterKey.getByName("ooLocale")),2) '"sk", "cs", ...
end function
REM Procedúra pre nastavenie jazyka dialógu
Sub Set_jazyk_dialogu(oDlgj, sNazov, sZahlavie)
dim riadok, premenna, definicia as string
dim rovna as integer
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)
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))
if premenna=sZahlavie then
oDlgj.Title=definicia
else
oDlgj.model.getByName(premenna).setpropertyvalue("Label",definicia)
endif
end if
loop
' Zatvorenie definičného súboru – namiesto close #subor
inStream.closeInput
inFile.closeInput
end if
end sub
REM Procedúra volaná pri stlačťení tlačidla "Koniec"
sub Koniec_Nastav
oDlgn.setVisible(false )' Zneviditeľnenie dialógu
end sub
REM Otvorenie dialógového okna pre nastavenie
sub Nastav_format
dim kde$, nazov$
DialogLibraries.LoadLibrary("JP_format_textu")
if not isnull(oDlgn) then exit sub ' Ak je okno otvorené, neotvárame druhé
oDlgn=CreateUnoDialog(DialogLibraries.JP_format_textu.Dialog_nastav)
kde=basiclibraries.getLibraryLinkURL("JP_format_textu") ' Adresár, kde je rozšírenie nainštalované
nazov=left(kde,len(kde)-10)+"jp_format_textu_"+Jazyk_OOo+".txt" ' Súbor s jazykovou lokalizáciou
Set_jazyk_dialogu(oDlgn, nazov, "Dialog_nastav") ' Nastavenie jazyka dialógu
' Štandardne nebudeme nastavovať nič
oDlgn.model.FontSlantCheck.State=0
oDlgn.model.FontWeightCheck.State=0
oDlgn.model.FontWidthCheck.State=0
oDlgn.model.FontReliefCheck.State=0
oDlgn.model.FontStrikeoutCheck.State=0
oDlgn.model.FontUnderlineCheck.State=0
oDlgn.model.FontOverlineCheck.State=0
oDlgn.setVisible(true) ' zviditeľnenie dialógu – namiesto oDlgn.Execute(), aby sa dalo paralelne pracovať s textom
while oDlgn.isVisible() ' Cyklus, ktorý čaká na stlačenie klávesy "Koniec" v dialógu (kým je dialóg viditeľný)
wait 500 ' Časová medzera 500 milisekúnd (0,5 sec) na to, aby sa dalo paralelne pracovať s dokumentom
wend
oDlgn.dispose() ' Zatvorenie dialógu
end sub