<spanid="evennia-utils-evmenu"></span><h1>evennia.utils.evmenu<aclass="headerlink"href="#module-evennia.utils.evmenu"title="Permalink to this headline">¶</a></h1>
<dt><strong>text</strong> (str, tuple or None): Text shown at this node. If a tuple, the</dt><dd><p>second element in the tuple is a help text to display at this
node when the user enters the menu help command there.</p>
<spanclass="p">{</span><spanclass="s2">"desc"</span><spanclass="p">:</span><spanclass="s2">"Go to node 3."</span><spanclass="p">,</span>
<emclass="property">exception </em><codeclass="sig-prename descclassname">evennia.utils.evmenu.</code><codeclass="sig-name descname">EvMenuError</code><aclass="reference internal"href="../_modules/evennia/utils/evmenu.html#EvMenuError"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.evmenu.EvMenuError"title="Permalink to this definition">¶</a></dt>
<emclass="property">exception </em><codeclass="sig-prename descclassname">evennia.utils.evmenu.</code><codeclass="sig-name descname">EvMenuGotoAbortMessage</code><aclass="reference internal"href="../_modules/evennia/utils/evmenu.html#EvMenuGotoAbortMessage"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.evmenu.EvMenuGotoAbortMessage"title="Permalink to this definition">¶</a></dt>
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.utils.evmenu.</code><codeclass="sig-name descname">CmdEvMenuNode</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/evmenu.html#CmdEvMenuNode"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.evmenu.CmdEvMenuNode"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">key</code><emclass="property"> = '__noinput_command'</em><aclass="headerlink"href="#evennia.utils.evmenu.CmdEvMenuNode.key"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">aliases</code><emclass="property"> = ['__nomatch_command']</em><aclass="headerlink"href="#evennia.utils.evmenu.CmdEvMenuNode.aliases"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">locks</code><emclass="property"> = 'cmd:all()'</em><aclass="headerlink"href="#evennia.utils.evmenu.CmdEvMenuNode.locks"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">help_category</code><emclass="property"> = 'menu'</em><aclass="headerlink"href="#evennia.utils.evmenu.CmdEvMenuNode.help_category"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">auto_help_display_key</code><emclass="property"> = '<menu commands>'</em><aclass="headerlink"href="#evennia.utils.evmenu.CmdEvMenuNode.auto_help_display_key"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">get_help</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/evmenu.html#CmdEvMenuNode.get_help"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.evmenu.CmdEvMenuNode.get_help"title="Permalink to this definition">¶</a></dt>
<dd><p>Return the help message for this command and this caller.</p>
<p>By default, return self.__doc__ (the docstring just under
the class definition). You can override this behavior,
though, and even customize it depending on the caller, or other
commands the caller can use.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><ulclass="simple">
<li><p><strong>caller</strong> (<em>Object</em><em> or </em><em>Account</em>) – the caller asking for help on the command.</p></li>
<li><p><strong>cmdset</strong> (<aclass="reference internal"href="evennia.commands.cmdset.html#evennia.commands.cmdset.CmdSet"title="evennia.commands.cmdset.CmdSet"><em>CmdSet</em></a>) – the command set (if you need additional commands).</p></li>
</ul>
</dd>
<dtclass="field-even">Returns</dt>
<ddclass="field-even"><p><em>docstring (str)</em>– the help text to provide the caller for this command.</p>
<codeclass="sig-name descname">func</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/evmenu.html#CmdEvMenuNode.func"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.evmenu.CmdEvMenuNode.func"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">lock_storage</code><emclass="property"> = 'cmd:all()'</em><aclass="headerlink"href="#evennia.utils.evmenu.CmdEvMenuNode.lock_storage"title="Permalink to this definition">¶</a></dt>
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.utils.evmenu.</code><codeclass="sig-name descname">EvMenuCmdSet</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">cmdsetobj</span><spanclass="o">=</span><spanclass="default_value">None</span></em>, <emclass="sig-param"><spanclass="n">key</span><spanclass="o">=</span><spanclass="default_value">None</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/evmenu.html#EvMenuCmdSet"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.evmenu.EvMenuCmdSet"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">key</code><emclass="property"> = 'menu_cmdset'</em><aclass="headerlink"href="#evennia.utils.evmenu.EvMenuCmdSet.key"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">priority</code><emclass="property"> = 1</em><aclass="headerlink"href="#evennia.utils.evmenu.EvMenuCmdSet.priority"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">mergetype</code><emclass="property"> = 'Replace'</em><aclass="headerlink"href="#evennia.utils.evmenu.EvMenuCmdSet.mergetype"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">no_objs</code><emclass="property"> = True</em><aclass="headerlink"href="#evennia.utils.evmenu.EvMenuCmdSet.no_objs"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">no_exits</code><emclass="property"> = True</em><aclass="headerlink"href="#evennia.utils.evmenu.EvMenuCmdSet.no_exits"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">no_channels</code><emclass="property"> = False</em><aclass="headerlink"href="#evennia.utils.evmenu.EvMenuCmdSet.no_channels"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">at_cmdset_creation</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/evmenu.html#EvMenuCmdSet.at_cmdset_creation"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.evmenu.EvMenuCmdSet.at_cmdset_creation"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">path</code><emclass="property"> = 'evennia.utils.evmenu.EvMenuCmdSet'</em><aclass="headerlink"href="#evennia.utils.evmenu.EvMenuCmdSet.path"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">node_border_char</code><emclass="property"> = '_'</em><aclass="headerlink"href="#evennia.utils.evmenu.EvMenu.node_border_char"title="Permalink to this definition">¶</a></dt>
<dd><p>Initialize the menu tree and start the caller onto the first node.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><ulclass="simple">
<li><p><strong>caller</strong> (<em>Object</em><em>, </em><em>Account</em><em> or </em><aclass="reference internal"href="evennia.server.session.html#evennia.server.session.Session"title="evennia.server.session.Session"><em>Session</em></a>) – The user of the menu.</p></li>
<li><p><strong>menudata</strong> (<em>str</em><em>, </em><em>module</em><em> or </em><em>dict</em>) – The full or relative path to the module
holding the menu tree data. All global functions in this module
whose name doesn’t start with ‘_ ‘ will be parsed as menu nodes.
Also the module itself is accepted as input. Finally, a dictionary
menu tree can be given directly. This must then be a mapping
<strong>{“nodekey”:callable,…}</strong> where <strong>callable</strong> must be called as
and return the data expected of a menu node. This allows for
dynamic menu creation.</p></li>
<li><p><strong>startnode</strong> (<em>str</em><em>, </em><em>optional</em>) – The starting node name in the menufile.</p></li>
<li><p><strong>cmdset_mergetype</strong> (<em>str</em><em>, </em><em>optional</em>) –‘Replace’ (default) means the menu
commands will be exclusive - no other normal commands will
be usable while the user is in the menu. ‘Union’ means the
menu commands will be integrated with the existing commands
(it will merge with <strong>merge_priority</strong>), if so, make sure that
the menu’s command names don’t collide with existing commands
in an unexpected way. Also the CMD_NOMATCH and CMD_NOINPUT will
be overloaded by the menu cmdset. Other cmdser mergetypes
has little purpose for the menu.</p></li>
<li><p><strong>cmdset_priority</strong> (<em>int</em><em>, </em><em>optional</em>) – The merge priority for the
menu command set. The default (1) is usually enough for most
types of menus.</p></li>
<li><p><strong>auto_quit</strong> (<em>bool</em><em>, </em><em>optional</em>) – Allow user to use “q”, “quit” or
“exit” to leave the menu at any point. Recommended during
development!</p></li>
<li><p><strong>auto_look</strong> (<em>bool</em><em>, </em><em>optional</em>) – Automatically make “looK” or “l” to
re-show the last node. Turning this off means you have to handle
re-showing nodes yourself, but may be useful if you need to
use “l” for some other purpose.</p></li>
<li><p><strong>auto_help</strong> (<em>bool</em><em>, </em><em>optional</em>) – Automatically make “help” or “h” show
the current help entry for the node. If turned off, eventual
help must be handled manually, but it may be useful if you
need ‘h’ for some other purpose, for example.</p></li>
<li><p><strong>cmd_on_exit</strong> (<em>callable</em><em>, </em><em>str</em><em> or </em><em>None</em><em>, </em><em>optional</em>) – When exiting the menu
(either by reaching a node with no options or by using the
in-built quit command (activated with <strong>allow_quit</strong>), this
callback function or command string will be executed.
The callback function takes two parameters, the caller then the
EvMenu object. This is called after cleanup is complete.
Set to None to not call any command.</p></li>
<li><p><strong>persistent</strong> (<em>bool</em><em>, </em><em>optional</em>) – Make the Menu persistent (i.e. it will
survive a reload. This will make the Menu cmdset persistent. Use
with caution - if your menu is buggy you may end up in a state
you can’t get out of! Also note that persistent mode requires
that all formatters, menu nodes and callables are possible to
<em>pickle</em>. When the server is reloaded, the latest node shown will be completely
re-run with the same input arguments - so be careful if you are counting
up some persistent counter or similar - the counter may be run twice if
reload happens on the node that does that. Note that if <strong>debug</strong> is True,
this setting is ignored and assumed to be False.</p></li>
<li><p><strong>startnode_input</strong> (<em>str</em><em> or </em><em>(</em><em>str</em><em>, </em><em>dict</em><em>)</em><em>, </em><em>optional</em>) – Send an input text to <strong>startnode</strong> as if
a user input text from a fictional previous node. If including the dict, this will
be passed as <strong>kwargs to that node. When the server reloads,
the latest visited node will be re-run as **node(caller, raw_string, **kwargs)</strong>.</p></li>
<li><p><strong>session</strong> (<aclass="reference internal"href="evennia.server.session.html#evennia.server.session.Session"title="evennia.server.session.Session"><em>Session</em></a><em>, </em><em>optional</em>) – This is useful when calling EvMenu from an account
in multisession mode > 2. Note that this session only really relevant
for the very first display of the first node - after that, EvMenu itself
will keep the session updated from the command input. So a persistent
menu will <em>not</em> be using this same session anymore after a reload.</p></li>
<li><p><strong>debug</strong> (<em>bool</em><em>, </em><em>optional</em>) – If set, the ‘menudebug’ command will be made available
by default in all nodes of the menu. This will print out the current state of
the menu. Deactivate for production use! When the debug flag is active, the
<strong>persistent</strong> flag is deactivated.</p></li>
<ddclass="field-even"><p><aclass="reference internal"href="#evennia.utils.evmenu.EvMenuError"title="evennia.utils.evmenu.EvMenuError"><strong>EvMenuError</strong></a>– If the start/end node is not found in menu tree.</p>
<codeclass="sig-name descname">msg</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">txt</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/evmenu.html#EvMenu.msg"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.evmenu.EvMenu.msg"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">run_exec</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">nodename</span></em>, <emclass="sig-param"><spanclass="n">raw_string</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/evmenu.html#EvMenu.run_exec"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.evmenu.EvMenu.run_exec"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">extract_goto_exec</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">nodename</span></em>, <emclass="sig-param"><spanclass="n">option_dict</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/evmenu.html#EvMenu.extract_goto_exec"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.evmenu.EvMenu.extract_goto_exec"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">goto</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">nodename</span></em>, <emclass="sig-param"><spanclass="n">raw_string</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/evmenu.html#EvMenu.goto"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.evmenu.EvMenu.goto"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">run_exec_then_goto</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">runexec</span></em>, <emclass="sig-param"><spanclass="n">goto</span></em>, <emclass="sig-param"><spanclass="n">raw_string</span></em>, <emclass="sig-param"><spanclass="n">runexec_kwargs</span><spanclass="o">=</span><spanclass="default_value">None</span></em>, <emclass="sig-param"><spanclass="n">goto_kwargs</span><spanclass="o">=</span><spanclass="default_value">None</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/evmenu.html#EvMenu.run_exec_then_goto"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.evmenu.EvMenu.run_exec_then_goto"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">close_menu</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/evmenu.html#EvMenu.close_menu"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.evmenu.EvMenu.close_menu"title="Permalink to this definition">¶</a></dt>
<dd><p>Shutdown menu; occurs when reaching the end node or using the quit command.</p>
<codeclass="sig-name descname">print_debug_info</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">arg</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/evmenu.html#EvMenu.print_debug_info"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.evmenu.EvMenu.print_debug_info"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">parse_input</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">raw_string</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/evmenu.html#EvMenu.parse_input"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.evmenu.EvMenu.parse_input"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">display_nodetext</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/evmenu.html#EvMenu.display_nodetext"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.evmenu.EvMenu.display_nodetext"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">display_helptext</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/evmenu.html#EvMenu.display_helptext"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.evmenu.EvMenu.display_helptext"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">nodetext_formatter</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">nodetext</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/evmenu.html#EvMenu.nodetext_formatter"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.evmenu.EvMenu.nodetext_formatter"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">helptext_formatter</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">helptext</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/evmenu.html#EvMenu.helptext_formatter"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.evmenu.EvMenu.helptext_formatter"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">options_formatter</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">optionlist</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/evmenu.html#EvMenu.options_formatter"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.evmenu.EvMenu.options_formatter"title="Permalink to this definition">¶</a></dt>
<li><p><strong>optionlist</strong> (<em>list</em>) – List of (key, description) tuples for every
option related to this node.</p></li>
<li><p><strong>caller</strong> (<em>Object</em><em>, </em><em>Account</em><em> or </em><em>None</em><em>, </em><em>optional</em>) – The caller of the node.</p></li>
</ul>
</dd>
<dtclass="field-even">Returns</dt>
<ddclass="field-even"><p><em>options (str)</em>– The formatted option display.</p>
<codeclass="sig-name descname">node_formatter</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">nodetext</span></em>, <emclass="sig-param"><spanclass="n">optionstext</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/evmenu.html#EvMenu.node_formatter"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.evmenu.EvMenu.node_formatter"title="Permalink to this definition">¶</a></dt>
<li><p><strong>nodetext</strong> (<em>str</em>) – The node text as returned by <strong>self.nodetext_formatter</strong>.</p></li>
<li><p><strong>optionstext</strong> (<em>str</em>) – The options display as returned by <strong>self.options_formatter</strong>.</p></li>
<li><p><strong>caller</strong> (<em>Object</em><em>, </em><em>Account</em><em> or </em><em>None</em><em>, </em><em>optional</em>) – The caller of the node.</p></li>
</ul>
</dd>
<dtclass="field-even">Returns</dt>
<ddclass="field-even"><p><em>node (str)</em>– The formatted node to display.</p>
<codeclass="sig-prename descclassname">evennia.utils.evmenu.</code><codeclass="sig-name descname">list_node</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">option_generator</span></em>, <emclass="sig-param"><spanclass="n">select</span><spanclass="o">=</span><spanclass="default_value">None</span></em>, <emclass="sig-param"><spanclass="n">pagesize</span><spanclass="o">=</span><spanclass="default_value">10</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/evmenu.html#list_node"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.evmenu.list_node"title="Permalink to this definition">¶</a></dt>
<dd><p>Decorator for making an EvMenu node into a multi-page list node. Will add new options,
prepending those options added in the node.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><ulclass="simple">
<li><p><strong>option_generator</strong> (<em>callable</em><em> or </em><em>list</em>) – A list of strings indicating the options, or a callable
that is called as option_generator(caller) to produce such a list.</p></li>
<li><p><strong>select</strong> (<em>callable</em><em> or </em><em>str</em><em>, </em><em>optional</em>) – Node to redirect a selection to. Its <strong>**kwargs</strong> will
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.utils.evmenu.</code><codeclass="sig-name descname">CmdGetInput</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/evmenu.html#CmdGetInput"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.evmenu.CmdGetInput"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">key</code><emclass="property"> = '__nomatch_command'</em><aclass="headerlink"href="#evennia.utils.evmenu.CmdGetInput.key"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">aliases</code><emclass="property"> = ['__noinput_command']</em><aclass="headerlink"href="#evennia.utils.evmenu.CmdGetInput.aliases"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">func</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/evmenu.html#CmdGetInput.func"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.evmenu.CmdGetInput.func"title="Permalink to this definition">¶</a></dt>
<dd><p>This is called when user enters anything.</p>
<codeclass="sig-name descname">help_category</code><emclass="property"> = 'general'</em><aclass="headerlink"href="#evennia.utils.evmenu.CmdGetInput.help_category"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">lock_storage</code><emclass="property"> = 'cmd:all();'</em><aclass="headerlink"href="#evennia.utils.evmenu.CmdGetInput.lock_storage"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">search_index_entry</code><emclass="property"> = {'aliases': '__noinput_command', 'category': 'general', 'key': '__nomatch_command', 'no_prefix': ' __noinput_command', 'tags': '', 'text': '\n Enter your data and press return.\n '}</em><aclass="headerlink"href="#evennia.utils.evmenu.CmdGetInput.search_index_entry"title="Permalink to this definition">¶</a></dt>
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.utils.evmenu.</code><codeclass="sig-name descname">InputCmdSet</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">cmdsetobj</span><spanclass="o">=</span><spanclass="default_value">None</span></em>, <emclass="sig-param"><spanclass="n">key</span><spanclass="o">=</span><spanclass="default_value">None</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/evmenu.html#InputCmdSet"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.evmenu.InputCmdSet"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">key</code><emclass="property"> = 'input_cmdset'</em><aclass="headerlink"href="#evennia.utils.evmenu.InputCmdSet.key"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">priority</code><emclass="property"> = 1</em><aclass="headerlink"href="#evennia.utils.evmenu.InputCmdSet.priority"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">mergetype</code><emclass="property"> = 'Replace'</em><aclass="headerlink"href="#evennia.utils.evmenu.InputCmdSet.mergetype"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">no_objs</code><emclass="property"> = True</em><aclass="headerlink"href="#evennia.utils.evmenu.InputCmdSet.no_objs"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">no_exits</code><emclass="property"> = True</em><aclass="headerlink"href="#evennia.utils.evmenu.InputCmdSet.no_exits"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">no_channels</code><emclass="property"> = False</em><aclass="headerlink"href="#evennia.utils.evmenu.InputCmdSet.no_channels"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">at_cmdset_creation</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/evmenu.html#InputCmdSet.at_cmdset_creation"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.evmenu.InputCmdSet.at_cmdset_creation"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">path</code><emclass="property"> = 'evennia.utils.evmenu.InputCmdSet'</em><aclass="headerlink"href="#evennia.utils.evmenu.InputCmdSet.path"title="Permalink to this definition">¶</a></dt>
<li><p><strong>session</strong> (<aclass="reference internal"href="evennia.server.session.html#evennia.server.session.Session"title="evennia.server.session.Session"><em>Session</em></a><em>, </em><em>optional</em>) – This allows to specify the
<p>The result value sent to the callback is raw and not processed in any
way. This means that you will get the ending line return character from
most types of client inputs. So make sure to strip that before doing a
comparison.</p>
<p>When the prompt is running, a temporary object <strong>caller.ndb._getinput</strong>
is stored; this will be removed when the prompt finishes.</p>
<p>If you need the specific Session of the caller (which may not be easy
to get if caller is an account in higher multisession modes), then it
is available in the callback through <strong>caller.ndb._getinput._session</strong>.
This is why the <strong>session</strong> is required as input.</p>
<p>It’s not recommended to ‘chain’<strong>get_input</strong> into a sequence of
questions. This will result in the caller stacking ever more instances
of InputCmdSets. While they will all be cleared on concluding the
get_input chain, EvMenu should be considered for anything beyond a
single question.</p>
</dd></dl>
<dlclass="py class">
<dtid="evennia.utils.evmenu.CmdYesNoQuestion">
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.utils.evmenu.</code><codeclass="sig-name descname">CmdYesNoQuestion</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/evmenu.html#CmdYesNoQuestion"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.evmenu.CmdYesNoQuestion"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">key</code><emclass="property"> = '__noinput_command'</em><aclass="headerlink"href="#evennia.utils.evmenu.CmdYesNoQuestion.key"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">arg_regex</code><emclass="property"> = re.compile('^$', re.IGNORECASE)</em><aclass="headerlink"href="#evennia.utils.evmenu.CmdYesNoQuestion.arg_regex"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">func</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/evmenu.html#CmdYesNoQuestion.func"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.evmenu.CmdYesNoQuestion.func"title="Permalink to this definition">¶</a></dt>
<dd><p>This is called when user enters anything.</p>
<codeclass="sig-name descname">help_category</code><emclass="property"> = 'general'</em><aclass="headerlink"href="#evennia.utils.evmenu.CmdYesNoQuestion.help_category"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">lock_storage</code><emclass="property"> = 'cmd:all();'</em><aclass="headerlink"href="#evennia.utils.evmenu.CmdYesNoQuestion.lock_storage"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">search_index_entry</code><emclass="property"> = {'aliases': 'a abort yes no n y __nomatch_command', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' a abort yes no n y __nomatch_command', 'tags': '', 'text': '\n Handle a prompt for yes or no. Press [return] for the default choice.\n\n '}</em><aclass="headerlink"href="#evennia.utils.evmenu.CmdYesNoQuestion.search_index_entry"title="Permalink to this definition">¶</a></dt>
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.utils.evmenu.</code><codeclass="sig-name descname">YesNoQuestionCmdSet</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">cmdsetobj</span><spanclass="o">=</span><spanclass="default_value">None</span></em>, <emclass="sig-param"><spanclass="n">key</span><spanclass="o">=</span><spanclass="default_value">None</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/evmenu.html#YesNoQuestionCmdSet"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.evmenu.YesNoQuestionCmdSet"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">key</code><emclass="property"> = 'yes_no_question_cmdset'</em><aclass="headerlink"href="#evennia.utils.evmenu.YesNoQuestionCmdSet.key"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">priority</code><emclass="property"> = 1</em><aclass="headerlink"href="#evennia.utils.evmenu.YesNoQuestionCmdSet.priority"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">mergetype</code><emclass="property"> = 'Replace'</em><aclass="headerlink"href="#evennia.utils.evmenu.YesNoQuestionCmdSet.mergetype"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">no_objs</code><emclass="property"> = True</em><aclass="headerlink"href="#evennia.utils.evmenu.YesNoQuestionCmdSet.no_objs"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">no_exits</code><emclass="property"> = True</em><aclass="headerlink"href="#evennia.utils.evmenu.YesNoQuestionCmdSet.no_exits"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">no_channels</code><emclass="property"> = False</em><aclass="headerlink"href="#evennia.utils.evmenu.YesNoQuestionCmdSet.no_channels"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">at_cmdset_creation</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/evmenu.html#YesNoQuestionCmdSet.at_cmdset_creation"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.evmenu.YesNoQuestionCmdSet.at_cmdset_creation"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">path</code><emclass="property"> = 'evennia.utils.evmenu.YesNoQuestionCmdSet'</em><aclass="headerlink"href="#evennia.utils.evmenu.YesNoQuestionCmdSet.path"title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
</dd></dl>
<dlclass="py function">
<dtid="evennia.utils.evmenu.ask_yes_no">
<codeclass="sig-prename descclassname">evennia.utils.evmenu.</code><codeclass="sig-name descname">ask_yes_no</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">caller</span></em>, <emclass="sig-param"><spanclass="n">prompt</span><spanclass="o">=</span><spanclass="default_value">'Yes or No {options}?'</span></em>, <emclass="sig-param"><spanclass="n">yes_action</span><spanclass="o">=</span><spanclass="default_value">'Yes'</span></em>, <emclass="sig-param"><spanclass="n">no_action</span><spanclass="o">=</span><spanclass="default_value">'No'</span></em>, <emclass="sig-param"><spanclass="n">default</span><spanclass="o">=</span><spanclass="default_value">None</span></em>, <emclass="sig-param"><spanclass="n">allow_abort</span><spanclass="o">=</span><spanclass="default_value">False</span></em>, <emclass="sig-param"><spanclass="n">session</span><spanclass="o">=</span><spanclass="default_value">None</span></em>, <emclass="sig-param"><spanclass="o">*</span><spanclass="n">args</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/evmenu.html#ask_yes_no"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.evmenu.ask_yes_no"title="Permalink to this definition">¶</a></dt>
<dd><p>A helper question for asking a simple yes/no question. This will cause
the system to pause and wait for input from the player.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><ulclass="simple">
<li><p><strong>prompt</strong> (<em>str</em>) – The yes/no question to ask. This takes an optional formatting
marker <strong>{options}</strong> which will be filled with ‘Y/N’, ‘[Y]/N’ or
‘Y/[N]’ depending on the setting of <strong>default</strong>. If <strong>allow_abort</strong> is set,
then the ‘A(bort)’ option will also be available.</p></li>
<li><p><strong>yes_action</strong> (<em>callable</em><em> or </em><em>str</em>) – If a callable, this will be called
with <strong>(caller, *args, **kwargs)</strong> when the Yes-choice is made.
If a string, this string will be echoed back to the caller.</p></li>
<li><p><strong>no_action</strong> (<em>callable</em><em> or </em><em>str</em>) – If a callable, this will be called
with <strong>(caller, *args, **kwargs)</strong> when the No-choice is made.
If a string, this string will be echoed back to the caller.</p></li>
<li><p><strong>default</strong> (<em>str optional</em>) – This is what the user will get if they just press the
return key without giving any input. One of ‘N’, ‘Y’, ‘A’ or <strong>None</strong>
for no default (an explicit choice must be given). If ‘A’ (abort)
is given, <strong>allow_abort</strong> kwarg is ignored and assumed set.</p></li>
<li><p><strong>allow_abort</strong> (<em>bool</em><em>, </em><em>optional</em>) – If set, the ‘A(bort)’ option is available
(a third option meaning neither yes or no but just exits the prompt).</p></li>
<li><p><strong>session</strong> (<aclass="reference internal"href="evennia.server.session.html#evennia.server.session.Session"title="evennia.server.session.Session"><em>Session</em></a><em>, </em><em>optional</em>) – This allows to specify the
session to send the prompt to. It’s usually only needed if <strong>caller</strong>
is an Account in multisession modes greater than 2. The session is
then updated by the command and is available (for example in
callbacks) through <strong>caller.ndb._yes_no_question.session</strong>.</p></li>
<li><p><strong>*args</strong>– Additional arguments passed on into callables.</p></li>
<li><p><strong>**kwargs</strong>– Additional keyword args passed on into callables.</p></li>
</ul>
</dd>
<dtclass="field-even">Raises</dt>
<ddclass="field-even"><p><strong>RuntimeError</strong><strong>, </strong><strong>FooError</strong>– If default and <strong>allow_abort</strong> clashes.</p>
</dd>
</dl>
<pclass="rubric">Example</p>
<divclass="highlight-default notranslate"><divclass="highlight"><pre><span></span><spanclass="c1"># just returning strings</span>
<spanclass="n">ask_yes_no</span><spanclass="p">(</span><spanclass="n">caller</span><spanclass="p">,</span><spanclass="s2">"Are you happy </span><spanclass="si">{options}</span><spanclass="s2">?"</span><spanclass="p">,</span>
<spanclass="n">ask_yes_no</span><spanclass="p">(</span><spanclass="n">caller</span><spanclass="p">,</span><spanclass="s2">"Are you sad </span><spanclass="si">{options}</span><spanclass="s2">?"</span><spanclass="p">,</span>
<codeclass="sig-prename descclassname">evennia.utils.evmenu.</code><codeclass="sig-name descname">parse_menu_template</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">caller</span></em>, <emclass="sig-param"><spanclass="n">menu_template</span></em>, <emclass="sig-param"><spanclass="n">goto_callables</span><spanclass="o">=</span><spanclass="default_value">None</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/evmenu.html#parse_menu_template"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.evmenu.parse_menu_template"title="Permalink to this definition">¶</a></dt>