[rkward-cvs] [rkward] /: Document new menu ordering mechanism
Thomas Friedrichsmeier
thomas.friedrichsmeier at ruhr-uni-bochum.de
Wed Dec 3 14:20:54 UTC 2014
Git commit 232574857df9c48216e99b51f80c958b5a5ea84a by Thomas Friedrichsmeier.
Committed on 03/12/2014 at 14:08.
Pushed by tfry into branch 'master'.
Document new menu ordering mechanism
M +0 -1 ChangeLog
M +46 -10 doc/rkwardplugins/index.docbook
http://commits.kde.org/rkward/232574857df9c48216e99b51f80c958b5a5ea84a
diff --git a/ChangeLog b/ChangeLog
index 9eaa4a6..ceb6ba3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,7 +3,6 @@
- Fixed: Freezes when using RKWard-functionality (such as the RK()-device) from tcl/tk (e.g. Rcmdr)
- Allow opening RKWard's plugin files (with correct highlighting), and other text files
- More robust control over placement of plugins within a menu
- - TODO: document, discuss
- Fix several issues of excessive printing of digits in plugins' output
- Restructure layout of CSV-import dialog
- Allow to open (any number of) R script files and rkward://-urls from the command line
diff --git a/doc/rkwardplugins/index.docbook b/doc/rkwardplugins/index.docbook
index 9d59ca0..4984ef5 100644
--- a/doc/rkwardplugins/index.docbook
+++ b/doc/rkwardplugins/index.docbook
@@ -189,14 +189,14 @@ This is a guide to writing plugins for &rkward;.
</para>
<programlisting>
<hierarchy>
- <menu id="analysis" label="Analysis" index="4">
+ <menu id="analysis" label="Analysis">
</programlisting>
<para>
- Right below the <command><hierarchy></command> tag, you start describing, in which <command><menu></command> your plugins should go. With the above line, you basically say, that your plugin should be in the <menuchoice><guimenu>Analysis</guimenu></menuchoice> menu (not necessarily directly there, but in a submenu). The <menuchoice><guimenu>Analysis</guimenu></menuchoice> menu is standard in &rkward;, so it does not actually have to be created from scratch. However, if it did not exist yet, using the <parameter>label</parameter> attribute you'd give it its name. The <parameter>index</parameter> attribute says, that the menu (if newly created) should be placed at the fourth position in the menubar.
+ Right below the <command><hierarchy></command> tag, you start describing, in which <command><menu></command> your plugins should go. With the above line, you basically say, that your plugin should be in the <menuchoice><guimenu>Analysis</guimenu></menuchoice> menu (not necessarily directly there, but in a submenu). The <menuchoice><guimenu>Analysis</guimenu></menuchoice> menu is standard in &rkward;, so it does not actually have to be created from scratch. However, if it did not exist yet, using the <parameter>label</parameter> attribute you'd give it its name.
Finally, the <parameter>id</parameter> once again identifies this <command><menu></command>. This is needed, so several &pluginmap; files can place their plugins in the same menus. They do this by looking for a <command><menu></command> with the given <parameter>id</parameter>. If the ID does not yet exist, a new menu will be created. Otherwise the entries will be added to the existing menu.
</para>
<programlisting>
- <menu id="means" label="Means" index="1">
+ <menu id="means" label="Means">
</programlisting>
<para>
Basically the same thing here: Now we define a submenu to the <menuchoice><guimenu>Analysis</guimenu></menuchoice> menu. It is to be called <menuchoice><guimenuitem>Means</guimenuitem></menuchoice>.
@@ -205,7 +205,7 @@ This is a guide to writing plugins for &rkward;.
<menu id="ttests" label="t-Tests">
</programlisting>
<para>
- And a final level in the menu hierarchy: A submenu of the submenu <menuchoice><guimenuitem>Means</guimenuitem></menuchoice>. Note, that if you omit the <parameter>index</parameter> parameter, the new entry will be placed below any already existing ones.
+ And a final level in the menu hierarchy: A submenu of the submenu <menuchoice><guimenuitem>Means</guimenuitem></menuchoice>.
</para>
<programlisting>
<entry component="t_test_two_vars" />
@@ -226,16 +226,16 @@ This is a guide to writing plugins for &rkward;.
<programlisting>
[...]
</menu>
- <entry component="corr_matrix" index="4"/>
- <entry component="descriptive" index="3"/>
- <entry component="simple_anova" index="5"/>
+ <entry component="corr_matrix"/>
+ <entry component="descriptive"/>
+ <entry component="simple_anova"/>
</menu>
</programlisting>
<para>
- These are the final entries visible in the screenshots below. Note, that you don't need to define the entries in the order they should have in the menu. Use the <parameter>index</parameter> attribute instead.
+ These are the final entries visible in the screenshots below.
</para>
<programlisting>
- <menu id="plots" label="Plots" index="5">
+ <menu id="plots" label="Plots">
[...]
</menu>
</programlisting>
@@ -243,7 +243,7 @@ This is a guide to writing plugins for &rkward;.
Of course you can also place your plugins in menus other than <menuchoice><guimenu>Analysis</guimenu></menuchoice>.
</para>
<programlisting>
- <menu id="file" label="File" index="0">
+ <menu id="file" label="File">
[...]
</menu>
</programlisting>
@@ -271,6 +271,42 @@ This is a guide to writing plugins for &rkward;.
<para>
Confused? The easiest way to get started is probably taking some of the existing &pluginmap; files shipped with the distribution, and modifying them to your needs. Also, if you need help, don't hesitate to write to the development mailing list.
</para>
+ <sect1 id="pluginmap_grouping"><title>Controlling the order of menu entries</title>
+ <para>By default, all items (entries / submenus) inside a menu will be sorted alphabetically, automatically. In <emphasis>some</emphasis> cases you may want more control. In this case you can group elements as follows:</para>
+ <itemizedlist>
+ <listitem>
+ <para>You can define groups inside any menu like this. All elements belonging to the same group will be grouped together:</para>
+ <programlisting>
+ <group id="somegroup"/>
+ </programlisting>
+ </listitem><listitem>
+ <para>If you want the group to be visually separated from other entries, use:</para>
+ <programlisting>
+ <group id="somegroup" separated="true"/>
+ </programlisting>
+ </listitem><listitem>
+ <para>Entries, menus, and groups can be appended to a specified group, using:</para>
+ <programlisting>
+ <entry component="..." group="somegroup"/>
+ </programlisting>
+ </listitem><listitem>
+ <para>In fact, it is also possible to define groups (without separator lines) implicitly:</para>
+ <programlisting>
+ <entry component="first" group="a"/>
+ <entry component="third"/>
+ <entry component="second" group="a"/>
+ </programlisting>
+ </listitem><listitem>
+ <para>Group names are specific to each menu. Group "a" in menu "Data" does not conflict with group "a" in menu "Analysis", for example.</para>
+ </listitem><listitem>
+ <para>The most common use case is defining groups at the top, or at the bottom of a menu. For this, there are pre-defined groups "top" and "bottom" in each menu.</para>
+ </listitem><listitem>
+ <para>Entries within each group are sorted, alphabetically. Groups appear in the order of declaration (unless appended to another group, of course).</para>
+ </listitem><listitem>
+ <para>Menus and entries without group specification logically form a group (""), too.</para>
+ </listitem>
+ </itemizedlist>
+ </sect1>
</chapter>
<chapter id="mainxml">
More information about the rkward-tracker
mailing list