summaryrefslogtreecommitdiffstats
path: root/menu
diff options
context:
space:
mode:
authorlanius <lanius>2003-11-09 13:10:06 +0000
committerlanius <lanius>2003-11-09 13:10:06 +0000
commit7d616706bba168427214848c6fbb77da5a30e04d (patch)
treee56264f6da815061392c911e6e589c2bea4fe9b5 /menu
parent8601b0136a361b59c69cbd99fb8ce77a7e6f66ec (diff)
downloadxdg-specs-7d616706bba168427214848c6fbb77da5a30e04d.tar.xz
see changelog
Diffstat (limited to 'menu')
-rw-r--r--menu/ChangeLog11
-rw-r--r--menu/menu-spec.xml324
-rw-r--r--menu/menu.dtd81
3 files changed, 315 insertions, 101 deletions
diff --git a/menu/ChangeLog b/menu/ChangeLog
index 7de8791..4e3edcb 100644
--- a/menu/ChangeLog
+++ b/menu/ChangeLog
@@ -1,3 +1,14 @@
+2003-11-09 Heinrich Wendel <h_wendel@cojobo.net>
+ * menu-spec.xml: patch for categories based on Suse 9.0
+ * menu-spec.xml: Grahpics -> Graphics
+ * menu-spec.xml: DTD fix
+ * menu.dtd: added dtd
+ * testsuite: fixed errors highlighted by havoc
+
+2003-10-23 Havoc Pennington <hp@redhat.com>
+
+ * menu-spec.xml: clarify how <Move> elements are resolved
+
2003-10-21 Havoc Pennington <hp@redhat.com>
* create autotools setup
diff --git a/menu/menu-spec.xml b/menu/menu-spec.xml
index 23f4771..380e2da 100644
--- a/menu/menu-spec.xml
+++ b/menu/menu-spec.xml
@@ -2,10 +2,10 @@
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
]>
<article id="index">
- <articleinfo>
+ <artheader>
<title>Desktop Menu Specification</title>
- <releaseinfo>Version 0.7</releaseinfo>
- <date>30 September 2003</date>
+ <releaseinfo>Version 0.8</releaseinfo>
+ <date>9 November 2003</date>
<authorgroup>
<author>
<firstname>Waldo</firstname>
@@ -62,7 +62,7 @@
</affiliation>
</author>
</authorgroup>
- </articleinfo>
+ </artheader>
<sect1 id="introduction">
<title>Introduction</title>
@@ -270,18 +270,18 @@ entries</ulink>: <varname>Categories</varname>,
</listitem>
</varlistentry>
<varlistentry>
- <term>Public Identifier for 1.0</term>
+ <term>Public Identifier for 0.8</term>
<listitem>
<para>
- <literal>PUBLIC "-//freedesktop//DTD Menu 1.0//EN"</literal>
+ <literal>PUBLIC "-//freedesktop//DTD Menu 0.8//EN"</literal>
</para>
</listitem>
</varlistentry>
<varlistentry>
- <term>System Identifier for 1.0</term>
+ <term>System Identifier for 0.8</term>
<listitem>
<para>
- <literal>http://www.freedesktop.org/standards/menu-spec/1.0/menu.dtd</literal>
+ <literal>http://www.freedesktop.org/standards/menu-spec/menu-0.8.dtd</literal>
</para>
</listitem>
</varlistentry>
@@ -290,8 +290,8 @@ entries</ulink>: <varname>Categories</varname>,
Here is a sample doctype declaration:
<informalexample>
<programlisting>
- &lt;!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN"
- "http://www.freedesktop.org/standards/menu-spec/1.0/menu.dtd"&gt;
+ &lt;!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 0.8//EN"
+ "http://www.freedesktop.org/standards/menu-spec/menu-0.8.dtd"&gt;
</programlisting>
</informalexample>
@@ -930,7 +930,7 @@ entries</ulink>: <varname>Categories</varname>,
</para>
<para>
Once all files have been loaded into a single tree, scan the tree
- recursively performing these steps:
+ recursively performing these steps to remove duplicates:
<orderedlist>
<listitem>
<para>
@@ -957,37 +957,40 @@ entries</ulink>: <varname>Categories</varname>,
</listitem>
<listitem>
<para>
- Recurse into each child &lt;Menu&gt;, performing this list of
- steps for each child in order.
- </para>
- </listitem>
- <listitem>
- <para>
Resolve duplicate &lt;Move&gt; operations (with the same
origin path) by keeping the last one.
</para>
</listitem>
<listitem>
<para>
- Execute &lt;Move&gt; operations in the order that they appear. If
- the destination path does not exist, simply relocate the origin
- &lt;Menu&gt; element, and change its &lt;Name&gt; field to match the
- destination path. If the origin path does not exist, do nothing.
- If both paths exist, take the origin &lt;Menu&gt; element, delete
- its &lt;Name&gt; element, and prepend its remaining child elements
- to the destination &lt;Menu&gt; element. Then, recursively re-run
- the previous merge steps on the resulting combined &lt;Menu&gt; in order to
- consolidate duplicates.
- </para>
- </listitem>
- <listitem>
- <para>
- For each &lt;Menu&gt; containing a &lt;Deleted&gt; element which is
- not followed by a &lt;NotDeleted&gt; element, remove that menu.
+ Recurse into each child &lt;Menu&gt;, performing this list of
+ steps for each child in order.
</para>
</listitem>
</orderedlist>
</para>
+ <para>
+ After recursing once to remove duplicates, resolve &lt;Move&gt; elements
+ for each menu starting with the top level and recursing into child menus.
+ So the deepest menus have their &lt;Move&gt; operations performed last.
+ Within each &lt;Menu&gt;, execute &lt;Move&gt; operations in the order
+ that they appear. If the destination path does not exist, simply relocate
+ the origin &lt;Menu&gt; element, and change its &lt;Name&gt; field to
+ match the destination path. If the origin path does not exist, do
+ nothing. If both paths exist, take the origin &lt;Menu&gt; element,
+ delete its &lt;Name&gt; element, and prepend its remaining child elements
+ to the destination &lt;Menu&gt; element.
+ </para>
+ <para>
+ If any &lt;Move&gt; operations affect a menu, then re-run the
+ steps to resolve duplicates in case any duplicates have been
+ created.
+ </para>
+ <para>
+ Finally, for each &lt;Menu&gt; containing a &lt;Deleted&gt; element which
+ is not followed by a &lt;NotDeleted&gt; element, remove that menu and all
+ its child menus.
+ </para>
<para>
Merged menu elements are kept in order because &lt;Include&gt; and
@@ -1142,8 +1145,8 @@ entries</ulink>: <varname>Categories</varname>,
Conceptually that is converted to the following &lt;Menu&gt;:
<informalexample>
<programlisting>
- &lt;!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN"
- "http://www.freedesktop.org/standards/menu-spec/1.0/menu.dtd"&gt;
+ &lt;!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 0.8//EN"
+ "http://www.freedesktop.org/standards/menu-spec/menu-0.8.dtd"&gt;
&lt;Menu&gt;
&lt;AppDir&gt;/usr/share/applnk&lt;/AppDir&gt;
@@ -1172,8 +1175,8 @@ entries</ulink>: <varname>Categories</varname>,
<para>
<informalexample>
<programlisting>
- &lt;!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN"
- "http://www.freedesktop.org/standards/menu-spec/1.0/menu.dtd"&gt;
+ &lt;!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 0.8//EN"
+ "http://www.freedesktop.org/standards/menu-spec/menu-0.8.dtd"&gt;
&lt;Menu&gt;
&lt;Name&gt;Applications&lt;/Name&gt;
@@ -1271,6 +1274,11 @@ entries</ulink>: <varname>Categories</varname>,
<entry></entry>
</row><row>
+ <entry>Building</entry>
+ <entry>A tool to build applications</entry>
+ <entry>Development</entry>
+
+ </row><row>
<entry>Debugger</entry>
<entry>A tool to debug applications</entry>
<entry>Development</entry>
@@ -1286,11 +1294,21 @@ entries</ulink>: <varname>Categories</varname>,
<entry>Development</entry>
</row><row>
+ <entry>Profiling</entry>
+ <entry>A profiling tool</entry>
+ <entry>Development</entry>
+
+ </row><row>
<entry>RevisionControl</entry>
<entry>Applications like cvs or subversion</entry>
<entry>Development</entry>
</row><row>
+ <entry>Translation</entry>
+ <entry>A translation tool</entry>
+ <entry>Development</entry>
+
+ </row><row>
<entry>Office</entry>
<entry>An office type application</entry>
@@ -1307,7 +1325,12 @@ entries</ulink>: <varname>Categories</varname>,
</row><row>
<entry>Database</entry>
<entry>Application to manage a database</entry>
- <entry>Office;Development</entry>
+ <entry>Office or Development or AudioVideo</entry>
+
+ </row><row>
+ <entry>Dictionary</entry>
+ <entry>A dictionary</entry>
+ <entry>Office</entry>
</row><row>
<entry>Chart</entry>
@@ -1325,6 +1348,11 @@ entries</ulink>: <varname>Categories</varname>,
<entry>Office</entry>
</row><row>
+ <entry>FlowChart</entry>
+ <entry>A flowchart application</entry>
+ <entry>Office</entry>
+
+ </row><row>
<entry>PDA</entry>
<entry>Tool to manage your PDA</entry>
<entry>Office</entry>
@@ -1354,42 +1382,51 @@ entries</ulink>: <varname>Categories</varname>,
<entry>Graphical application</entry>
</row><row>
- <entry>3DGraphics</entry>
- <entry>3D based graphical application</entry>
+ <entry>2DGraphics</entry>
+ <entry>2D based graphical application</entry>
<entry>Graphics</entry>
</row><row>
+ <entry>VectorGraphics</entry>
+ <entry>Vector based graphical application</entry>
+ <entry>2DGraphics</entry>
+
+ </row><row>
<entry>RasterGraphics</entry>
<entry>Raster based graphical application</entry>
+ <entry>2DGraphics</entry>
+
+ </row><row>
+ <entry>3DGraphics</entry>
+ <entry>3D based graphical application</entry>
<entry>Graphics</entry>
</row><row>
- <entry>ScanTool</entry>
+ <entry>Scanning</entry>
<entry>Tool to scan a file/text</entry>
<entry>Graphics</entry>
</row><row>
- <entry>VectorGraphics</entry>
- <entry>Vector based graphical application</entry>
- <entry>Graphics</entry>
+ <entry>OCR</entry>
+ <entry>Tool to text</entry>
+ <entry>Scanning</entry>
+
+ </row><row>
+ <entry>Photograph</entry>
+ <entry>Camera tools, etc.</entry>
+ <entry>Graphics or Office</entry>
</row><row>
<entry>Viewer</entry>
<entry>Tool to view e.g. a graphic or pdf file</entry>
- <entry>(Graphics)</entry>
+ <entry>Graphics or Office</entry>
</row><row>
<entry>Settings</entry>
<entry>Settings applications</entry>
</row><row>
- <entry>AccessibilitySettings</entry>
- <entry>Accessibility settings</entry>
- <entry>Settings</entry>
-
-
- </row><row>
- <entry>Desktop-Settings</entry>
+ <entry>DesktopSettings</entry>
<entry>ConfigurationTool for the GUI</entry>
<entry>Settings</entry>
@@ -1399,27 +1436,18 @@ entries</ulink>: <varname>Categories</varname>,
<entry>Settings</entry>
</row><row>
- <entry>NetworkSettings</entry>
- <entry>Application to manage network settings</entry>
- <entry>Settings</entry>
-
- </row><row>
<entry>PackageManager</entry>
<entry>A package manager application</entry>
<entry>Settings</entry>
</row><row>
- <entry>SystemSetup</entry>
- <entry>System setup application, e.g. init level configuration</entry>
- <entry>Settings</entry>
-
- </row><row>
<entry>Network</entry>
<entry>Network application such as a webbrowser</entry>
+ <entry>(Settings)</entry>
</row><row>
- <entry>WebBrowser</entry>
- <entry>A webbrowser</entry>
+ <entry>Dialup</entry>
+ <entry>A dialup program</entry>
<entry>Network</entry>
</row><row>
@@ -1433,13 +1461,23 @@ entries</ulink>: <varname>Categories</varname>,
<entry>Network</entry>
</row><row>
+ <entry>FileTransfer</entry>
+ <entry>Tools like FTP or P2P programs</entry>
+ <entry>Network</entry>
+
+ </row><row>
+ <entry>HamRadio</entry>
+ <entry>HAM radio software</entry>
+ <entry>Network or Audio</entry>
+
+ </row><row>
<entry>News</entry>
<entry>A newsreader or newsticker</entry>
- <entry>Network</entry>
</row><row>
- <entry>FileTransfer</entry>
- <entry>Tools like FTP or P2P programs</entry>
+ <entry>P2P</entry>
+ <entry>A P2P program</entry>
+ <entry>Network</entry>
<entry>Network</entry>
</row><row>
@@ -1453,27 +1491,72 @@ entries</ulink>: <varname>Categories</varname>,
<entry>Network</entry>
</row><row>
+ <entry>WebBrowser</entry>
+ <entry>A webbrowser</entry>
+ <entry>Network</entry>
+
+ </row><row>
+ <entry>WebDevelopment</entry>
+ <entry>A tool for web developers</entry>
+ <entry>Network or Development</entry>
+
+ </row><row>
<entry>AudioVideo</entry>
<entry>A multimedia (audio/video) application</entry>
</row><row>
- <entry>AudioVideoEditing</entry>
- <entry>Application to edit audio or video files</entry>
+ <entry>Audio</entry>
+ <entry>An audio application</entry>
<entry>AudioVideo</entry>
</row><row>
- <entry>DiscBurning</entry>
- <entry>Application to burn a disc</entry>
- <entry>AudioVideo</entry>
+ <entry>Midi</entry>
+ <entry>An app related to midi</entry>
+ <entry>Audio</entry>
</row><row>
<entry>Mixer</entry>
<entry>Just a mixer</entry>
+ <entry>Audio</entry>
+
+ </row><row>
+ <entry>Sequencer</entry>
+ <entry>a sequencer</entry>
+ <entry>Audio</entry>
+
+ </row><row>
+ <entry>Tuner</entry>
+ <entry>a tuner</entry>
+ <entry>Audio</entry>
+
+ </row><row>
+ <entry>Video</entry>
+ <entry>A video application</entry>
<entry>AudioVideo</entry>
</row><row>
+ <entry>TV</entry>
+ <entry>A TV application</entry>
+ <entry>Video</entry>
+
+ </row><row>
+ <entry>AudioVideoEditing</entry>
+ <entry>Application to edit audio or video files</entry>
+ <entry>Audio or Video or AudiVideo</entry>
+
+ </row><row>
<entry>Player</entry>
<entry>Application to play audio/video files</entry>
+ <entry>Audio or Video or AudioVideo</entry>
+
+ </row><row>
+ <entry>Recorder</entry>
+ <entry>Application to record audio/video files</entry>
+ <entry>Audio or Video or AudioVideo</entry>
+
+ </row><row>
+ <entry>DiscBurning</entry>
+ <entry>Application to burn a disc</entry>
<entry>AudioVideo</entry>
</row><row>
@@ -1481,6 +1564,11 @@ entries</ulink>: <varname>Categories</varname>,
<entry>A game</entry>
</row><row>
+ <entry>ActionGame</entry>
+ <entry>An actiongame</entry>
+ <entry>Game</entry>
+
+ </row><row>
<entry>AdventureGame</entry>
<entry>Adventure style game</entry>
<entry>Game</entry>
@@ -1506,11 +1594,6 @@ entries</ulink>: <varname>Categories</varname>,
<entry>Game</entry>
</row><row>
- <entry>FirstPersonGame</entry>
- <entry>First person perspective game</entry>
- <entry>Game</entry>
-
- </row><row>
<entry>KidsGame</entry>
<entry>A game for kids</entry>
<entry>Game</entry>
@@ -1521,6 +1604,16 @@ entries</ulink>: <varname>Categories</varname>,
<entry>Game</entry>
</row><row>
+ <entry>RolePlaying</entry>
+ <entry>A roleplaying game</entry>
+ <entry>Game</entry>
+
+ </row><row>
+ <entry>Simulation</entry>
+ <entry>A simulation game</entry>
+ <entry>Game</entry>
+
+ </row><row>
<entry>SportsGame</entry>
<entry>A Sports game</entry>
<entry>Game</entry>
@@ -1535,6 +1628,21 @@ entries</ulink>: <varname>Categories</varname>,
<entry>Educational software</entry>
</row><row>
+ <entry>Art</entry>
+ <entry>software to teach arts</entry>
+ <entry>Education</entry>
+
+ </row><row>
+ <entry>Art</entry>
+ <entry></entry>
+ <entry>Education</entry>
+
+ </row><row>
+ <entry>Contruction</entry>
+ <entry></entry>
+ <entry>Education</entry>
+
+ </row><row>
<entry>Music</entry>
<entry>Musical Software</entry>
<entry>AudioVideo;Education</entry>
@@ -1585,6 +1693,11 @@ entries</ulink>: <varname>Categories</varname>,
<entry>Science</entry>
</row><row>
+ <entry>Teaching</entry>
+ <entry>An education program for teachers</entry>
+ <entry>Education</entry>
+
+ </row><row>
<entry>Amusement</entry>
<entry>A simple amusement</entry>
<entry></entry>
@@ -1600,16 +1713,10 @@ entries</ulink>: <varname>Categories</varname>,
<entry></entry>
</row><row>
- <entry>Clock</entry>
- <entry>A clock application/applet</entry>
- <entry></entry>
-
- </row><row>
<entry>Electronics</entry>
<entry>Electronics software, e.g. a circuit designer</entry>
<entry></entry>
-
</row><row>
<entry>Emulator</entry>
<entry>Emulator of another platform, such as a DOS emulator</entry>
@@ -1626,11 +1733,6 @@ entries</ulink>: <varname>Categories</varname>,
<entry></entry>
</row><row>
- <entry>HamRadio</entry>
- <entry>HAM radio software</entry>
- <entry></entry>
-
- </row><row>
<entry>Shell</entry>
<entry>A shell (an actual specific shell such as
<filename>bash</filename> or <filename>tcsh</filename>, not a TerminalEmulator)</entry>
@@ -1641,29 +1743,34 @@ entries</ulink>: <varname>Categories</varname>,
<entry></entry>
</row><row>
- <entry>System</entry>
- <entry>System application, "System Tools" such as say a log viewer or network monitor</entry>
+ <entry>TerminalEmulator</entry>
+ <entry>A terminal emulator application</entry>
<entry></entry>
</row><row>
- <entry>Monitor</entry>
- <entry>Monitor application/applet that monitors some resource or activity</entry>
- <entry>System</entry>
+ <entry>TrayIcon</entry>
+ <entry>An application that is primarily an icon for the "system tray" or "notification area" (apps that open a normal window and just happen to have a tray icon as well should not list this category)</entry>
+ <entry></entry>
</row><row>
- <entry>TerminalEmulator</entry>
- <entry>A terminal emulator application</entry>
- <entry></entry>
+ <entry>System</entry>
+ <entry>System application, "System Tools" such as say a log viewer or network monitor</entry>
+ <entry>(Settings)</entry>
</row><row>
- <entry>TextEditor</entry>
- <entry>A text editor</entry>
- <entry></entry>
+ <entry>Filesystem</entry>
+ <entry>A filesytem tool</entry>
+ <entry>System</entry>
</row><row>
- <entry>TrayIcon</entry>
- <entry>An application that is primarily an icon for the "system tray" or "notification area" (apps that open a normal window and just happen to have a tray icon as well should not list this category)</entry>
- <entry></entry>
+ <entry>Monitor</entry>
+ <entry>Monitor application/applet that monitors some resource or activity</entry>
+ <entry>System</entry>
+
+ </row><row>
+ <entry>Security</entry>
+ <entry>A security tool</entry>
+ <entry>Settings or System</entry>
</row><row>
<entry>Utility</entry>
@@ -1673,9 +1780,24 @@ entries</ulink>: <varname>Categories</varname>,
</row><row>
<entry>Accessibility</entry>
<entry>Accessibility</entry>
+ <entry>Settings or Utility</entry>
+
+ </row><row>
+ <entry>Calculator</entry>
+ <entry>A calculator</entry>
+ <entry>Utilitiy</entry>
+
+ </row><row>
+ <entry>Clock</entry>
+ <entry>A clock application/applet</entry>
<entry>Utility</entry>
</row><row>
+ <entry>TextEditor</entry>
+ <entry>A text editor</entry>
+ <entry>Utilitiy</entry>
+
+ </row><row>
<entry>KDE</entry>
<entry>Application based on KDE libraries</entry>
<entry>QT</entry>
diff --git a/menu/menu.dtd b/menu/menu.dtd
new file mode 100644
index 0000000..893097e
--- /dev/null
+++ b/menu/menu.dtd
@@ -0,0 +1,81 @@
+<!-- For explanations see http://www.freedesktop.org/standards/menu/draft/menu-spec/ -->
+<!ELEMENT Menu (
+ Name, (
+ Directory
+ | DefaultAppDirs
+ | AppDir
+ | DefaultDirectoryDirs
+ | DirectoryDir
+ | LegacyDir
+ | KDELegacyDirs
+ | MergeFile
+ | DefaultMergeDirs
+ | MergeDir
+ | OnlyUnallocated
+ | NotOnlyUnallocated
+ | Deleted
+ | NotDeleted
+ | Include
+ | Exclude
+ | Move
+ | Menu
+ | Layout
+ | DefaultLayout
+ )*
+)>
+
+<!ELEMENT Name (#PCDATA)>
+
+<!ELEMENT Directory (#PCDATA)>
+
+<!ELEMENT DefaultAppDirs EMPTY>
+<!ELEMENT AppDir (#PCDATA)>
+
+<!ELEMENT DefaultDirectoryDirs EMPTY>
+<!ELEMENT DirectoryDir (#PCDATA)>
+
+<!ELEMENT LegacyDir (#PCDATA)>
+<!ATTLIST LegacyDir prefix CDATA #IMPLIED>
+<!ELEMENT KDELegacyDirs EMPTY>
+
+<!ELEMENT MergeFile (#PCDATA)>
+<!ELEMENT DefaultMergeDirs EMPTY>
+<!ELEMENT MergeDir (#PCDATA)>
+
+<!ELEMENT OnlyUnallocated EMPTY>
+<!ELEMENT NotOnlyUnallocated EMPTY>
+
+<!ELEMENT Deleted EMPTY>
+<!ELEMENT NotDeleted EMPTY>
+
+<!ELEMENT Exclude ((Category|Filename|And|Or|Not)*)>
+<!ELEMENT Include ((Category|Filename|And|Or|Not)*)>
+
+<!ELEMENT And ((Category|Filename|And|Or|Not)*)>
+<!ELEMENT Or ((Category|Filename|And|Or|Not)*)>
+<!ELEMENT Not ((Category|Filename|And|Or|Not)*)>
+<!ELEMENT Filename (#PCDATA)>
+<!ELEMENT Category (#PCDATA)>
+
+<!ELEMENT Move ((Old,New)*)>
+<!ELEMENT Old (#PCDATA)>
+<!ELEMENT New (#PCDATA)>
+
+<!ELEMENT Layout ((Filename|Menuname|Separator|Merge)*)>
+<!ELEMENT DefaultLayout ((Filename|Menuname|Separator|Merge)*)>
+<!ATTLIST DefaultLayout show_empty (true|false) #IMPLIED>
+<!ATTLIST DefaultLayout inline (true|false) #IMPLIED>
+<!ATTLIST DefaultLayout inline_limit CDATA #IMPLIED>
+<!ATTLIST DefaultLayout inline_header (true|false) #IMPLIED>
+<!ATTLIST DefaultLayout inline_alias (true|false) #IMPLIED>
+
+<!ELEMENT Menuname (#PCDATA)>
+<!ATTLIST Menuname inline (true|false) #IMPLIED>
+<!ATTLIST Menuname inline_limit CDATA #IMPLIED>
+<!ATTLIST Menuname inline_header (true|false) #IMPLIED>
+<!ATTLIST Menuname inline_alias (true|false) #IMPLIED>
+
+<!ELEMENT Separator EMPTY>
+
+<!ELEMENT Merge EMPTY>
+<!ATTLIST Merge type (menus|files|all) #REQUIRED>