Difference between revisions of "User:Arielch/Internship/XML file format"

From Apache OpenOffice Wiki
Jump to: navigation, search
(ContextMenu DTD)
(MN_TEXT_POPUPMENU: Updated XML to reflect new DTD)
 
(9 intermediate revisions by the same user not shown)
Line 4: Line 4:
 
* Study XLink: [http://www.w3.org/TR/xlink/ XML Linking Language (XLink) Version 1.0]
 
* Study XLink: [http://www.w3.org/TR/xlink/ XML Linking Language (XLink) Version 1.0]
 
* Design the DTD: based on [http://hg.services.openoffice.org/DEV300/file/DEV300_m86/framework/dtd/menubar.dtd menubar.dtd]
 
* Design the DTD: based on [http://hg.services.openoffice.org/DEV300/file/DEV300_m86/framework/dtd/menubar.dtd menubar.dtd]
* Check the validity? all context menus should pass <tt>xmllint --valid</tt>
+
* Check the validity: all context menus should pass <tt>xmllint --valid</tt>
  
 
= ContextMenu DTD =  
 
= ContextMenu DTD =  
Line 37: Line 37:
 
-->
 
-->
  
<!ELEMENT contextmenu:contextmenu (contextmenu:menu*)>
+
<!ELEMENT contextmenu:contextmenu (contextmenu:popupmenu)>
 
<!ATTLIST contextmenu:contextmenu
 
<!ATTLIST contextmenu:contextmenu
 
     xmlns:contextmenu  CDATA #FIXED "http://openoffice.org/2001/contextmenu"
 
     xmlns:contextmenu  CDATA #FIXED "http://openoffice.org/2001/contextmenu"
     xmlns:xlink        CDATA #FIXED "http://www.w3.org/1999/xlink"
+
     xmlns:xlink        CDATA #FIXED "http://www.w3.org/1999/xlink">
>
+
 
 +
<!ELEMENT contextmenu:popupmenu (contextmenu:menuitem | contextmenu:menuseparator | contextmenu:menu)*>
 +
 
 
<!ELEMENT contextmenu:menu (contextmenu:popupmenu)>
 
<!ELEMENT contextmenu:menu (contextmenu:popupmenu)>
 
<!ATTLIST contextmenu:menu
 
<!ATTLIST contextmenu:menu
 
     xlink:href  CDATA #REQUIRED
 
     xlink:href  CDATA #REQUIRED
>
+
    contextmenu:helpid CDATA #IMPLIED
 
+
    contextmenu:label  CDATA #IMPLIED
<!ELEMENT contextmenu:popupmenu (contextmenu:menuitem | contextmenu:menuseparator | contextmenu:menu)* >
+
    contextmenu:style  CDATA #IMPLIED>
  
<!ELEMENT contextmenu:menuitem  EMPTY >
+
<!ELEMENT contextmenu:menuitem  EMPTY>
 
<!ATTLIST contextmenu:menuitem
 
<!ATTLIST contextmenu:menuitem
 
     xlink:href  CDATA #REQUIRED
 
     xlink:href  CDATA #REQUIRED
 
     contextmenu:helpid CDATA #IMPLIED
 
     contextmenu:helpid CDATA #IMPLIED
 
     contextmenu:label  CDATA #IMPLIED
 
     contextmenu:label  CDATA #IMPLIED
     contextmenu:style  CDATA #IMPLIED
+
     contextmenu:style  CDATA #IMPLIED>
>
+
  
<!ELEMENT contextmenu:menuseparator  EMPTY >
+
<!ELEMENT contextmenu:menuseparator  EMPTY>
  
 
</source>
 
</source>
Line 69: Line 70:
 
*** the attribute menu:style is missing
 
*** the attribute menu:style is missing
 
*** the element menu:menu is defined to have only one child element of type menu:menupopup, but this fails, for example, in Writer's menubar.xml with <menu:menu menu:id=".uno:ScriptOrganizer"/>
 
*** the element menu:menu is defined to have only one child element of type menu:menupopup, but this fails, for example, in Writer's menubar.xml with <menu:menu menu:id=".uno:ScriptOrganizer"/>
 +
 +
== Menu Item Style ==
 +
 +
The attribute contextmenu:style is defined as unparsed character data. It may contain one or more of the following styles:
 +
 +
* text  (corresponds to <idlml>com.sun.star.ui.ItemStyle:TEXT</idlml>)
 +
* image (corresponds to <idlml>com.sun.star.ui.ItemStyle:ICON</idlml>)
 +
* radio (corresponds to <idlml>com.sun.star.ui.ItemStyle:RADIO_CHECK</idlml>)
 +
 +
Two ore more styles must be combined with a plus sign, like "text+image+radio" (although the [http://hg.services.openoffice.org/DEV300/file/DEV300_m85/framework/source/xml/menudocumenthandler.cxx#l431 MenuBar reader] handles this, it does not seem to be used in any XML file; the only style explicitly indicated is "radio".
  
 
= Examples =
 
= Examples =
Line 74: Line 85:
 
== sc ==
 
== sc ==
 
=== RID_POPUP_EDIT ===
 
=== RID_POPUP_EDIT ===
 +
 +
The following is the XML version of the Menu structure described in the resource file [http://hg.services.openoffice.org/DEV300/file/DEV300_m85/sc/source/ui/src/popup.src#l296 sc/source/ui/src/popup.src].
 +
 
<source lang=xml>
 
<source lang=xml>
 
<?xml version="1.0" encoding="UTF-8"?>
 
<?xml version="1.0" encoding="UTF-8"?>
 
<!DOCTYPE contextmenu:contextmenu SYSTEM "contextmenu.dtd">
 
<!DOCTYPE contextmenu:contextmenu SYSTEM "contextmenu.dtd">
 
<contextmenu:contextmenu xmlns:contextmenu="http://openoffice.org/2001/contextmenu" xmlns:xlink="http://www.w3.org/1999/xlink">
 
<contextmenu:contextmenu xmlns:contextmenu="http://openoffice.org/2001/contextmenu" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- the ROOT menu must also have locator attribute
+
     <contextmenu:popupmenu>
        Choose one, like menubar.xml, where menu:menubar id is dummy text?
+
         <contextmenu:menuitem xlink:href=".uno:ResetAttributes"/>
  -->
+
        <contextmenu:menuseparator/>
     <contextmenu:menu xlink:href="private:resource/contextmenu/edit" >
+
        <!-- Menu item controlled by PopupMenuController are NOT treated special
         <contextmenu:popupmenu>
+
                see in Writer menubar:
            <contextmenu:menuitem xlink:href=".uno:ResetAttributes" />
+
                <menu:menuitem menu:id=".uno:SetLanguageSelectionMenu"/>
            <contextmenu:menuseparator />
+
                <menu:menuitem menu:id=".uno:SetLanguageParagraphMenu"/>
            <!-- Menu item controlled by PopupMenuController are NOT treated special
+
                <menu:menuitem menu:id=".uno:SetLanguageAllTextMenu"/>
                see in Writer menubar:
+
        -->
                    <menu:menuitem menu:id=".uno:SetLanguageSelectionMenu"/>
+
        <contextmenu:menuitem xlink:href=".uno:CharFontName"/>
                    <menu:menuitem menu:id=".uno:SetLanguageParagraphMenu"/>
+
        <contextmenu:menuitem xlink:href=".uno:FontHeight"/>
                    <menu:menuitem menu:id=".uno:SetLanguageAllTextMenu"/>
+
        <!-- PROBLEM: submenus usually have no command URL
            -->
+
            RID_MN_FORMAT_STYLE has no UNO command URL of course
            <contextmenu:menuitem xlink:href=".uno:CharFontName" />
+
        -->
            <contextmenu:menuitem xlink:href=".uno:FontHeight" />
+
        <contextmenu:menu xlink:href=".uno:CellTextStyleMenu" > <!-- fictitious, but à la Writer -->
            <!-- PROBLEM: submenus usually have no command URL
+
            <contextmenu:popupmenu>
                RID_MN_FORMAT_STYLE has no UNO command URL of course
+
                <contextmenu:menuitem xlink:href=".uno:Bold"/>
            -->
+
                <contextmenu:menuitem xlink:href=".uno:Italic"/>
            <contextmenu:menu xlink:href=".uno:CellTextStyleMenu" > <!-- fictitious, but à la Writer -->
+
                <contextmenu:menuitem xlink:href=".uno:Overline"/>
                <contextmenu:popupmenu>
+
                <contextmenu:menuitem xlink:href=".uno:Underline"/>
                    <contextmenu:menuitem xlink:href=".uno:Bold" />
+
                <contextmenu:menuitem xlink:href=".uno:UnderlineDouble"/>
                    <contextmenu:menuitem xlink:href=".uno:Italic" />
+
                <contextmenu:menuitem xlink:href=".uno:Strikeout"/>
                    <contextmenu:menuitem xlink:href=".uno:Overline" />
+
                <contextmenu:menuitem xlink:href=".uno:Shadowed"/>
                    <contextmenu:menuitem xlink:href=".uno:Underline" />
+
                <contextmenu:menuitem xlink:href=".uno:OutlineFont"/>
                    <contextmenu:menuitem xlink:href=".uno:UnderlineDouble" />
+
                <contextmenu:menuseparator/>
                    <contextmenu:menuitem xlink:href=".uno:Strikeout" />
+
                <contextmenu:menuitem xlink:href=".uno:SuperScript"/>
                    <contextmenu:menuitem xlink:href=".uno:Shadowed" />
+
                <contextmenu:menuitem xlink:href=".uno:SubScript"/>
                    <contextmenu:menuitem xlink:href=".uno:OutlineFont" />
+
            </contextmenu:popupmenu>
                    <contextmenu:menuseparator />
+
        </contextmenu:menu>
                    <contextmenu:menuitem xlink:href=".uno:SuperScript" />
+
        <contextmenu:menuseparator/>
                    <contextmenu:menuitem xlink:href=".uno:SubScript" />
+
        <contextmenu:menuitem xlink:href=".uno:FontDialog"/>
                </contextmenu:popupmenu>
+
        <contextmenu:menuseparator/>
            </contextmenu:menu>
+
        <contextmenu:menuitem xlink:href=".uno:OpenHyperlinkOnCursor"/>
            <contextmenu:menuseparator />
+
        <contextmenu:menuseparator/>
            <contextmenu:menuitem xlink:href=".uno:FontDialog" />
+
        <!-- clipboard functions were added by the SfxPopupMenuManager -->
            <contextmenu:menuseparator />
+
        <contextmenu:menuitem xlink:href=".uno:Cut"/>
            <contextmenu:menuitem xlink:href=".uno:OpenHyperlinkOnCursor" />
+
        <contextmenu:menuitem xlink:href=".uno:Copy"/>
            <contextmenu:menuseparator />
+
        <contextmenu:menuitem xlink:href=".uno:Paste"/>
            <contextmenu:menuitem xlink:href=".uno:Cut" />
+
     </contextmenu:popupmenu>
            <contextmenu:menuitem xlink:href=".uno:Copy" />
+
            <contextmenu:menuitem xlink:href=".uno:Paste" />
+
        </contextmenu:popupmenu>
+
     </contextmenu:menu>
+
 
</contextmenu:contextmenu>
 
</contextmenu:contextmenu>
  
Line 126: Line 136:
  
 
=== RID_POPUP_CELLS ===
 
=== RID_POPUP_CELLS ===
 +
 +
The following is the XLM version of the Menu structure defined in the resource file [http://hg.services.openoffice.org/DEV300/file/DEV300_m85/sc/source/ui/src/popup.src#l39 sc/source/ui/src/popup.src].
 +
 
<source lang=xml>
 
<source lang=xml>
 
<?xml version="1.0" encoding="UTF-8"?>
 
<?xml version="1.0" encoding="UTF-8"?>
 
<!DOCTYPE contextmenu:contextmenu SYSTEM "contextmenu.dtd">
 
<!DOCTYPE contextmenu:contextmenu SYSTEM "contextmenu.dtd">
 
<contextmenu:contextmenu xmlns:contextmenu="http://openoffice.org/2001/contextmenu" xmlns:xlink="http://www.w3.org/1999/xlink">
 
<contextmenu:contextmenu xmlns:contextmenu="http://openoffice.org/2001/contextmenu" xmlns:xlink="http://www.w3.org/1999/xlink">
     <contextmenu:menu xlink:href="private:resource/contextmenu/cells" >
+
     <contextmenu:popupmenu>
         <contextmenu:popupmenu>
+
         <contextmenu:menuitem xlink:href=".uno:ResetAttributes"/>
            <contextmenu:menuitem xlink:href=".uno:ResetAttributes" />
+
        <contextmenu:menuseparator/>
            <contextmenu:menuseparator />
+
        <contextmenu:menuitem xlink:href=".uno:FormatCellDialog"/>
            <contextmenu:menuitem xlink:href=".uno:FormatCellDialog" />
+
        <contextmenu:menuseparator/>
            <contextmenu:menuseparator />
+
        <contextmenu:menuitem xlink:href=".uno:InsertCellsRight"/>
            <contextmenu:menuitem xlink:href=".uno:InsertCellsRight" />
+
        <contextmenu:menuitem xlink:href=".uno:DeleteCell"/>
            <contextmenu:menuitem xlink:href=".uno:DeleteCell" />
+
        <contextmenu:menuitem xlink:href=".uno:Delete"/>
            <contextmenu:menuitem xlink:href=".uno:Delete" />
+
        <contextmenu:menuseparator/>
            <contextmenu:menuseparator />
+
        <contextmenu:menuitem xlink:href=".uno:InsertAnnotation"/>
            <contextmenu:menuitem xlink:href=".uno:InsertAnnotation" />
+
        <contextmenu:menuitem xlink:href=".uno:DeleteNote"/>
            <contextmenu:menuitem xlink:href=".uno:DeleteNote" />
+
        <contextmenu:menuitem xlink:href=".uno:NoteVisible"/>
            <contextmenu:menuitem xlink:href=".uno:NoteVisible" />
+
        <contextmenu:menuseparator/>
            <contextmenu:menuseparator />
+
        <contextmenu:menuitem xlink:href=".uno:Cut"/>
            <contextmenu:menuitem xlink:href=".uno:Cut" />
+
        <contextmenu:menuitem xlink:href=".uno:Copy"/>
            <contextmenu:menuitem xlink:href=".uno:Copy" />
+
        <contextmenu:menuitem xlink:href=".uno:Paste"/>
            <contextmenu:menuitem xlink:href=".uno:Paste" />
+
        <contextmenu:menuitem xlink:href=".uno:PasteSpecial"/>
            <contextmenu:menuitem xlink:href=".uno:PasteSpecial" />
+
        <contextmenu:menuseparator/>
            <contextmenu:menuseparator />
+
        <contextmenu:menuitem xlink:href=".uno:DataSelect"/>
            <contextmenu:menuitem xlink:href=".uno:DataSelect" />
+
    </contextmenu:popupmenu>
        </contextmenu:popupmenu>
+
    </contextmenu:menu>
+
 
</contextmenu:contextmenu>
 
</contextmenu:contextmenu>
  
Line 158: Line 169:
 
== sw ==
 
== sw ==
 
=== MN_TEXT_POPUPMENU ===
 
=== MN_TEXT_POPUPMENU ===
 +
 +
The following is the XML version of the Menu structure defined in the resource file [http://hg.services.openoffice.org/DEV300/file/DEV300_m84/sw/source/ui/app/mn.src#l1111 sw/source/ui/app/mn.src] (and many other files it includes).
 +
 
<source lang=xml>
 
<source lang=xml>
 
<?xml version="1.0" encoding="UTF-8"?>
 
<?xml version="1.0" encoding="UTF-8"?>
 
<!DOCTYPE contextmenu:contextmenu SYSTEM "contextmenu.dtd">
 
<!DOCTYPE contextmenu:contextmenu SYSTEM "contextmenu.dtd">
 
<contextmenu:contextmenu xmlns:contextmenu="http://openoffice.org/2001/contextmenu" xmlns:xlink="http://www.w3.org/1999/xlink">
 
<contextmenu:contextmenu xmlns:contextmenu="http://openoffice.org/2001/contextmenu" xmlns:xlink="http://www.w3.org/1999/xlink">
     <contextmenu:menu xlink:href="private:resource/contextmenu/text" >
+
     <contextmenu:popupmenu>
         <contextmenu:popupmenu>
+
         <contextmenu:menuitem xlink:href=".uno:ResetAttributes"/>
            <contextmenu:menuitem xlink:href=".uno:ResetAttributes" />
+
        <contextmenu:menuseparator/>
            <contextmenu:menuseparator />
+
        <contextmenu:menuitem xlink:href=".uno:NumberingStart"/>
            <contextmenu:menuitem xlink:href=".uno:NumberingStart" />
+
        <contextmenu:menuitem xlink:href=".uno:ContinueNumbering"/>
            <contextmenu:menuitem xlink:href=".uno:ContinueNumbering" />
+
        <contextmenu:menuitem xlink:href=".uno:IncrementLevel"/>
            <contextmenu:menuitem xlink:href=".uno:IncrementLevel" />
+
        <contextmenu:menuitem xlink:href=".uno:DecrementLevel"/>
            <contextmenu:menuitem xlink:href=".uno:DecrementLevel" />
+
        <contextmenu:menuseparator/>
            <contextmenu:menuseparator />
+
        <contextmenu:menuitem xlink:href=".uno:CharFontName"/>
            <contextmenu:menuitem xlink:href=".uno:CharFontName" />
+
        <contextmenu:menuitem xlink:href=".uno:FontHeight"/>
            <contextmenu:menuitem xlink:href=".uno:FontHeight" />
+
        <contextmenu:menu xlink:href=".uno:StyleMenu">
            <contextmenu:menu xlink:href=".uno:StyleMenu">
+
            <contextmenu:popupmenu>
                <contextmenu:popupmenu>
+
                <contextmenu:menuitem xlink:href=".uno:Bold"/>
                    <contextmenu:menuitem xlink:href=".uno:Bold" />
+
                <contextmenu:menuitem xlink:href=".uno:Italic"/>
                    <contextmenu:menuitem xlink:href=".uno:Italic" />
+
                <contextmenu:menuitem xlink:href=".uno:Overline"/>
                    <contextmenu:menuitem xlink:href=".uno:Overline" />
+
                <contextmenu:menuitem xlink:href=".uno:Underline"/>
                    <contextmenu:menuitem xlink:href=".uno:Underline" />
+
                <contextmenu:menuitem xlink:href=".uno:Strikeout"/>
                    <contextmenu:menuitem xlink:href=".uno:Strikeout" />
+
                <contextmenu:menuitem xlink:href=".uno:Shadowed"/>
                    <contextmenu:menuitem xlink:href=".uno:Shadowed" />
+
                <contextmenu:menuitem xlink:href=".uno:OutlineFont"/>
                    <contextmenu:menuitem xlink:href=".uno:OutlineFont" />
+
                <contextmenu:menuseparator/>
                    <contextmenu:menuseparator />
+
                <contextmenu:menuitem xlink:href=".uno:SuperScript"/>
                    <contextmenu:menuitem xlink:href=".uno:SuperScript" />
+
                <contextmenu:menuitem xlink:href=".uno:SubScript"/>
                    <contextmenu:menuitem xlink:href=".uno:SubScript" />
+
            </contextmenu:popupmenu>
                </contextmenu:popupmenu>
+
        </contextmenu:menu>
            </contextmenu:menu>
+
        <contextmenu:menu xlink:href=".uno:AlignTextMenu">
            <contextmenu:menu xlink:href=".uno:AlignTextMenu">
+
            <contextmenu:popupmenu>
                <contextmenu:popupmenu>
+
                <contextmenu:menuitem xlink:href=".uno:LeftPara" contextmenu:style="radio"/>
                    <contextmenu:menuitem xlink:href=".uno:LeftPara" contextmenu:style="radio"/>
+
                <contextmenu:menuitem xlink:href=".uno:RightPara" contextmenu:style="radio"/>
                    <contextmenu:menuitem xlink:href=".uno:RightPara" contextmenu:style="radio"/>
+
                <contextmenu:menuitem xlink:href=".uno:CenterPara" contextmenu:style="radio"/>
                    <contextmenu:menuitem xlink:href=".uno:CenterPara" contextmenu:style="radio"/>
+
                <contextmenu:menuitem xlink:href=".uno:JustifyPara" contextmenu:style="radio"/>
                    <contextmenu:menuitem xlink:href=".uno:JustifyPara" contextmenu:style="radio"/>
+
            </contextmenu:popupmenu>
                </contextmenu:popupmenu>
+
        </contextmenu:menu>
            </contextmenu:menu>
+
        <contextmenu:menu xlink:href=".uno:LineSpacingMenu">
            <contextmenu:menu xlink:href=".uno:LineSpacingMenu">
+
            <contextmenu:popupmenu>
                <contextmenu:popupmenu>
+
                <contextmenu:menuitem xlink:href=".uno:SpacePara1" contextmenu:style="radio"/>
                    <contextmenu:menuitem xlink:href=".uno:SpacePara1" contextmenu:style="radio"/>
+
                <contextmenu:menuitem xlink:href=".uno:SpacePara15" contextmenu:style="radio"/>
                    <contextmenu:menuitem xlink:href=".uno:SpacePara15" contextmenu:style="radio"/>
+
                <contextmenu:menuitem xlink:href=".uno:SpacePara2" contextmenu:style="radio"/>
                    <contextmenu:menuitem xlink:href=".uno:SpacePara2" contextmenu:style="radio"/>
+
            </contextmenu:popupmenu>
                </contextmenu:popupmenu>
+
        </contextmenu:menu>
            </contextmenu:menu>
+
        <contextmenu:menuseparator/>
            <contextmenu:menuseparator />
+
        <contextmenu:menuitem xlink:href=".uno:FontDialog"/>
            <contextmenu:menuitem xlink:href=".uno:FontDialog"/>
+
        <contextmenu:menuitem xlink:href=".uno:ParagraphDialog"/>
            <contextmenu:menuitem xlink:href=".uno:ParagraphDialog"/>
+
        <contextmenu:menuitem xlink:href=".uno:PageDialog"/>
            <contextmenu:menuitem xlink:href=".uno:PageDialog"/>
+
        <contextmenu:menuitem xlink:href=".uno:BulletsAndNumberingDialog"/>
            <contextmenu:menuitem xlink:href=".uno:BulletsAndNumberingDialog"/>
+
        <contextmenu:menu xlink:href=".uno:TransliterateMenu">
            <contextmenu:menu xlink:href=".uno:TransliterateMenu">
+
            <contextmenu:popupmenu>
                <contextmenu:popupmenu>
+
                <contextmenu:menuitem xlink:href=".uno:ChangeCaseToSentenceCase"/>
                    <contextmenu:menuitem xlink:href=".uno:ChangeCaseToSentenceCase"/>
+
                <contextmenu:menuitem xlink:href=".uno:ChangeCaseToLower"/>
                    <contextmenu:menuitem xlink:href=".uno:ChangeCaseToLower"/>
+
                <contextmenu:menuitem xlink:href=".uno:ChangeCaseToUpper"/>
                    <contextmenu:menuitem xlink:href=".uno:ChangeCaseToUpper"/>
+
                <contextmenu:menuitem xlink:href=".uno:ChangeCaseToTitleCase"/>
                    <contextmenu:menuitem xlink:href=".uno:ChangeCaseToTitleCase"/>
+
                <contextmenu:menuitem xlink:href=".uno:ChangeCaseToToggleCase"/>
                    <contextmenu:menuitem xlink:href=".uno:ChangeCaseToToggleCase"/>
+
                <contextmenu:menuitem xlink:href=".uno:ChangeCaseToHalfWidth"/>
                    <contextmenu:menuitem xlink:href=".uno:ChangeCaseToHalfWidth"/>
+
                <contextmenu:menuitem xlink:href=".uno:ChangeCaseToFullWidth"/>
                    <contextmenu:menuitem xlink:href=".uno:ChangeCaseToFullWidth"/>
+
                <contextmenu:menuitem xlink:href=".uno:ChangeCaseToHiragana"/>
                    <contextmenu:menuitem xlink:href=".uno:ChangeCaseToHiragana"/>
+
                <contextmenu:menuitem xlink:href=".uno:ChangeCaseToKatakana"/>
                    <contextmenu:menuitem xlink:href=".uno:ChangeCaseToKatakana"/>
+
            </contextmenu:popupmenu>
                </contextmenu:popupmenu>
+
        </contextmenu:menu>
            </contextmenu:menu>
+
        <contextmenu:menuseparator/>
            <contextmenu:menuseparator />
+
        <contextmenu:menuitem xlink:href=".uno:UpdateCurIndex"/>
            <contextmenu:menuitem xlink:href=".uno:UpdateCurIndex"/>
+
        <contextmenu:menuitem xlink:href=".uno:EditCurIndex"/>
            <contextmenu:menuitem xlink:href=".uno:EditCurIndex"/>
+
        <contextmenu:menuitem xlink:href=".uno:RemoveTableOf"/>
            <contextmenu:menuitem xlink:href=".uno:RemoveTableOf"/>
+
        <contextmenu:menuseparator/>
            <contextmenu:menuseparator />
+
        <contextmenu:menuitem xlink:href=".uno:FieldDialog"/>
            <contextmenu:menuitem xlink:href=".uno:FieldDialog"/>
+
        <contextmenu:menuitem xlink:href=".uno:EditFootnote"/>
            <contextmenu:menuitem xlink:href=".uno:EditFootnote"/>
+
        <contextmenu:menuitem xlink:href=".uno:IndexEntryDialog"/>
            <contextmenu:menuitem xlink:href=".uno:IndexEntryDialog"/>
+
        <contextmenu:menuitem xlink:href=".uno:AuthoritiesEntryDialog"/>
            <contextmenu:menuitem xlink:href=".uno:AuthoritiesEntryDialog"/>
+
        <contextmenu:menuseparator/>
            <contextmenu:menuseparator />
+
        <contextmenu:menuitem xlink:href=".uno:AcceptTracedChange"/>
            <contextmenu:menuitem xlink:href=".uno:AcceptTracedChange"/>
+
        <contextmenu:menuitem xlink:href=".uno:RejectTracedChange"/>
            <contextmenu:menuitem xlink:href=".uno:RejectTracedChange"/>
+
        <contextmenu:menuseparator/>
            <contextmenu:menuseparator />
+
        <contextmenu:menuitem xlink:href=".uno:EditStyle"/>
            <contextmenu:menuitem xlink:href=".uno:EditStyle"/>
+
        <contextmenu:menuseparator/>
            <contextmenu:menuseparator />
+
        <contextmenu:menuitem xlink:href=".uno:OpenHyperlinkOnCursor"/>
            <contextmenu:menuitem xlink:href=".uno:OpenHyperlinkOnCursor"/>
+
        <contextmenu:menuitem xlink:href=".uno:EditHyperlink"/>
            <contextmenu:menuitem xlink:href=".uno:EditHyperlink"/>
+
        <contextmenu:menuitem xlink:href=".uno:CopyHyperlinkLocation"/>
            <contextmenu:menuitem xlink:href=".uno:CopyHyperlinkLocation"/>
+
        <contextmenu:menuitem xlink:href=".uno:RemoveHyperlink"/>
            <contextmenu:menuitem xlink:href=".uno:RemoveHyperlink"/>
+
        <contextmenu:menuitem xlink:href=".uno:OpenSmartTagMenuOnCursor"/>
            <contextmenu:menuitem xlink:href=".uno:OpenSmartTagMenuOnCursor"/>
+
         <contextmenu:menuseparator/>
         </contextmenu:popupmenu>
+
        <!-- Thesaurus should have its own controller -->
     </contextmenu:menu>
+
        <contextmenu:menuitem xlink:href=".uno:ThesaurusFromContext"/>
 +
        <contextmenu:menuseparator/>
 +
        <!-- clipboard functions were added by the SfxPopupMenuManager -->
 +
        <contextmenu:menuitem xlink:href=".uno:Cut"/>
 +
        <contextmenu:menuitem xlink:href=".uno:Copy"/>
 +
        <contextmenu:menuitem xlink:href=".uno:Paste"/>
 +
     </contextmenu:popupmenu>
 
</contextmenu:contextmenu>
 
</contextmenu:contextmenu>
  
 
</source>
 
</source>

Latest revision as of 01:18, 20 August 2010

Tasks

ContextMenu DTD

<?xml version="1.0" encoding="UTF-8"?>
<!--
 
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  Copyright 2000, 2010 Oracle and/or its affiliates.
 
  OpenOffice.org - a multi-platform office productivity suite
 
  This file is part of OpenOffice.org.
 
  OpenOffice.org is free software: you can redistribute it and/or modify
  it under the terms of the GNU Lesser General Public License version 3
  only, as published by the Free Software Foundation.
 
  OpenOffice.org is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU Lesser General Public License version 3 for more details
  (a copy is included in the LICENSE file that accompanied this code).
 
  You should have received a copy of the GNU Lesser General Public License
  version 3 along with OpenOffice.org.  If not, see
  <http://www.openoffice.org/license.html>
  for a copy of the LGPLv3 License.
 
-->
 
<!ELEMENT contextmenu:contextmenu (contextmenu:popupmenu)>
<!ATTLIST contextmenu:contextmenu
    xmlns:contextmenu   CDATA #FIXED "http://openoffice.org/2001/contextmenu"
    xmlns:xlink         CDATA #FIXED "http://www.w3.org/1999/xlink">
 
<!ELEMENT contextmenu:popupmenu (contextmenu:menuitem | contextmenu:menuseparator | contextmenu:menu)*>
 
<!ELEMENT contextmenu:menu (contextmenu:popupmenu)>
<!ATTLIST contextmenu:menu
    xlink:href  CDATA #REQUIRED
    contextmenu:helpid CDATA #IMPLIED
    contextmenu:label  CDATA #IMPLIED
    contextmenu:style  CDATA #IMPLIED>
 
<!ELEMENT contextmenu:menuitem  EMPTY>
<!ATTLIST contextmenu:menuitem
    xlink:href  CDATA #REQUIRED
    contextmenu:helpid CDATA #IMPLIED
    contextmenu:label  CDATA #IMPLIED
    contextmenu:style  CDATA #IMPLIED>
 
<!ELEMENT contextmenu:menuseparator  EMPTY>


  • for the attribute holding the command URL we do not follow menubar.dtd (it uses menu:id), we follow the toolbar.dtd and statusbar.dtd where the UNO command URL is stored in a locator attribute (xlink:href)
  • while validating the XML files against the DTD, we found that OOo statusbars and menubars do not pass the test:
    • in statusbar.dtd, the attribute statusbar:helpid is missing
    • in menubar.dtd
      • the attribute menu:style is missing
      • the element menu:menu is defined to have only one child element of type menu:menupopup, but this fails, for example, in Writer's menubar.xml with <menu:menu menu:id=".uno:ScriptOrganizer"/>

Menu Item Style

The attribute contextmenu:style is defined as unparsed character data. It may contain one or more of the following styles:

  • text (corresponds to <idlml>com.sun.star.ui.ItemStyle:TEXT</idlml>)
  • image (corresponds to <idlml>com.sun.star.ui.ItemStyle:ICON</idlml>)
  • radio (corresponds to <idlml>com.sun.star.ui.ItemStyle:RADIO_CHECK</idlml>)

Two ore more styles must be combined with a plus sign, like "text+image+radio" (although the MenuBar reader handles this, it does not seem to be used in any XML file; the only style explicitly indicated is "radio".

Examples

sc

RID_POPUP_EDIT

The following is the XML version of the Menu structure described in the resource file sc/source/ui/src/popup.src.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE contextmenu:contextmenu SYSTEM "contextmenu.dtd">
<contextmenu:contextmenu xmlns:contextmenu="http://openoffice.org/2001/contextmenu" xmlns:xlink="http://www.w3.org/1999/xlink">
    <contextmenu:popupmenu>
        <contextmenu:menuitem xlink:href=".uno:ResetAttributes"/>
        <contextmenu:menuseparator/>
        <!-- Menu item controlled by PopupMenuController are NOT treated special
                see in Writer menubar:
                <menu:menuitem menu:id=".uno:SetLanguageSelectionMenu"/>
                <menu:menuitem menu:id=".uno:SetLanguageParagraphMenu"/>
                <menu:menuitem menu:id=".uno:SetLanguageAllTextMenu"/>
        -->
        <contextmenu:menuitem xlink:href=".uno:CharFontName"/>
        <contextmenu:menuitem xlink:href=".uno:FontHeight"/>
        <!-- PROBLEM: submenus usually have no command URL
             RID_MN_FORMAT_STYLE has no UNO command URL of course
        -->
        <contextmenu:menu xlink:href=".uno:CellTextStyleMenu" > <!-- fictitious, but à la Writer -->
            <contextmenu:popupmenu>
                <contextmenu:menuitem xlink:href=".uno:Bold"/>
                <contextmenu:menuitem xlink:href=".uno:Italic"/>
                <contextmenu:menuitem xlink:href=".uno:Overline"/>
                <contextmenu:menuitem xlink:href=".uno:Underline"/>
                <contextmenu:menuitem xlink:href=".uno:UnderlineDouble"/>
                <contextmenu:menuitem xlink:href=".uno:Strikeout"/>
                <contextmenu:menuitem xlink:href=".uno:Shadowed"/>
                <contextmenu:menuitem xlink:href=".uno:OutlineFont"/>
                <contextmenu:menuseparator/>
                <contextmenu:menuitem xlink:href=".uno:SuperScript"/>
                <contextmenu:menuitem xlink:href=".uno:SubScript"/>
            </contextmenu:popupmenu>
        </contextmenu:menu>
        <contextmenu:menuseparator/>
        <contextmenu:menuitem xlink:href=".uno:FontDialog"/>
        <contextmenu:menuseparator/>
        <contextmenu:menuitem xlink:href=".uno:OpenHyperlinkOnCursor"/>
        <contextmenu:menuseparator/>
        <!-- clipboard functions were added by the SfxPopupMenuManager -->
        <contextmenu:menuitem xlink:href=".uno:Cut"/>
        <contextmenu:menuitem xlink:href=".uno:Copy"/>
        <contextmenu:menuitem xlink:href=".uno:Paste"/>
    </contextmenu:popupmenu>
</contextmenu:contextmenu>

RID_POPUP_CELLS

The following is the XLM version of the Menu structure defined in the resource file sc/source/ui/src/popup.src.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE contextmenu:contextmenu SYSTEM "contextmenu.dtd">
<contextmenu:contextmenu xmlns:contextmenu="http://openoffice.org/2001/contextmenu" xmlns:xlink="http://www.w3.org/1999/xlink">
    <contextmenu:popupmenu>
        <contextmenu:menuitem xlink:href=".uno:ResetAttributes"/>
        <contextmenu:menuseparator/>
        <contextmenu:menuitem xlink:href=".uno:FormatCellDialog"/>
        <contextmenu:menuseparator/>
        <contextmenu:menuitem xlink:href=".uno:InsertCellsRight"/>
        <contextmenu:menuitem xlink:href=".uno:DeleteCell"/>
        <contextmenu:menuitem xlink:href=".uno:Delete"/>
        <contextmenu:menuseparator/>
        <contextmenu:menuitem xlink:href=".uno:InsertAnnotation"/>
        <contextmenu:menuitem xlink:href=".uno:DeleteNote"/>
        <contextmenu:menuitem xlink:href=".uno:NoteVisible"/>
        <contextmenu:menuseparator/>
        <contextmenu:menuitem xlink:href=".uno:Cut"/>
        <contextmenu:menuitem xlink:href=".uno:Copy"/>
        <contextmenu:menuitem xlink:href=".uno:Paste"/>
        <contextmenu:menuitem xlink:href=".uno:PasteSpecial"/>
        <contextmenu:menuseparator/>
        <contextmenu:menuitem xlink:href=".uno:DataSelect"/>
    </contextmenu:popupmenu>
</contextmenu:contextmenu>

sw

MN_TEXT_POPUPMENU

The following is the XML version of the Menu structure defined in the resource file sw/source/ui/app/mn.src (and many other files it includes).

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE contextmenu:contextmenu SYSTEM "contextmenu.dtd">
<contextmenu:contextmenu xmlns:contextmenu="http://openoffice.org/2001/contextmenu" xmlns:xlink="http://www.w3.org/1999/xlink">
    <contextmenu:popupmenu>
        <contextmenu:menuitem xlink:href=".uno:ResetAttributes"/>
        <contextmenu:menuseparator/>
        <contextmenu:menuitem xlink:href=".uno:NumberingStart"/>
        <contextmenu:menuitem xlink:href=".uno:ContinueNumbering"/>
        <contextmenu:menuitem xlink:href=".uno:IncrementLevel"/>
        <contextmenu:menuitem xlink:href=".uno:DecrementLevel"/>
        <contextmenu:menuseparator/>
        <contextmenu:menuitem xlink:href=".uno:CharFontName"/>
        <contextmenu:menuitem xlink:href=".uno:FontHeight"/>
        <contextmenu:menu xlink:href=".uno:StyleMenu">
            <contextmenu:popupmenu>
                <contextmenu:menuitem xlink:href=".uno:Bold"/>
                <contextmenu:menuitem xlink:href=".uno:Italic"/>
                <contextmenu:menuitem xlink:href=".uno:Overline"/>
                <contextmenu:menuitem xlink:href=".uno:Underline"/>
                <contextmenu:menuitem xlink:href=".uno:Strikeout"/>
                <contextmenu:menuitem xlink:href=".uno:Shadowed"/>
                <contextmenu:menuitem xlink:href=".uno:OutlineFont"/>
                <contextmenu:menuseparator/>
                <contextmenu:menuitem xlink:href=".uno:SuperScript"/>
                <contextmenu:menuitem xlink:href=".uno:SubScript"/>
            </contextmenu:popupmenu>
        </contextmenu:menu>
        <contextmenu:menu xlink:href=".uno:AlignTextMenu">
            <contextmenu:popupmenu>
                <contextmenu:menuitem xlink:href=".uno:LeftPara" contextmenu:style="radio"/>
                <contextmenu:menuitem xlink:href=".uno:RightPara" contextmenu:style="radio"/>
                <contextmenu:menuitem xlink:href=".uno:CenterPara" contextmenu:style="radio"/>
                <contextmenu:menuitem xlink:href=".uno:JustifyPara" contextmenu:style="radio"/>
            </contextmenu:popupmenu>
        </contextmenu:menu>
        <contextmenu:menu xlink:href=".uno:LineSpacingMenu">
            <contextmenu:popupmenu>
                <contextmenu:menuitem xlink:href=".uno:SpacePara1" contextmenu:style="radio"/>
                <contextmenu:menuitem xlink:href=".uno:SpacePara15" contextmenu:style="radio"/>
                <contextmenu:menuitem xlink:href=".uno:SpacePara2" contextmenu:style="radio"/>
            </contextmenu:popupmenu>
        </contextmenu:menu>
        <contextmenu:menuseparator/>
        <contextmenu:menuitem xlink:href=".uno:FontDialog"/>
        <contextmenu:menuitem xlink:href=".uno:ParagraphDialog"/>
        <contextmenu:menuitem xlink:href=".uno:PageDialog"/>
        <contextmenu:menuitem xlink:href=".uno:BulletsAndNumberingDialog"/>
        <contextmenu:menu xlink:href=".uno:TransliterateMenu">
            <contextmenu:popupmenu>
                <contextmenu:menuitem xlink:href=".uno:ChangeCaseToSentenceCase"/>
                <contextmenu:menuitem xlink:href=".uno:ChangeCaseToLower"/>
                <contextmenu:menuitem xlink:href=".uno:ChangeCaseToUpper"/>
                <contextmenu:menuitem xlink:href=".uno:ChangeCaseToTitleCase"/>
                <contextmenu:menuitem xlink:href=".uno:ChangeCaseToToggleCase"/>
                <contextmenu:menuitem xlink:href=".uno:ChangeCaseToHalfWidth"/>
                <contextmenu:menuitem xlink:href=".uno:ChangeCaseToFullWidth"/>
                <contextmenu:menuitem xlink:href=".uno:ChangeCaseToHiragana"/>
                <contextmenu:menuitem xlink:href=".uno:ChangeCaseToKatakana"/>
            </contextmenu:popupmenu>
        </contextmenu:menu>
        <contextmenu:menuseparator/>
        <contextmenu:menuitem xlink:href=".uno:UpdateCurIndex"/>
        <contextmenu:menuitem xlink:href=".uno:EditCurIndex"/>
        <contextmenu:menuitem xlink:href=".uno:RemoveTableOf"/>
        <contextmenu:menuseparator/>
        <contextmenu:menuitem xlink:href=".uno:FieldDialog"/>
        <contextmenu:menuitem xlink:href=".uno:EditFootnote"/>
        <contextmenu:menuitem xlink:href=".uno:IndexEntryDialog"/>
        <contextmenu:menuitem xlink:href=".uno:AuthoritiesEntryDialog"/>
        <contextmenu:menuseparator/>
        <contextmenu:menuitem xlink:href=".uno:AcceptTracedChange"/>
        <contextmenu:menuitem xlink:href=".uno:RejectTracedChange"/>
        <contextmenu:menuseparator/>
        <contextmenu:menuitem xlink:href=".uno:EditStyle"/>
        <contextmenu:menuseparator/>
        <contextmenu:menuitem xlink:href=".uno:OpenHyperlinkOnCursor"/>
        <contextmenu:menuitem xlink:href=".uno:EditHyperlink"/>
        <contextmenu:menuitem xlink:href=".uno:CopyHyperlinkLocation"/>
        <contextmenu:menuitem xlink:href=".uno:RemoveHyperlink"/>
        <contextmenu:menuitem xlink:href=".uno:OpenSmartTagMenuOnCursor"/>
        <contextmenu:menuseparator/>
        <!-- Thesaurus should have its own controller -->
        <contextmenu:menuitem xlink:href=".uno:ThesaurusFromContext"/>
        <contextmenu:menuseparator/>
        <!-- clipboard functions were added by the SfxPopupMenuManager -->
        <contextmenu:menuitem xlink:href=".uno:Cut"/>
        <contextmenu:menuitem xlink:href=".uno:Copy"/>
        <contextmenu:menuitem xlink:href=".uno:Paste"/>
    </contextmenu:popupmenu>
</contextmenu:contextmenu>
Personal tools