7. Adding a Characters menu

tutorial/tutorial7.xxe_gui:

  <action name="insertLeftAction" label="_L - &#x2190;">1
    <command name="insertString" parameter="&#x2190;" />
  </action>
  <action name="insertRightAction" label="_R - &#x2192;">
    <command name="insertString" parameter="&#x2192;" />
  </action>

  <action name="insertAlphaAction" label="_A - &#x03B1;">
    <command name="insertString" parameter="&#x03B1;" />
  </action>
  <action name="insertBetaAction" label="_B - &#x03B2;">
    <command name="insertString" parameter="&#x03B2;" />
  </action>
  <action name="insertGammaAction" label="_C - &#x03B3;">
    <command name="insertString" parameter="&#x03B3;" />
  </action>

  <menu name="arrowsMenu" label="_Arrows">
    <action name="insertLeftAction" />
    <action name="insertRightAction" />
  </menu>

  <menu name="greekMenu" label="_Greek">
    <action name="insertAlphaAction" />
    <action name="insertBetaAction" />
    <action name="insertGammaAction" />
  </menu>

  <menu name="charactersMenu" label="_Characters">2
    <menu name="arrowsMenu" />
    <menu name="greekMenu" />
  </menu>

  <menuBar name="customMenuBar">
    <menu name="fileMenu" />
    <menu name="selectMenu" />
    <menu name="editMenu" />
    <menu name="charactersMenu" />3
    <menu name="searchMenu" />
    <menu name="viewMenu" />
    <menu name="toolsMenu" />
    <menu name="configSpecificMenu" />
    <menu name="windowMenu" />
    <menu name="optionsMenu" />
    <menu name="helpMenu" />
  </menuBar>

  <layout label="Document Editor" icon="docedit.png">
    <insert />

    <menuBar name="customMenuBar" />4

    <leftToolBars>
      <toolBar name="configSpecificToolBar" />
    </leftToolBars>
 </layout>

1

Define actions which insert the chosen special characters by wrapping an action around standard command "insertString" (see Section 40, “insertString” in XMLmind XML Editor - Commands).

2

Define the Characters menu and its two submenus: the Arrows menu and the Greek menu.

3

There is no way to insert charactersMenu after editMenu using the <insert/> facility. Therefore we define a new menuBar called "customMenuBar" from scratch.

4

Without this reference, the menu bar used by XXE would have been the standard menu bar (called "menuBar" — see common.xxe_gui).