Vlastná definícia panelov nástrojov je rozdelená do viacerých definičných súborov. Základná definícia je už v súbore manifest.xml, kde je uvedený zoznam definičných súborov pre rôzne moduly OpenOffice.org. Napríklad, ak budete definovať panel nástrojov pre modul Writer aj pre modul Calc, musí tento súbor obsahovať nasledujúce riadky:
<manifest:file-entry manifest:full-path="WriterWindowState.xcu" manifest:media-type="application/vnd.sun.star.configuration-data"/> <manifest:file-entry manifest:full-path="CalcWindowState.xcu" manifest:media-type="application/vnd.sun.star.configuration-data"/>
Zoznam definičných súborov v manifest.xml
Význam týchto zápisov už nemusíme vysvetľovať, pretože tomu sme sa venovali v úvodných častiach tohto seriálu. Následne v súboroch WriterWindowState.xcu a CalcWindowState.xcu zadefinujete panely nástrojov, ktoré v nich budete používať. Pri tejto definícii ich môžete práve v tomto súbore zároveň jazykovo lokalizovať.
V nasledujúcom príklade sú zadefinované dva panely nástrojov, pričom sú obidva naraz viditeľné ako v module Writer, tak aj v module Calc. Zároveň sú jazykovo lokalizované ich názvy do slovenčiny, češtiny a angličtiny. Prvý panel je určený pre vkladanie údajov o dátume a čase v slovenskom jazyku, druhý v jazyku českom.
Jazyková lokalizácia panelu nástrojov
Súbor WriterWindowState.xcu potom musí obsahovať takéto údaje:
<?xml version='1.0' encoding='UTF-8'?> <oor:component-data xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" oor:name="WriterWindowState" oor:package="org.openoffice.Office.UI"> <node oor:name="UIElements"> <node oor:name="States"> <node oor:name="private:resource/toolbar/addon_name.JP_date_time.addon.JP_date_time_SK" oor:op="replace"> <prop oor:name="UIName" oor:type="xs:string"> <value xml:lang="sk">JP Vloženie slovenského dátumu a času</value> <value xml:lang="cs">JP Vložení slovenského datumu a času</value> <value xml:lang="en">JP Insert Slovak date and time</value> </prop> </node> <node oor:name="private:resource/toolbar/addon_name.JP_date_time.addon.JP_date_time_CZ" oor:op="replace"> <prop oor:name="UIName" oor:type="xs:string"> <value xml:lang="sk">JP Vloženie českého dátumu a času</value> <value xml:lang="cs">JP Vložení českého datumu a času</value> <value xml:lang="en">JP Insert Czech date and time</value> </prop> </node> </node> </node> </oor:component-data>
Pre vysvetlenie musíme uviesť, že v riadku <node oor:name="private:resource/toolbar/addon_name.JP_date_time.addon.JP_date_time_SK" oor:op="replace">
je zadefinovaný prvý panel nástrojov s interným označením „JP_date_time_SK“, ktorý sa však v zozname panelov nástrojov bude zobrazovať pod názvom, ktorý závisí od pracovného jazyka OpenOffice.org, čo je nastavené v týchto riadkoch:
<value xml:lang="sk">JP Vloženie slovenského dátumu a času</value> <value xml:lang="cs">JP Vložení slovenského datumu a času</value> <value xml:lang="en">JP Insert Slovak date and time</value>
V riadku <node oor:name="private:resource/toolbar/addon_name.JP_date_time.addon.JP_date_time_CZ" oor:op="replace">
je zadefinovaný druhý panel nástrojov s interným označením „JP_date_time_CZ“, ktorý sa bude v zozname panelov nástrojov zobrazovať pod jedným z týchto názvov:
<value xml:lang="sk">JP Vloženie českého dátumu a času</value> <value xml:lang="cs">JP Vložení českého datumu a času</value> <value xml:lang="en">JP Insert Czech date and time</value>
Jazykovo lokalizované zobrazenie názvu panelu nástrojov
Pokiaľ chcete, aby sa presne tieto isté panely nástrojov zobrazovali aj v module Calc, potom súbor CalcWindowState.xcu musí obsahovať takéto údaje:
<?xml version='1.0' encoding='UTF-8'?> <oor:component-data xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" oor:name="CalcWindowState" oor:package="org.openoffice.Office.UI"> <node oor:name="UIElements"> <node oor:name="States"> <node oor:name="private:resource/toolbar/addon_name.JP_date_time.addon.JP_date_time_SK" oor:op="replace"> <prop oor:name="UIName" oor:type="xs:string"> <value xml:lang="sk">Vloženie slovenského dátumu a času</value> <value xml:lang="cs">Vložení slovenského datumu a času</value> <value xml:lang="en">Insert Slovak date and time</value> </prop> </node> <node oor:name="private:resource/toolbar/addon_name.JP_date_time.addon.JP_date_time_CZ" oor:op="replace"> <prop oor:name="UIName" oor:type="xs:string"> <value xml:lang="sk">Vloženie českého dátumu a času</value> <value xml:lang="cs">Vložení českého datumu a času</value> <value xml:lang="en">Insert Czech date and time</value> </prop> </node> </node> </node> </oor:component-data>
Ako vidíte, interné označenia panelov nástrojov sú úplne rovnaké, ale jazyková lokalizácia ich pomenovania (aby ste videli rôzne možnosti) nie je.
Vlastná definícia panelov nástrojov v addon.xcu
Teraz nezostáva nič iné, ako panely nástrojov zadefinovať v súbore addon.xcu, kde sa naraz definujú úplne všetky panely nástrojov pre všetky moduly OpenOffice.org. V uvedenom príklade obidva panely obsahujú päť tlačidiel, ktoré sú rozdelené dvomi pomocnými oddeľujúcimi čiarami:
<?xml version='1.0' encoding='UTF-8'?> <oor:node xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" oor:name="Addons" oor:package="org.openoffice.Office"> <node oor:name="AddonUI"> <node oor:name="OfficeToolBar"> <node oor:name="name.JP_date_time.addon.JP_date_time_SK" oor:op="replace"> <node oor:name="btn01s" oor:op="replace"> <prop oor:name="Context" oor:type="xs:string"> <value>com.sun.star.sheet.SpreadsheetDocument</value> </prop> <prop oor:name="Title" oor:type="xs:string"> <value xml:lang="sk">Vlož aktuálny čas</value> </prop> <prop oor:name="URL" oor:type="xs:string"> <value>macro:///JP_date_time.JP_date_time.Vloz_Cas</value> </prop> <prop oor:name="Target" oor:type="xs:string"> <value>_self</value> </prop> <prop oor:name="ImageIdentifier" oor:type="xs:string"> <value>%origin%/tlacidla/vlozcas</value> </prop> </node> <node oor:name="btn01t" oor:op="replace"> <prop oor:name="Context" oor:type="xs:string"> <value>com.sun.star.text.TextDocument</value> </prop> <prop oor:name="Title" oor:type="xs:string"> <value xml:lang="sk">Vlož aktuálny čas</value> </prop> <prop oor:name="URL" oor:type="xs:string"> <value>macro:///JP_date_time.JP_date_time.Vloz_Cas</value> </prop> <prop oor:name="Target" oor:type="xs:string"> <value>_self</value> </prop> <prop oor:name="ImageIdentifier" oor:type="xs:string"> <value>%origin%/tlacidla/vlozcas</value> </prop> </node> <node oor:name="btn01x" oor:op="replace"> <prop oor:name="URL" oor:type="xs:string"> <value>private:separator</value> </prop> </node> <node oor:name="btn02s" oor:op="replace"> <prop oor:name="Context" oor:type="xs:string"> <value>com.sun.star.sheet.SpreadsheetDocument</value> </prop> <prop oor:name="Title" oor:type="xs:string"> <value xml:lang="sk">Vlož aktuálny dátum ako dátum dd.mm.rr</value> </prop> <prop oor:name="URL" oor:type="xs:string"> <value>macro:///JP_date_time.JP_date_time.Vloz_Datum</value> </prop> <prop oor:name="Target" oor:type="xs:string"> <value>_self</value> </prop> <prop oor:name="ImageIdentifier" oor:type="xs:string"> <value>%origin%/tlacidla/vlozdatum</value> </prop> </node> <node oor:name="btn02t" oor:op="replace"> <prop oor:name="Context" oor:type="xs:string"> <value>com.sun.star.text.TextDocument</value> </prop> <prop oor:name="Title" oor:type="xs:string"> <value xml:lang="sk">Vlož aktuálny dátum dd.mm.rrrr</value> </prop> <prop oor:name="URL" oor:type="xs:string"> <value>macro:///JP_date_time.JP_date_time.Vloz_Datum</value> </prop> <prop oor:name="Target" oor:type="xs:string"> <value>_self</value> </prop> <prop oor:name="ImageIdentifier" oor:type="xs:string"> <value>%origin%/tlacidla/vlozdatum</value> </prop> </node> <node oor:name="btn03s" oor:op="replace"> <prop oor:name="Context" oor:type="xs:string"> <value>com.sun.star.sheet.SpreadsheetDocument</value> </prop> <prop oor:name="Title" oor:type="xs:string"> <value xml:lang="sk">Vlož aktuálny dátum ako text dd. mm. rrrr</value> </prop> <prop oor:name="URL" oor:type="xs:string"> <value>macro:///JP_date_time.JP_date_time.Vloz_Datum_text</value> </prop> <prop oor:name="Target" oor:type="xs:string"> <value>_self</value> </prop> <prop oor:name="ImageIdentifier" oor:type="xs:string"> <value>%origin%/tlacidla/vlozdatumt</value> </prop> </node> <node oor:name="btn03t" oor:op="replace"> <prop oor:name="Context" oor:type="xs:string"> <value>com.sun.star.text.TextDocument</value> </prop> <prop oor:name="Title" oor:type="xs:string"> <value xml:lang="sk">Vlož aktuálny dátum s medzerami dd. mm. rrrr</value> </prop> <prop oor:name="URL" oor:type="xs:string"> <value>macro:///JP_date_time.JP_date_time.Vloz_Datum_text</value> </prop> <prop oor:name="Target" oor:type="xs:string"> <value>_self</value> </prop> <prop oor:name="ImageIdentifier" oor:type="xs:string"> <value>%origin%/tlacidla/vlozdatumt</value> </prop> </node> <node oor:name="btn03x" oor:op="replace"> <prop oor:name="URL" oor:type="xs:string"> <value>private:separator</value> </prop> </node> <node oor:name="btn04s" oor:op="replace"> <prop oor:name="Context" oor:type="xs:string"> <value>com.sun.star.sheet.SpreadsheetDocument</value> </prop> <prop oor:name="Title" oor:type="xs:string"> <value xml:lang="sk">Vlož aktuálny dátum ako text dd. mesiac rrrr</value> </prop> <prop oor:name="URL" oor:type="xs:string"> <value>macro:///JP_date_time.Datum2Text_SK.Vloz_Datum_text_zaklad_SK</value> </prop> <prop oor:name="Target" oor:type="xs:string"> <value>_self</value> </prop> <prop oor:name="ImageIdentifier" oor:type="xs:string"> <value>%origin%/tlacidla/vlozdatumzsk</value> </prop> </node> <node oor:name="btn04t" oor:op="replace"> <prop oor:name="Context" oor:type="xs:string"> <value>com.sun.star.text.TextDocument</value> </prop> <prop oor:name="Title" oor:type="xs:string"> <value xml:lang="sk">Vlož aktuálny dátum dd. mesiac rrrr</value> </prop> <prop oor:name="URL" oor:type="xs:string"> <value>macro:///JP_date_time.Datum2Text_SK.Vloz_Datum_text_zaklad_SK</value> </prop> <prop oor:name="Target" oor:type="xs:string"> <value>_self</value> </prop> <prop oor:name="ImageIdentifier" oor:type="xs:string"> <value>%origin%/tlacidla/vlozdatumzsk</value> </prop> </node> <node oor:name="btn05s" oor:op="replace"> <prop oor:name="Context" oor:type="xs:string"> <value>com.sun.star.sheet.SpreadsheetDocument</value> </prop> <prop oor:name="Title" oor:type="xs:string"> <value xml:lang="sk">Vlož aktuálny dátum ako text dd. mesiaca rrrr</value> </prop> <prop oor:name="URL" oor:type="xs:string"> <value>macro:///JP_date_time.Datum2Text_SK.Vloz_Datum_text_tvar_SK</value> </prop> <prop oor:name="Target" oor:type="xs:string"> <value>_self</value> </prop> <prop oor:name="ImageIdentifier" oor:type="xs:string"> <value>%origin%/tlacidla/vlozdatumtsk</value> </prop> </node> <node oor:name="btn05t" oor:op="replace"> <prop oor:name="Context" oor:type="xs:string"> <value>com.sun.star.text.TextDocument</value> </prop> <prop oor:name="Title" oor:type="xs:string"> <value xml:lang="sk">Vlož aktuálny dátum dd. mesiaca rrrr</value> </prop> <prop oor:name="URL" oor:type="xs:string"> <value>macro:///JP_date_time.Datum2Text_SK.Vloz_Datum_text_tvar_SK</value> </prop> <prop oor:name="Target" oor:type="xs:string"> <value>_self</value> </prop> <prop oor:name="ImageIdentifier" oor:type="xs:string"> <value>%origin%/tlacidla/vlozdatumtsk</value> </prop> </node> </node> <node oor:name="name.JP_date_time.addon.JP_date_time_CZ" oor:op="replace"> <node oor:name="btn01s" oor:op="replace"> <prop oor:name="Context" oor:type="xs:string"> <value>com.sun.star.sheet.SpreadsheetDocument</value> </prop> <prop oor:name="Title" oor:type="xs:string"> <value xml:lang="sk">Vlož aktuálny čas</value> </prop> <prop oor:name="URL" oor:type="xs:string"> <value>macro:///JP_date_time.JP_date_time.Vloz_Cas</value> </prop> <prop oor:name="Target" oor:type="xs:string"> <value>_self</value> </prop> <prop oor:name="ImageIdentifier" oor:type="xs:string"> <value>%origin%/tlacidla/vlozcas</value> </prop> </node> <node oor:name="btn01t" oor:op="replace"> <prop oor:name="Context" oor:type="xs:string"> <value>com.sun.star.text.TextDocument</value> </prop> <prop oor:name="Title" oor:type="xs:string"> <value xml:lang="sk">Vlož aktuálny čas</value> </prop> <prop oor:name="URL" oor:type="xs:string"> <value>macro:///JP_date_time.JP_date_time.Vloz_Cas</value> </prop> <prop oor:name="Target" oor:type="xs:string"> <value>_self</value> </prop> <prop oor:name="ImageIdentifier" oor:type="xs:string"> <value>%origin%/tlacidla/vlozcas</value> </prop> </node> <node oor:name="btn01x" oor:op="replace"> <prop oor:name="URL" oor:type="xs:string"> <value>private:separator</value> </prop> </node> <node oor:name="btn02s" oor:op="replace"> <prop oor:name="Context" oor:type="xs:string"> <value>com.sun.star.sheet.SpreadsheetDocument</value> </prop> <prop oor:name="Title" oor:type="xs:string"> <value xml:lang="sk">Vlož aktuálny dátum ako dátum dd.mm.rr</value> </prop> <prop oor:name="URL" oor:type="xs:string"> <value>macro:///JP_date_time.JP_date_time.Vloz_Datum</value> </prop> <prop oor:name="Target" oor:type="xs:string"> <value>_self</value> </prop> <prop oor:name="ImageIdentifier" oor:type="xs:string"> <value>%origin%/tlacidla/vlozdatum</value> </prop> </node> <node oor:name="btn02t" oor:op="replace"> <prop oor:name="Context" oor:type="xs:string"> <value>com.sun.star.text.TextDocument</value> </prop> <prop oor:name="Title" oor:type="xs:string"> <value xml:lang="sk">Vlož aktuálny dátum dd.mm.rrrr</value> </prop> <prop oor:name="URL" oor:type="xs:string"> <value>macro:///JP_date_time.JP_date_time.Vloz_Datum</value> </prop> <prop oor:name="Target" oor:type="xs:string"> <value>_self</value> </prop> <prop oor:name="ImageIdentifier" oor:type="xs:string"> <value>%origin%/tlacidla/vlozdatum</value> </prop> </node> <node oor:name="btn03s" oor:op="replace"> <prop oor:name="Context" oor:type="xs:string"> <value>com.sun.star.sheet.SpreadsheetDocument</value> </prop> <prop oor:name="Title" oor:type="xs:string"> <value xml:lang="sk">Vlož aktuálny dátum ako text dd. mm. rrrr</value> </prop> <prop oor:name="URL" oor:type="xs:string"> <value>macro:///JP_date_time.JP_date_time.Vloz_Datum_text</value> </prop> <prop oor:name="Target" oor:type="xs:string"> <value>_self</value> </prop> <prop oor:name="ImageIdentifier" oor:type="xs:string"> <value>%origin%/tlacidla/vlozdatumt</value> </prop> </node> <node oor:name="btn03t" oor:op="replace"> <prop oor:name="Context" oor:type="xs:string"> <value>com.sun.star.text.TextDocument</value> </prop> <prop oor:name="Title" oor:type="xs:string"> <value xml:lang="sk">Vlož aktuálny dátum s medzerami dd. mm. rrrr</value> </prop> <prop oor:name="URL" oor:type="xs:string"> <value>macro:///JP_date_time.JP_date_time.Vloz_Datum_text</value> </prop> <prop oor:name="Target" oor:type="xs:string"> <value>_self</value> </prop> <prop oor:name="ImageIdentifier" oor:type="xs:string"> <value>%origin%/tlacidla/vlozdatumt</value> </prop> </node> <node oor:name="btn03x" oor:op="replace"> <prop oor:name="URL" oor:type="xs:string"> <value>private:separator</value> </prop> </node> <node oor:name="btn04s" oor:op="replace"> <prop oor:name="Context" oor:type="xs:string"> <value>com.sun.star.sheet.SpreadsheetDocument</value> </prop> <prop oor:name="Title" oor:type="xs:string"> <value xml:lang="sk">Vlož aktuálny dátum ako text dd. měsíc rrrr</value> </prop> <prop oor:name="URL" oor:type="xs:string"> <value>macro:///JP_date_time.Datum2Text_CZ.Vloz_Datum_text_zaklad_CZ</value> </prop> <prop oor:name="Target" oor:type="xs:string"> <value>_self</value> </prop> <prop oor:name="ImageIdentifier" oor:type="xs:string"> <value>%origin%/tlacidla/vlozdatumzcz</value> </prop> </node> <node oor:name="btn04t" oor:op="replace"> <prop oor:name="Context" oor:type="xs:string"> <value>com.sun.star.text.TextDocument</value> </prop> <prop oor:name="Title" oor:type="xs:string"> <value xml:lang="sk">Vlož aktuálny dátum dd. měsíc rrrr</value> </prop> <prop oor:name="URL" oor:type="xs:string"> <value>macro:///JP_date_time.Datum2Text_CZ.Vloz_Datum_text_zaklad_CZ</value> </prop> <prop oor:name="Target" oor:type="xs:string"> <value>_self</value> </prop> <prop oor:name="ImageIdentifier" oor:type="xs:string"> <value>%origin%/tlacidla/vlozdatumzcz</value> </prop> </node> <node oor:name="btn05s" oor:op="replace"> <prop oor:name="Context" oor:type="xs:string"> <value>com.sun.star.sheet.SpreadsheetDocument</value> </prop> <prop oor:name="Title" oor:type="xs:string"> <value xml:lang="sk">Vlož aktuálny dátum ako text dd. mésíca rrrr</value> </prop> <prop oor:name="URL" oor:type="xs:string"> <value>macro:///JP_date_time.Datum2Text_CZ.Vloz_Datum_text_tvar_CZ</value> </prop> <prop oor:name="Target" oor:type="xs:string"> <value>_self</value> </prop> <prop oor:name="ImageIdentifier" oor:type="xs:string"> <value>%origin%/tlacidla/vlozdatumtcz</value> </prop> </node> <node oor:name="btn05t" oor:op="replace"> <prop oor:name="Context" oor:type="xs:string"> <value>com.sun.star.text.TextDocument</value> </prop> <prop oor:name="Title" oor:type="xs:string"> <value xml:lang="sk">Vlož aktuálny dátum dd. měsíca rrrr</value> </prop> <prop oor:name="URL" oor:type="xs:string"> <value>macro:///JP_date_time.Datum2Text_CZ.Vloz_Datum_text_tvar_CZ</value> </prop> <prop oor:name="Target" oor:type="xs:string"> <value>_self</value> </prop> <prop oor:name="ImageIdentifier" oor:type="xs:string"> <value>%origin%/tlacidla/vlozdatumtcz</value> </prop> </node> </node> </node> </node> </oor:node>
Rozlíšenie, ktorého modulu OpenOffice.org sa príslušné tlačidlo (a pod ním ukrytá funkcia) týka, určujete pre modul Writer pomocou zápisov <value>com.sun.star.sheet.SpreadsheetDocument</value>
a pre modul Calc pomocou zápisov <value>com.sun.star.text.TextDocument</value>
.
Pokiaľ chcete opticky oddeliť tlačidlá v rámci jedného panelu, potom je potrebné, aby ste na príslušné miesto vložili oddeľovač pomocou takéhoto zápisu:
<node oor:name="btn03x" oor:op="replace"> <prop oor:name="URL" oor:type="xs:string"> <value>private:separator</value> </prop> </node>
Pravdaže, aj v pri tejto definícii môžete jazykovo lokalizovať pomocné texty (v príklade to však nie je uvedené), ktoré sa nachádzajú v zápisoch typu:
<prop oor:name="Title" oor:type="xs:string"> <value xml:lang="sk">Vlož aktuálny dátum dd. měsíca rrrr</value> </prop>
Zobrazený panel nástrojov
Uvedený príklad síce ukazuje úplne totožné panely nástrojov, je to však dostačujúci príklad aj na to, aby ste si už vedeli pripraviť panely úplne rozdielne, prípadne čiastočne zhodné.
Týmto sme ukončili možnosti, ktoré sa týkajú definície panelov nástrojov. Nabudúce sa budeme venovať možnostiam pridávania rozšírenia do menu OpenOffice.org.