<!-- Originally Copyright (c) 2000 Federico David Sacerdoti <tech@slinuxmachines.com>
     Modifications/Extensions by Simon Hausmann <hausmann@kde.org>

  This DTD module is identified by the PUBLIC and SYSTEM
  identifiers:
  PUBLIC  "-//KDE Project//KPartGUI DTD//EN"
  SYSTEM "kpartgui.dtd"

  This DTD should be included at the head of an xmlguibuilder XML file like this:
  <!DOCTYPE kpartgui SYSTEM "kpartgui.dtd">
-->

<!--The root element that must enclose all other tags in the document. -->
<!ELEMENT kpartgui ((ActionProperties | MenuBar | ToolBar | Merge | DefineGroup | MainWindow | StatusBar | Menu)*)>
<!ATTLIST kpartgui
  name CDATA #REQUIRED
  version CDATA #REQUIRED
  library CDATA #IMPLIED
>

<!-- Allows standard actions to be customized -->
<!ELEMENT ActionProperties (Action+)>

<!-- A menu bar -->
<!ELEMENT MenuBar ((Menu | Separator | Action | ActionList | Merge | DefineGroup )*)>
<!ATTLIST MenuBar
  name CDATA #IMPLIED
  group CDATA #IMPLIED
>

<!-- A tool bar
  -- Attributes: name: a unique name for the toolbar, use mainToolBar for the main one
  --             fullWidth: if true (default), the toolbar extends to the full width of the window
  --             position: the position of the toolbar in the window
  --             iconText: whether to show icon or text or both
  --             iconSize: the size of the icons (0 for default, or usually 22 or 32)
  --             index: the index in the toolbar dock (see QMainWindow::moveToolBar)
  --             offset: the X offset in the toolbar dock (see QMainWindow::moveToolBar)
  --             newline: if true, this toolbar will start a new line (i.e. under the ones before it).
  --             group: optional group name, for named merging (?)
  --             hidden: if true, the toolbar is initially hidden. There should be a menu entry for showing it.
  --             noEdit: if true, the toolbar won't appear in the toolbar editor
  -->
<!ELEMENT ToolBar ((Action | Separator | ActionList | Merge | DefineGroup)*)>
<!ATTLIST ToolBar
  name CDATA #REQUIRED
  fullWidth (true|false) "true"
  position (top|bottom|left|right) "top"
  iconText (icononly|textonly|icontextright|icontextbottom) #IMPLIED
  iconSize CDATA #IMPLIED
  index CDATA #IMPLIED
  offset CDATA #IMPLIED
  newline (true|false) "false"
  group CDATA #IMPLIED
  hidden (true|false) "false"
  noEdit (true|false) "false"
>

<!-- A Menu such as the "File" or "Edit" menu. Can be used to define popup menus as well. -->
<!ELEMENT Menu (text?, (Action | ActionList | Separator | TearOffHandle | Merge | DefineGroup | Menu )*)>
<!ATTLIST Menu
  name CDATA #REQUIRED
  group CDATA #IMPLIED
  icon CDATA #IMPLIED
>

<!-- Defines both Standard and app-specific actions. An action can appear in a menu, a toolbar or in a
     menubar . -->
<!ELEMENT Action EMPTY>
<!-- We defined only a few standard KAction properties here. Theoritically we can have
     any property here -->
<!ATTLIST Action
  name CDATA #REQUIRED
  group CDATA #IMPLIED
  text CDATA #IMPLIED
  whatsThis CDATA #IMPLIED
  toolTip CDATA #IMPLIED
  shortText CDATA #IMPLIED
  icon CDATA #IMPLIED
>

<!-- Inserts a separator item into a menubar or toolbar -->
<!ELEMENT Separator EMPTY>
<!ATTLIST Separator
  lineSeparator (true|false) "false"
  group CDATA #IMPLIED
>

<!-- Inserts a tear-off handle into a menu -->
<!ELEMENT TearOffHandle EMPTY>
<!ATTLIST TearOffHandle
  group CDATA #IMPLIED
>

<!-- Used to name a menu, the first letter in is generally preceded by an '&' to specify
  the menu's shortcut key -->
<!ELEMENT text (#PCDATA)>

<!-- Specifies a dynamic list of actions, each of which can be changed by plugging/unplugging it -->
<!ELEMENT ActionList EMPTY>
<!ATTLIST ActionList
  name CDATA #REQUIRED
>

<!-- Not explicitly defined or in widely used yet. -->
<!ELEMENT MainWindow (ANY)>

<!-- Not explicitly defined or in widely used yet. -->
<!ELEMENT StatusBar (ANY)>

<!-- Specifies the entry index for merging in a gui client -->
<!ELEMENT Merge EMPTY>
<!ATTLIST Merge
  name CDATA #IMPLIED
>

<!-- Specifies a entry index for merging, similar to the Merge tag, but with a global scope and
     accessible via the group attribute of other tags -->
<!ELEMENT DefineGroup EMPTY>
<!ATTLIST DefineGroup
  name CDATA #REQUIRED
>
