Július Pastierik / 31. 07. 2008, 00:00
V už treťom pokračovaní makier pre prípravu slov do slovenského slovníka si ukážeme časť, kde sú definované globálne premenné a vlastná kontrola zadaného slova.
Na úvod dnešného dielu seriálu o makrách v OpenOffice.org, v ktorom si predstavujeme rozšírenie pre prípravu slov do slovenského slovníka si ukážeme definíciu globálnych premenných (ktoré sme už používali) a funkcie, pomocou ktorých „tvarujeme“ zadané slovo. V podstate sa na to využíva funkcia hľadania a výmeny, pretože podmienky sú definované ako regulárne výrazy. Je to teda praktická ukážka, ako sa dajú využiť takéto funkcie aj na pomerne komplikované účely.
global pfx_N_d(3,0) as string
global pfx_F_d(3,0) as string
global sfx_mz_d(3,0) as string
global sfx_Z_d(3,0) as string
global sfx_U_d(3,0) as string
global sfx_D_d(3,0) as string
global sfx_K_d(3,0) as string
global sfx_M_d(3,0) as string
global sfx_S_d(3,0) as string
global sfx_V_d(3,0) as string
global sfx_A_d(3,0) as string
global sfx_C_d(3,0) as string
global sfx_H_d(3,0) as string
global sfx_B_d(3,0) as string
global sfx_J_d(3,0) as string
global sfx_L_d(3,0) as string
global sfx_O_d(3,0) as string
global sfx_Q_d(3,0) as string
global sfx_Y_d(3,0) as string
global sfx_I_d(3,0) as string
global sfx_P_d(3,0) as string
global sfx_X_d(3,0) as string
global sfx_E_d(3,0) as string
global sfx_W_d(3,0) as string
global sfx_T_d(3,0) as string
global sfx_R_d(3,0) as string
global sfx_mb_d(3,0) as string
global sfx_c_c_d(3,0) as string
global sfx_mo_d(3,0) as string
global pfx_N_p as long
global pfx_F_p as long
global sfx_mz_p as long
global sfx_Z_p as long
global sfx_U_p as long
global sfx_D_p as long
global sfx_K_p as long
global sfx_M_p as long
global sfx_S_p as long
global sfx_V_p as long
global sfx_A_p as long
global sfx_C_p as long
global sfx_H_p as long
global sfx_B_p as long
global sfx_J_p as long
global sfx_L_p as long
global sfx_O_p as long
global sfx_Q_p as long
global sfx_Y_p as long
global sfx_I_p as long
global sfx_P_p as long
global sfx_X_p as long
global sfx_E_p as long
global sfx_W_p as long
global sfx_T_p as long
global sfx_R_p as long
global sfx_mb_p as long
global sfx_c_c_p as long
global sfx_mo_p as long
global def_pfx_sfx as integer
global oDialog_slovnik as object
global nacitana_definicia as boolean
function oNovy_subor()
dim url as string
url="private:factory/swriter"
oNovy_subor=StarDesktop.loadComponentFromURL(url, "_blank", 0, Array())
end function
function fZamen_Vo_Vnutri (V_Com, Co, Za as string) as string
dim pom as string
dim i, j as long
pom=V_Com
i=instr(V_Com,Co)
j=len(V_Com)-i-len(Co)+1
if i>0 then
pom=left(V_Com,i-1)+Za
if j>0 then
pom=pom+right(V_Com,j)
end if
end if
fZamen_Vo_Vnutri=pom
end function
sub kon_zoznam (odokument, slovo, sufix, kolko)
dim kurzor, nasiel, oVymen as object
dim pomslovo, co, za as string
dim i as integer
pomslovo=slovo+" "
oVymen=odokument.createSearchDescriptor()
oVymen.SearchRegularExpression=true
oVymen.SearchWords=false
oVymen.SearchCaseSensitive=false
kurzor=odokument.currentcontroller.getViewCursor()
' Základné slovo
kurzor.gotoStart(false)
kurzor.setstring(pomslovo)
kurzor.gotoStart(false)
' Sufixy
for i=1 to kolko
kurzor.gotoStart(false)
kurzor.setstring(pomslovo)
kurzor.gotoStart(true)
oVymen.SearchString=sufix(3,i)+">"
nasiel=odokument.findFirst(oVymen)
if NOT isNull(nasiel) then
co=sufix(1,i)
za=sufix(2,i)
if co="" then
co=nasiel.String
za=co+sufix(2,i)
endif
if right(trim(pomslovo),len(co))=co then
nasiel.String=fZamen_Vo_Vnutri(nasiel.String,co,za)
else
kurzor.setstring("")
endif
else
kurzor.setstring("")
end if
next i
end sub
sub spracuj_sufixy(odokument, slovo)
kon_zoznam(odokument, slovo, array(), 0)
if oDialog_slovnik.model.sfx_mz.State=1 then kon_zoznam (odokument, slovo, sfx_mz_d, sfx_mz_p)
if oDialog_slovnik.model.sfx_Z.State=1 then kon_zoznam (odokument, slovo, sfx_Z_d, sfx_Z_p)
if oDialog_slovnik.model.sfx_U.State=1 then kon_zoznam (odokument, slovo, sfx_U_d, sfx_U_p)
if oDialog_slovnik.model.sfx_D.State=1 then kon_zoznam (odokument, slovo, sfx_D_d, sfx_D_p)
if oDialog_slovnik.model.sfx_K.State=1 then kon_zoznam (odokument, slovo, sfx_K_d, sfx_K_p)
if oDialog_slovnik.model.sfx_M.State=1 then kon_zoznam (odokument, slovo, sfx_M_d, sfx_M_p)
if oDialog_slovnik.model.sfx_S.State=1 then kon_zoznam (odokument, slovo, sfx_S_d, sfx_S_p)
if oDialog_slovnik.model.sfx_V.State=1 then kon_zoznam (odokument, slovo, sfx_V_d, sfx_V_p)
if oDialog_slovnik.model.sfx_A.State=1 then kon_zoznam (odokument, slovo, sfx_A_d, sfx_A_p)
if oDialog_slovnik.model.sfx_C.State=1 then kon_zoznam (odokument, slovo, sfx_C_d, sfx_C_p)
if oDialog_slovnik.model.sfx_H.State=1 then kon_zoznam (odokument, slovo, sfx_H_d, sfx_H_p)
if oDialog_slovnik.model.sfx_B.State=1 then kon_zoznam (odokument, slovo, sfx_B_d, sfx_B_p)
if oDialog_slovnik.model.sfx_J.State=1 then kon_zoznam (odokument, slovo, sfx_J_d, sfx_J_p)
if oDialog_slovnik.model.sfx_L.State=1 then kon_zoznam (odokument, slovo, sfx_L_d, sfx_L_p)
if oDialog_slovnik.model.sfx_O.State=1 then kon_zoznam (odokument, slovo, sfx_O_d, sfx_O_p)
if oDialog_slovnik.model.sfx_Q.State=1 then kon_zoznam (odokument, slovo, sfx_Q_d, sfx_Q_p)
if oDialog_slovnik.model.sfx_Y.State=1 then kon_zoznam (odokument, slovo, sfx_Y_d, sfx_Y_p)
if oDialog_slovnik.model.sfx_I.State=1 then kon_zoznam (odokument, slovo, sfx_I_d, sfx_I_p)
if oDialog_slovnik.model.sfx_P.State=1 then kon_zoznam (odokument, slovo, sfx_P_d, sfx_P_p)
if oDialog_slovnik.model.sfx_X.State=1 then kon_zoznam (odokument, slovo, sfx_X_d, sfx_X_p)
if oDialog_slovnik.model.sfx_E.State=1 then kon_zoznam (odokument, slovo, sfx_E_d, sfx_E_p)
if oDialog_slovnik.model.sfx_W.State=1 then kon_zoznam (odokument, slovo, sfx_W_d, sfx_W_p)
if oDialog_slovnik.model.sfx_T.State=1 then kon_zoznam (odokument, slovo, sfx_T_d, sfx_T_p)
if oDialog_slovnik.model.sfx_R.State=1 then kon_zoznam (odokument, slovo, sfx_R_d, sfx_R_p)
if oDialog_slovnik.model.sfx_mb.State=1 then kon_zoznam (odokument, slovo, sfx_mb_d, sfx_mb_p)
if oDialog_slovnik.model.sfx_mo.State=1 then kon_zoznam (odokument, slovo, sfx_mo_d, sfx_mo_p)
if oDialog_slovnik.model.sfx_c_c.State=1 then kon_zoznam (odokument, slovo, sfx_c_c_d, sfx_c_c_p)
end sub
sub vytvor_zoznam
dim dokument, kurzor, nasiel, oVymen as object
dim url, slovo, pomslovo as string
dim i as integer
slovo=trim(oDialog_slovnik.model.Slovo_slovnika.Text)
if slovo<>"" then
url="private:factory/swriter"
dokument=StarDesktop.loadComponentFromURL(url, "_blank", 0, Array())
' Základné slovo
spracuj_sufixy(dokument, slovo)
' Pre všetky prefixy
if oDialog_slovnik.model.pfx_N.State=1 then
for i=1 to pfx_N_p
spracuj_sufixy(dokument, pfx_N_d(2,i)+slovo)
next i
endif
if oDialog_slovnik.model.pfx_F.State=1 then
for i=1 to pfx_F_p
spracuj_sufixy(dokument, pfx_F_d(2,i)+slovo)
next i
endif
if oDialog_slovnik.model.spfx_do.State=1 then
spracuj_sufixy(dokument, "do"+slovo)
if oDialog_slovnik.model.spfx_ne_do.State=1 then
spracuj_sufixy(dokument, "nedo"+slovo)
endif
endif
if oDialog_slovnik.model.spfx_na.State=1 then
spracuj_sufixy(dokument, "na"+slovo)
if oDialog_slovnik.model.spfx_ne_na.State=1 then
spracuj_sufixy(dokument, "nena"+slovo)
endif
endif
if oDialog_slovnik.model.spfx_nad.State=1 then
spracuj_sufixy(dokument, "nad"+slovo)
if oDialog_slovnik.model.spfx_ne_nad.State=1 then
spracuj_sufixy(dokument, "nenad"+slovo)
endif
endif
if oDialog_slovnik.model.spfx_o.State=1 then
spracuj_sufixy(dokument, "o"+slovo)
if oDialog_slovnik.model.spfx_ne_o.State=1 then
spracuj_sufixy(dokument, "neo"+slovo)
endif
endif
if oDialog_slovnik.model.spfx_ob.State=1 then
spracuj_sufixy(dokument, "ob"+slovo)
if oDialog_slovnik.model.spfx_ne_ob.State=1 then
spracuj_sufixy(dokument, "neob"+slovo)
endif
endif
if oDialog_slovnik.model.spfx_po.State=1 then
spracuj_sufixy(dokument, "po"+slovo)
if oDialog_slovnik.model.spfx_ne_po.State=1 then
spracuj_sufixy(dokument, "nepo"+slovo)
endif
endif
if oDialog_slovnik.model.spfx_pre.State=1 then
spracuj_sufixy(dokument, "pre"+slovo)
if oDialog_slovnik.model.spfx_ne_pre.State=1 then
spracuj_sufixy(dokument, "nepre"+slovo)
endif
endif
if oDialog_slovnik.model.spfx_pri.State=1 then
spracuj_sufixy(dokument, "pri"+slovo)
if oDialog_slovnik.model.spfx_ne_pri.State=1 then
spracuj_sufixy(dokument, "nepri"+slovo)
endif
endif
if oDialog_slovnik.model.spfx_spolu.State=1 then
spracuj_sufixy(dokument, "spolu"+slovo)
if oDialog_slovnik.model.spfx_ne_spolu.State=1 then
spracuj_sufixy(dokument, "nespolu"+slovo)
endif
endif
if oDialog_slovnik.model.spfx_roz.State=1 then
spracuj_sufixy(dokument, "roz"+slovo)
if oDialog_slovnik.model.spfx_ne_roz.State=1 then
spracuj_sufixy(dokument, "neroz"+slovo)
endif
endif
if oDialog_slovnik.model.spfx_spo.State=1 then
spracuj_sufixy(dokument, "spo"+slovo)
if oDialog_slovnik.model.spfx_ne_spo.State=1 then
spracuj_sufixy(dokument, "nespo"+slovo)
endif
endif
if oDialog_slovnik.model.spfx_u.State=1 then
spracuj_sufixy(dokument, "u"+slovo)
if oDialog_slovnik.model.spfx_ne_u.State=1 then
spracuj_sufixy(dokument, "neu"+slovo)
endif
endif
if oDialog_slovnik.model.spfx_vy.State=1 then
spracuj_sufixy(dokument, "vy"+slovo)
if oDialog_slovnik.model.spfx_ne_vy.State=1 then
spracuj_sufixy(dokument, "nevy"+slovo)
endif
endif
if oDialog_slovnik.model.spfx_vy_y.State=1 then
spracuj_sufixy(dokument, "vý"+slovo)
if oDialog_slovnik.model.spfx_ne_vy_y.State=1 then
spracuj_sufixy(dokument, "nevý"+slovo)
endif
endif
if oDialog_slovnik.model.spfx_z.State=1 then
spracuj_sufixy(dokument, "z"+slovo)
if oDialog_slovnik.model.spfx_ne_z.State=1 then
spracuj_sufixy(dokument, "nez"+slovo)
endif
endif
if oDialog_slovnik.model.spfx_za.State=1 then
spracuj_sufixy(dokument, "za"+slovo)
if oDialog_slovnik.model.spfx_ne_za.State=1 then
spracuj_sufixy(dokument, "neza"+slovo)
endif
endif
endif
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