evennia/docs/2.x/api/evennia.contrib.base_systems.building_menu.building_menu.html
Evennia docbuilder action e535f5782a Updated HTML docs.
2023-10-19 20:22:27 +00:00

1000 lines
No EOL
79 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>evennia.contrib.base_systems.building_menu.building_menu &#8212; Evennia 2.x documentation</title>
<link rel="stylesheet" href="../_static/nature.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<script id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/language_data.js"></script>
<link rel="shortcut icon" href="../_static/favicon.ico"/>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="evennia.contrib.base_systems.building_menu.tests" href="evennia.contrib.base_systems.building_menu.tests.html" />
<link rel="prev" title="evennia.contrib.base_systems.building_menu" href="evennia.contrib.base_systems.building_menu.html" />
</head><body>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="evennia.contrib.base_systems.building_menu.tests.html" title="evennia.contrib.base_systems.building_menu.tests"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="evennia.contrib.base_systems.building_menu.html" title="evennia.contrib.base_systems.building_menu"
accesskey="P">previous</a> |</li>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 2.x</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="../Evennia-API.html" >API Summary</a> &#187;</li>
<li class="nav-item nav-item-2"><a href="evennia-api.html" >evennia</a> &#187;</li>
<li class="nav-item nav-item-3"><a href="evennia.html" >evennia</a> &#187;</li>
<li class="nav-item nav-item-4"><a href="evennia.contrib.html" >evennia.contrib</a> &#187;</li>
<li class="nav-item nav-item-5"><a href="evennia.contrib.base_systems.html" >evennia.contrib.base_systems</a> &#187;</li>
<li class="nav-item nav-item-6"><a href="evennia.contrib.base_systems.building_menu.html" accesskey="U">evennia.contrib.base_systems.building_menu</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">evennia.contrib.base_systems.building_menu.building_menu</a></li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<p class="logo"><a href="../index.html">
<img class="logo" src="../_static/evennia_logo.png" alt="Logo"/>
</a></p>
<div id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="../search.html" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" />
<input type="submit" value="Go" />
</form>
</div>
</div>
<script>$('#searchbox').show(0);</script>
<h4>Previous topic</h4>
<p class="topless"><a href="evennia.contrib.base_systems.building_menu.html"
title="previous chapter">evennia.contrib.base_systems.building_menu</a></p>
<h4>Next topic</h4>
<p class="topless"><a href="evennia.contrib.base_systems.building_menu.tests.html"
title="next chapter">evennia.contrib.base_systems.building_menu.tests</a></p>
<div role="note" aria-label="source link">
<!--h3>This Page</h3-->
<ul class="this-page-menu">
<li><a href="../_sources/api/evennia.contrib.base_systems.building_menu.building_menu.md.txt"
rel="nofollow">Show Page Source</a></li>
</ul>
</div><h3>Links</h3>
<ul>
<li><a href="https://www.evennia.com/docs/latest/index.html">Documentation Top</a> </li>
<li><a href="https://www.evennia.com">Evennia Home</a> </li>
<li><a href="https://github.com/evennia/evennia">Github</a> </li>
<li><a href="http://games.evennia.com">Game Index</a> </li>
<li>
<a href="https://discord.gg/AJJpcRUhtF">Discord</a> -
<a href="https://github.com/evennia/evennia/discussions">Discussions</a> -
<a href="https://evennia.blogspot.com/">Blog</a>
</li>
</ul>
<h3>Doc Versions</h3>
<ul>
<li><a href="evennia.contrib.base_systems.building_menu.building_menu.html">2.x (main branch)</a></li>
<ul>
<li><a href="../1.3.0/index.html">1.3.0 (v1.3.0 branch)</a></li>
<li><a href="../0.9.5/index.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="bodywrapper">
<div class="body" role="main">
<section id="module-evennia.contrib.base_systems.building_menu.building_menu">
<span id="evennia-contrib-base-systems-building-menu-building-menu"></span><h1>evennia.contrib.base_systems.building_menu.building_menu<a class="headerlink" href="#module-evennia.contrib.base_systems.building_menu.building_menu" title="Permalink to this headline"></a></h1>
<p>Module containing the building menu system.</p>
<p>Evennia contributor: vincent-lg 2018</p>
<p>Building menus are in-game menus, not unlike <strong>EvMenu</strong> though using a
different approach. Building menus have been specifically designed to edit
information as a builder. Creating a building menu in a command allows
builders quick-editing of a given object, like a room. If you follow the
steps below to add the contrib, you will have access to an <strong>&#64;edit</strong> command
that will edit any default object offering to change its key and description.</p>
<ol class="arabic">
<li><p>Import the <strong>GenericBuildingCmd</strong> class from this contrib in your
<strong>mygame/commands/default_cmdset.py</strong> file:</p>
<blockquote>
<div><div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">evennia.contrib.base_systems.building_menu</span> <span class="kn">import</span> <span class="n">GenericBuildingCmd</span>
</pre></div>
</div>
</div></blockquote>
</li>
<li><p>Below, add the command in the <strong>CharacterCmdSet</strong>:</p>
<blockquote>
<div><div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># ... These lines should exist in the file</span>
<span class="k">class</span> <span class="nc">CharacterCmdSet</span><span class="p">(</span><span class="n">default_cmds</span><span class="o">.</span><span class="n">CharacterCmdSet</span><span class="p">):</span>
<span class="n">key</span> <span class="o">=</span> <span class="s2">&quot;DefaultCharacter&quot;</span>
<span class="k">def</span> <span class="nf">at_cmdset_creation</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">at_cmdset_creation</span><span class="p">()</span>
<span class="c1"># ... add the line below</span>
<span class="bp">self</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">GenericBuildingCmd</span><span class="p">())</span>
</pre></div>
</div>
</div></blockquote>
</li>
</ol>
<p>The <strong>&#64;edit</strong> command will allow you to edit any object. You will need to
specify the object name or ID as an argument. For instance: <strong>&#64;edit here</strong>
will edit the current room. However, building menus can perform much more
than this very simple example, read on for more details.</p>
<p>Building menus can be set to edit about anything. Here is an example of
output you could obtain when editing the room:</p>
<blockquote>
<div><p>Editing the room: Limbo(#2)</p>
<p>[T]itle: the limbo room
[D]escription</p>
<blockquote>
<div><p>This is the limbo room. You can easily change this default description,
either by using the <a href="#id1"><span class="problematic" id="id2">|</span></a><a class="reference external" href="mailto:y&#37;&#52;&#48;desc/edit|n">y<span>&#64;</span>desc/edit|n</a> command, or simply by entering this
menu (enter <a href="#id3"><span class="problematic" id="id4">|</span></a>yd|n).</p>
</div></blockquote>
<dl class="simple">
<dt>[E]xits:</dt><dd><p>north to A parking(#4)</p>
</dd>
</dl>
<p>[Q]uit this menu</p>
</div></blockquote>
<p>From there, you can open the title choice by pressing t. You can then
change the room title by simply entering text, and go back to the
main menu entering &#64; (all this is customizable). Press q to quit this menu.</p>
<p>The first thing to do is to create a new module and place a class
inheriting from <strong>BuildingMenu</strong> in it.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">evennia.contrib.base_systems.building_menu.building_menu</span> <span class="kn">import</span> <span class="n">BuildingMenu</span>
<span class="k">class</span> <span class="nc">RoomBuildingMenu</span><span class="p">(</span><span class="n">BuildingMenu</span><span class="p">):</span>
<span class="c1"># ...</span>
</pre></div>
</div>
<p>Next, override the <strong>init</strong> method. You can add choices (like the title,
description, and exits choices as seen above) by using the <strong>add_choice</strong>
method.</p>
<dl class="simple">
<dt>class RoomBuildingMenu(BuildingMenu):</dt><dd><dl class="simple">
<dt>def init(self, room):</dt><dd><p>self.add_choice(“title”, “t”, attr=”key”)</p>
</dd>
</dl>
</dd>
</dl>
<p>That will create the first choice, the title choice. If one opens your menu
and enter t, she will be in the title choice. She can change the title
(it will write in the rooms <strong>key</strong> attribute) and then go back to the
main menu using <strong>&#64;</strong>.</p>
<p><strong>add_choice</strong> has a lot of arguments and offers a great deal of
flexibility. The most useful ones is probably the usage of callbacks,
as you can set almost any argument in <strong>add_choice</strong> to be a callback, a
function that you have defined above in your module. This function will be
called when the menu element is triggered.</p>
<p>Notice that in order to edit a description, the best method to call isnt
<strong>add_choice</strong>, but <strong>add_choice_edit</strong>. This is a convenient shortcut
which is available to quickly open an <strong>EvEditor</strong> when entering this choice
and going back to the menu when the editor closes.</p>
<dl class="simple">
<dt>class RoomBuildingMenu(BuildingMenu):</dt><dd><dl class="simple">
<dt>def init(self, room):</dt><dd><p>self.add_choice(“title”, “t”, attr=”key”)
self.add_choice_edit(“description”, key=”d”, attr=”db.desc”)</p>
</dd>
</dl>
</dd>
</dl>
<p>When you wish to create a building menu, you just need to import your
class, create it specifying your intended caller and object to edit,
then call <strong>open</strong>:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="o">&lt;</span><span class="n">wherever</span><span class="o">&gt;</span> <span class="kn">import</span> <span class="nn">RoomBuildingMenu</span>
<span class="k">class</span> <span class="nc">CmdEdit</span><span class="p">(</span><span class="n">Command</span><span class="p">):</span>
<span class="n">key</span> <span class="o">=</span> <span class="s2">&quot;redit&quot;</span>
<span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="n">menu</span> <span class="o">=</span> <span class="n">RoomBuildingMenu</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">location</span><span class="p">)</span>
<span class="n">menu</span><span class="o">.</span><span class="n">open</span><span class="p">()</span>
</pre></div>
</div>
<p>This is a very short introduction. For more details, see the online tutorial
(<a class="reference external" href="https://github.com/evennia/evennia/wiki/Building-menus">https://github.com/evennia/evennia/wiki/Building-menus</a>) or read the
heavily-documented code below.</p>
<dl class="py function">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.menu_setattr">
<code class="sig-prename descclassname">evennia.contrib.base_systems.building_menu.building_menu.</code><code class="sig-name descname">menu_setattr</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">menu</span></em>, <em class="sig-param"><span class="n">choice</span></em>, <em class="sig-param"><span class="n">obj</span></em>, <em class="sig-param"><span class="n">string</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/building_menu/building_menu.html#menu_setattr"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.menu_setattr" title="Permalink to this definition"></a></dt>
<dd><p>Set the value at the specified attribute.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>menu</strong> (<a class="reference internal" href="#evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu" title="evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu"><em>BuildingMenu</em></a>) the menu object.</p></li>
<li><p><strong>choice</strong> (<em>Chocie</em>) the specific choice.</p></li>
<li><p><strong>obj</strong> (<em>Object</em>) the object to modify.</p></li>
<li><p><strong>string</strong> (<em>str</em>) the string with the new value.</p></li>
</ul>
</dd>
</dl>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>This function is supposed to be used as a default to
<strong>BuildingMenu.add_choice</strong>, when an attribute name is specified
(in the <strong>attr</strong> argument) but no function <strong>on_nomatch</strong> is defined.</p>
</div>
</dd></dl>
<dl class="py function">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.menu_quit">
<code class="sig-prename descclassname">evennia.contrib.base_systems.building_menu.building_menu.</code><code class="sig-name descname">menu_quit</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">caller</span></em>, <em class="sig-param"><span class="n">menu</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/building_menu/building_menu.html#menu_quit"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.menu_quit" title="Permalink to this definition"></a></dt>
<dd><p>Quit the menu, closing the CmdSet.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>caller</strong> (<em>Account</em><em> or </em><em>Object</em>) the caller.</p></li>
<li><p><strong>menu</strong> (<a class="reference internal" href="#evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu" title="evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu"><em>BuildingMenu</em></a>) the building menu to close.</p></li>
</ul>
</dd>
</dl>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>This callback is used by default when using the
<strong>BuildingMenu.add_choice_quit</strong> method. This method is called
automatically if the menu has no parent.</p>
</div>
</dd></dl>
<dl class="py function">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.menu_edit">
<code class="sig-prename descclassname">evennia.contrib.base_systems.building_menu.building_menu.</code><code class="sig-name descname">menu_edit</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">caller</span></em>, <em class="sig-param"><span class="n">choice</span></em>, <em class="sig-param"><span class="n">obj</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/building_menu/building_menu.html#menu_edit"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.menu_edit" title="Permalink to this definition"></a></dt>
<dd><p>Open the EvEditor to edit a specified attribute.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>caller</strong> (<em>Account</em><em> or </em><em>Object</em>) the caller.</p></li>
<li><p><strong>choice</strong> (<a class="reference internal" href="#evennia.contrib.base_systems.building_menu.building_menu.Choice" title="evennia.contrib.base_systems.building_menu.building_menu.Choice"><em>Choice</em></a>) the choice object.</p></li>
<li><p><strong>obj</strong> (<em>Object</em>) the object to edit.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="py class">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.CmdNoInput">
<em class="property">class </em><code class="sig-prename descclassname">evennia.contrib.base_systems.building_menu.building_menu.</code><code class="sig-name descname">CmdNoInput</code><span class="sig-paren">(</span><em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/building_menu/building_menu.html#CmdNoInput"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.CmdNoInput" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.commands.command.html#evennia.commands.command.Command" title="evennia.commands.command.Command"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.commands.command.Command</span></code></a></p>
<p>No input has been found.</p>
<dl class="py attribute">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.CmdNoInput.key">
<code class="sig-name descname">key</code><em class="property"> = '__noinput_command'</em><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.CmdNoInput.key" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.CmdNoInput.locks">
<code class="sig-name descname">locks</code><em class="property"> = 'cmd:all()'</em><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.CmdNoInput.locks" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.CmdNoInput.__init__">
<code class="sig-name descname">__init__</code><span class="sig-paren">(</span><em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/building_menu/building_menu.html#CmdNoInput.__init__"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.CmdNoInput.__init__" title="Permalink to this definition"></a></dt>
<dd><p>The lockhandler works the same as for objects.
optional kwargs will be set as properties on the Command at runtime,
overloading evential same-named class properties.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.CmdNoInput.func">
<code class="sig-name descname">func</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/building_menu/building_menu.html#CmdNoInput.func"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.CmdNoInput.func" title="Permalink to this definition"></a></dt>
<dd><p>Display the menu or choice text.</p>
</dd></dl>
<dl class="py attribute">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.CmdNoInput.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = []</em><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.CmdNoInput.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.CmdNoInput.help_category">
<code class="sig-name descname">help_category</code><em class="property"> = 'general'</em><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.CmdNoInput.help_category" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.CmdNoInput.lock_storage">
<code class="sig-name descname">lock_storage</code><em class="property"> = 'cmd:all()'</em><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.CmdNoInput.lock_storage" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.CmdNoInput.search_index_entry">
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': '', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' ', 'tags': '', 'text': 'No input has been found.'}</em><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.CmdNoInput.search_index_entry" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.CmdNoMatch">
<em class="property">class </em><code class="sig-prename descclassname">evennia.contrib.base_systems.building_menu.building_menu.</code><code class="sig-name descname">CmdNoMatch</code><span class="sig-paren">(</span><em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/building_menu/building_menu.html#CmdNoMatch"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.CmdNoMatch" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.commands.command.html#evennia.commands.command.Command" title="evennia.commands.command.Command"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.commands.command.Command</span></code></a></p>
<p>No input has been found.</p>
<dl class="py attribute">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.CmdNoMatch.key">
<code class="sig-name descname">key</code><em class="property"> = '__nomatch_command'</em><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.CmdNoMatch.key" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.CmdNoMatch.locks">
<code class="sig-name descname">locks</code><em class="property"> = 'cmd:all()'</em><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.CmdNoMatch.locks" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.CmdNoMatch.__init__">
<code class="sig-name descname">__init__</code><span class="sig-paren">(</span><em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/building_menu/building_menu.html#CmdNoMatch.__init__"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.CmdNoMatch.__init__" title="Permalink to this definition"></a></dt>
<dd><p>The lockhandler works the same as for objects.
optional kwargs will be set as properties on the Command at runtime,
overloading evential same-named class properties.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.CmdNoMatch.func">
<code class="sig-name descname">func</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/building_menu/building_menu.html#CmdNoMatch.func"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.CmdNoMatch.func" title="Permalink to this definition"></a></dt>
<dd><p>Call the proper menu or redirect to nomatch.</p>
</dd></dl>
<dl class="py attribute">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.CmdNoMatch.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = []</em><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.CmdNoMatch.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.CmdNoMatch.help_category">
<code class="sig-name descname">help_category</code><em class="property"> = 'general'</em><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.CmdNoMatch.help_category" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.CmdNoMatch.lock_storage">
<code class="sig-name descname">lock_storage</code><em class="property"> = 'cmd:all()'</em><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.CmdNoMatch.lock_storage" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.CmdNoMatch.search_index_entry">
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': '', 'category': 'general', 'key': '__nomatch_command', 'no_prefix': ' ', 'tags': '', 'text': 'No input has been found.'}</em><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.CmdNoMatch.search_index_entry" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.BuildingMenuCmdSet">
<em class="property">class </em><code class="sig-prename descclassname">evennia.contrib.base_systems.building_menu.building_menu.</code><code class="sig-name descname">BuildingMenuCmdSet</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">cmdsetobj</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">key</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/building_menu/building_menu.html#BuildingMenuCmdSet"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.BuildingMenuCmdSet" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.commands.cmdset.html#evennia.commands.cmdset.CmdSet" title="evennia.commands.cmdset.CmdSet"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.commands.cmdset.CmdSet</span></code></a></p>
<p>Building menu CmdSet.</p>
<dl class="py attribute">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.BuildingMenuCmdSet.key">
<code class="sig-name descname">key</code><em class="property"> = 'building_menu'</em><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.BuildingMenuCmdSet.key" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.BuildingMenuCmdSet.priority">
<code class="sig-name descname">priority</code><em class="property"> = 5</em><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.BuildingMenuCmdSet.priority" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.BuildingMenuCmdSet.mergetype">
<code class="sig-name descname">mergetype</code><em class="property"> = 'Replace'</em><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.BuildingMenuCmdSet.mergetype" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.BuildingMenuCmdSet.at_cmdset_creation">
<code class="sig-name descname">at_cmdset_creation</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/building_menu/building_menu.html#BuildingMenuCmdSet.at_cmdset_creation"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.BuildingMenuCmdSet.at_cmdset_creation" title="Permalink to this definition"></a></dt>
<dd><p>Populates the cmdset with commands.</p>
</dd></dl>
<dl class="py attribute">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.BuildingMenuCmdSet.path">
<code class="sig-name descname">path</code><em class="property"> = 'evennia.contrib.base_systems.building_menu.building_menu.BuildingMenuCmdSet'</em><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.BuildingMenuCmdSet.path" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.Choice">
<em class="property">class </em><code class="sig-prename descclassname">evennia.contrib.base_systems.building_menu.building_menu.</code><code class="sig-name descname">Choice</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">title</span></em>, <em class="sig-param"><span class="n">key</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">aliases</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">attr</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">text</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">glance</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">on_enter</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">on_nomatch</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">on_leave</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">menu</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">caller</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">obj</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/building_menu/building_menu.html#Choice"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.Choice" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>A choice object, created by <strong>add_choice</strong>.</p>
<dl class="py method">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.Choice.__init__">
<code class="sig-name descname">__init__</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">title</span></em>, <em class="sig-param"><span class="n">key</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">aliases</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">attr</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">text</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">glance</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">on_enter</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">on_nomatch</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">on_leave</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">menu</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">caller</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">obj</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/building_menu/building_menu.html#Choice.__init__"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.Choice.__init__" title="Permalink to this definition"></a></dt>
<dd><p>Constructor.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>title</strong> (<em>str</em>) the choices title.</p></li>
<li><p><strong>key</strong> (<em>str</em><em>, </em><em>optional</em>) the key of the letters to type to access
the choice. If not set, try to guess it based on the title.</p></li>
<li><p><strong>aliases</strong> (<em>list of str</em><em>, </em><em>optional</em>) the allowed aliases for this choice.</p></li>
<li><p><strong>attr</strong> (<em>str</em><em>, </em><em>optional</em>) the name of the attribute of obj to set.</p></li>
<li><p><strong>text</strong> (<em>str</em><em> or </em><em>callable</em><em>, </em><em>optional</em>) a text to be displayed for this
choice. It can be a callable.</p></li>
<li><p><strong>glance</strong> (<em>str</em><em> or </em><em>callable</em><em>, </em><em>optional</em>) an at-a-glance summary of the
sub-menu shown in the main menu. It can be set to
display the current value of the attribute in the
main menu itself.</p></li>
<li><p><strong>menu</strong> (<a class="reference internal" href="#evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu" title="evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu"><em>BuildingMenu</em></a><em>, </em><em>optional</em>) the parent building menu.</p></li>
<li><p><strong>on_enter</strong> (<em>callable</em><em>, </em><em>optional</em>) a callable to call when the
caller enters into the choice.</p></li>
<li><p><strong>on_nomatch</strong> (<em>callable</em><em>, </em><em>optional</em>) a callable to call when no
match is entered in the choice.</p></li>
<li><p><strong>on_leave</strong> (<em>callable</em><em>, </em><em>optional</em>) a callable to call when the caller
leaves the choice.</p></li>
<li><p><strong>caller</strong> (<em>Account</em><em> or </em><em>Object</em><em>, </em><em>optional</em>) the caller.</p></li>
<li><p><strong>obj</strong> (<em>Object</em><em>, </em><em>optional</em>) the object to edit.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.Choice.keys">
<em class="property">property </em><code class="sig-name descname">keys</code><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.Choice.keys" title="Permalink to this definition"></a></dt>
<dd><p>Return a tuple of keys separated by <strong>sep_keys</strong>.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.Choice.format_text">
<code class="sig-name descname">format_text</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/building_menu/building_menu.html#Choice.format_text"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.Choice.format_text" title="Permalink to this definition"></a></dt>
<dd><p>Format the choice text and return it, or an empty string.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.Choice.enter">
<code class="sig-name descname">enter</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">string</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/building_menu/building_menu.html#Choice.enter"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.Choice.enter" title="Permalink to this definition"></a></dt>
<dd><p>Called when the user opens the choice.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>string</strong> (<em>str</em>) the entered string.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.Choice.nomatch">
<code class="sig-name descname">nomatch</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">string</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/building_menu/building_menu.html#Choice.nomatch"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.Choice.nomatch" title="Permalink to this definition"></a></dt>
<dd><p>Called when the user entered something in the choice.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>string</strong> (<em>str</em>) the entered string.</p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><em>to_display (bool)</em> The return value of <strong>nomatch</strong> if set or
<strong>True</strong>. The rule is that if <strong>no_match</strong> returns <strong>True</strong>,
then the choice or menu is displayed.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.Choice.leave">
<code class="sig-name descname">leave</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">string</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/building_menu/building_menu.html#Choice.leave"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.Choice.leave" title="Permalink to this definition"></a></dt>
<dd><p>Called when the user closes the choice.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>string</strong> (<em>str</em>) the entered string.</p>
</dd>
</dl>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu">
<em class="property">class </em><code class="sig-prename descclassname">evennia.contrib.base_systems.building_menu.building_menu.</code><code class="sig-name descname">BuildingMenu</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">caller</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">obj</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">title</span><span class="o">=</span><span class="default_value">'Building menu: {obj}'</span></em>, <em class="sig-param"><span class="n">keys</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">parents</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">persistent</span><span class="o">=</span><span class="default_value">False</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/building_menu/building_menu.html#BuildingMenu"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Class allowing to create and set building menus to edit specific objects.</p>
<p>A building menu is somewhat similar to <strong>EvMenu</strong>, but designed to edit
objects by builders, although it can be used for players in some contexts.
You could, for instance, create a building menu to edit a room with a
sub-menu for the rooms key, another for the rooms description,
another for the rooms exits, and so on.</p>
<p>To add choices (simple sub-menus), you should call <strong>add_choice</strong> (see the
full documentation of this method). With most arguments, you can
specify either a plain string or a callback. This callback will be
called when the operation is to be performed.</p>
<p>Some methods are provided for frequent needs (see the <strong>add_choice_*</strong>
methods). Some helper functions are defined at the top of this
module in order to be used as arguments to <strong>add_choice</strong>
in frequent cases.</p>
<dl class="py attribute">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu.keys_go_back">
<code class="sig-name descname">keys_go_back</code><em class="property"> = ['&#64;']</em><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu.keys_go_back" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu.sep_keys">
<code class="sig-name descname">sep_keys</code><em class="property"> = '.'</em><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu.sep_keys" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu.joker_key">
<code class="sig-name descname">joker_key</code><em class="property"> = '*'</em><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu.joker_key" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu.min_shortcut">
<code class="sig-name descname">min_shortcut</code><em class="property"> = 1</em><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu.min_shortcut" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu.__init__">
<code class="sig-name descname">__init__</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">caller</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">obj</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">title</span><span class="o">=</span><span class="default_value">'Building menu: {obj}'</span></em>, <em class="sig-param"><span class="n">keys</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">parents</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">persistent</span><span class="o">=</span><span class="default_value">False</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/building_menu/building_menu.html#BuildingMenu.__init__"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu.__init__" title="Permalink to this definition"></a></dt>
<dd><p>Constructor, you shouldnt override. See <strong>init</strong> instead.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>caller</strong> (<em>Account</em><em> or </em><em>Object</em>) the caller.</p></li>
<li><p><strong>obj</strong> (<em>Object</em>) the object to be edited, like a room.</p></li>
<li><p><strong>title</strong> (<em>str</em><em>, </em><em>optional</em>) the menu title.</p></li>
<li><p><strong>keys</strong> (<em>list of str</em><em>, </em><em>optional</em>) the starting menu keys (None
to start from the first level).</p></li>
<li><p><strong>parents</strong> (<em>tuple</em><em>, </em><em>optional</em>) information for parent menus,
automatically supplied.</p></li>
<li><p><strong>persistent</strong> (<em>bool</em><em>, </em><em>optional</em>) should this building menu
survive a reload/restart?</p></li>
</ul>
</dd>
</dl>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>If some of these options have to be changed, it is
preferable to do so in the <strong>init</strong> method and not to
override <strong>__init__</strong>. For instance:</p>
<blockquote>
<div><dl class="simple">
<dt>class RoomBuildingMenu(BuildingMenu):</dt><dd><dl class="simple">
<dt>def init(self, room):</dt><dd><p>self.title = “Menu for room: {obj.key}(#{obj.id})”
# …</p>
</dd>
</dl>
</dd>
</dl>
</div></blockquote>
</div>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu.current_choice">
<em class="property">property </em><code class="sig-name descname">current_choice</code><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu.current_choice" title="Permalink to this definition"></a></dt>
<dd><p>Return the current choice or None.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p><em>choice (Choice)</em> the current choice or None.</p>
</dd>
</dl>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>We use the menu keys to identify the current position of
the caller in the menu. The menu <strong>keys</strong> hold a list of
keys that should match a choice to be usable.</p>
</div>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu.relevant_choices">
<em class="property">property </em><code class="sig-name descname">relevant_choices</code><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu.relevant_choices" title="Permalink to this definition"></a></dt>
<dd><p>Only return the relevant choices according to the current meny key.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p><em>relevant (list of Choice object)</em> the relevant choices.</p>
</dd>
</dl>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>We use the menu keys to identify the current position of
the caller in the menu. The menu <strong>keys</strong> hold a list of
keys that should match a choice to be usable.</p>
</div>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu.init">
<code class="sig-name descname">init</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">obj</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/building_menu/building_menu.html#BuildingMenu.init"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu.init" title="Permalink to this definition"></a></dt>
<dd><p>Create the sub-menu to edit the specified object.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>obj</strong> (<em>Object</em>) the object to edit.</p>
</dd>
</dl>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>This method is probably to be overridden in your subclasses.
Use <strong>add_choice</strong> and its variants to create menu choices.</p>
</div>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu.add_choice">
<code class="sig-name descname">add_choice</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">title</span></em>, <em class="sig-param"><span class="n">key</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">aliases</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">attr</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">text</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">glance</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">on_enter</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">on_nomatch</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">on_leave</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/building_menu/building_menu.html#BuildingMenu.add_choice"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu.add_choice" title="Permalink to this definition"></a></dt>
<dd><p>Add a choice, a valid sub-menu, in the current builder menu.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>title</strong> (<em>str</em>) the choices title.</p></li>
<li><p><strong>key</strong> (<em>str</em><em>, </em><em>optional</em>) the key of the letters to type to access
the sub-neu. If not set, try to guess it based on the
choice title.</p></li>
<li><p><strong>aliases</strong> (<em>list of str</em><em>, </em><em>optional</em>) the aliases for this choice.</p></li>
<li><p><strong>attr</strong> (<em>str</em><em>, </em><em>optional</em>) the name of the attribute of obj to set.
This is really useful if you want to edit an
attribute of the object (thats a frequent need). If
you dont want to do so, just use the <strong>on_*</strong> arguments.</p></li>
<li><p><strong>text</strong> (<em>str</em><em> or </em><em>callable</em><em>, </em><em>optional</em>) a text to be displayed when
the menu is opened It can be a callable.</p></li>
<li><p><strong>glance</strong> (<em>str</em><em> or </em><em>callable</em><em>, </em><em>optional</em>) an at-a-glance summary of the
sub-menu shown in the main menu. It can be set to
display the current value of the attribute in the
main menu itself.</p></li>
<li><p><strong>on_enter</strong> (<em>callable</em><em>, </em><em>optional</em>) a callable to call when the
caller enters into this choice.</p></li>
<li><p><strong>on_nomatch</strong> (<em>callable</em><em>, </em><em>optional</em>) a callable to call when
the caller enters something in this choice. If you
dont set this argument but you have specified
<strong>attr</strong>, then <strong>obj</strong>.**attr** will be set with the value
entered by the user.</p></li>
<li><p><strong>on_leave</strong> (<em>callable</em><em>, </em><em>optional</em>) a callable to call when the
caller leaves the choice.</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><em>choice (Choice)</em> the newly-created choice.</p>
</dd>
<dt class="field-odd">Raises</dt>
<dd class="field-odd"><p><strong>ValueError if the choice cannot be added.</strong> </p>
</dd>
</dl>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Most arguments can be callables, like functions. This has the
advantage of allowing great flexibility. If you specify
a callable in most of the arguments, the callable should return
the value expected by the argument (a str more often than
not). For instance, you could set a function to be called
to get the menu text, which allows for some filtering:</p>
<blockquote>
<div><dl class="simple">
<dt>def text_exits(menu):</dt><dd><p>return “Some text to display”</p>
</dd>
<dt>class RoomBuildingMenu(BuildingMenu):</dt><dd><dl class="simple">
<dt>def init(self):</dt><dd><p>self.add_choice(“exits”, key=”x”, text=text_exits)</p>
</dd>
</dl>
</dd>
</dl>
</div></blockquote>
<p>The allowed arguments in a callable are specific to the
argument names (they are not sensitive to orders, not all
arguments have to be present). For more information, see
<strong>_call_or_get</strong>.</p>
</div>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu.add_choice_edit">
<code class="sig-name descname">add_choice_edit</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">title</span><span class="o">=</span><span class="default_value">'description'</span></em>, <em class="sig-param"><span class="n">key</span><span class="o">=</span><span class="default_value">'d'</span></em>, <em class="sig-param"><span class="n">aliases</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">attr</span><span class="o">=</span><span class="default_value">'db.desc'</span></em>, <em class="sig-param"><span class="n">glance</span><span class="o">=</span><span class="default_value">'\n {obj.db.desc}'</span></em>, <em class="sig-param"><span class="n">on_enter</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/building_menu/building_menu.html#BuildingMenu.add_choice_edit"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu.add_choice_edit" title="Permalink to this definition"></a></dt>
<dd><p>Add a simple choice to edit a given attribute in the EvEditor.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>title</strong> (<em>str</em><em>, </em><em>optional</em>) the choices title.</p></li>
<li><p><strong>key</strong> (<em>str</em><em>, </em><em>optional</em>) the choices key.</p></li>
<li><p><strong>aliases</strong> (<em>list of str</em><em>, </em><em>optional</em>) the choices aliases.</p></li>
<li><p><strong>glance</strong> (<em>str</em><em> or </em><em>callable</em><em>, </em><em>optional</em>) the at-a-glance description.</p></li>
<li><p><strong>on_enter</strong> (<em>callable</em><em>, </em><em>optional</em>) a different callable to edit
the attribute.</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><em>choice (Choice)</em> the newly-created choice.</p>
</dd>
</dl>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>This is just a shortcut method, calling <strong>add_choice</strong>.
If <strong>on_enter</strong> is not set, use <strong>menu_edit</strong> which opens
an EvEditor to edit the specified attribute.
When the caller closes the editor (with :q), the menu
will be re-opened.</p>
</div>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu.add_choice_quit">
<code class="sig-name descname">add_choice_quit</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">title</span><span class="o">=</span><span class="default_value">'quit the menu'</span></em>, <em class="sig-param"><span class="n">key</span><span class="o">=</span><span class="default_value">'q'</span></em>, <em class="sig-param"><span class="n">aliases</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">on_enter</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/building_menu/building_menu.html#BuildingMenu.add_choice_quit"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu.add_choice_quit" title="Permalink to this definition"></a></dt>
<dd><p>Add a simple choice just to quit the building menu.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>title</strong> (<em>str</em><em>, </em><em>optional</em>) the choices title.</p></li>
<li><p><strong>key</strong> (<em>str</em><em>, </em><em>optional</em>) the choices key.</p></li>
<li><p><strong>aliases</strong> (<em>list of str</em><em>, </em><em>optional</em>) the choices aliases.</p></li>
<li><p><strong>on_enter</strong> (<em>callable</em><em>, </em><em>optional</em>) a different callable
to quit the building menu.</p></li>
</ul>
</dd>
</dl>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>This is just a shortcut method, calling <strong>add_choice</strong>.
If <strong>on_enter</strong> is not set, use <strong>menu_quit</strong> which simply
closes the menu and displays a message. It also
removes the CmdSet from the caller. If you supply
another callable instead, make sure to do the same.</p>
</div>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu.open">
<code class="sig-name descname">open</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/building_menu/building_menu.html#BuildingMenu.open"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu.open" title="Permalink to this definition"></a></dt>
<dd><p>Open the building menu for the caller.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>This method should be called once when the building menu
has been instanciated. From there, the building menu will
be re-created automatically when the server
reloads/restarts, assuming <strong>persistent</strong> is set to <strong>True</strong>.</p>
</div>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu.open_parent_menu">
<code class="sig-name descname">open_parent_menu</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/building_menu/building_menu.html#BuildingMenu.open_parent_menu"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu.open_parent_menu" title="Permalink to this definition"></a></dt>
<dd><p>Open the parent menu, using <strong>self.parents</strong>.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>You probably dont need to call this method directly,
since the caller can go back to the parent menu using the
<strong>keys_go_back</strong> automatically.</p>
</div>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu.open_submenu">
<code class="sig-name descname">open_submenu</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">submenu_class</span></em>, <em class="sig-param"><span class="n">submenu_obj</span></em>, <em class="sig-param"><span class="n">parent_keys</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/building_menu/building_menu.html#BuildingMenu.open_submenu"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu.open_submenu" title="Permalink to this definition"></a></dt>
<dd><p>Open a sub-menu, closing the current menu and opening the new one.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>submenu_class</strong> (<em>str</em>) the submenu class as a Python path.</p></li>
<li><p><strong>submenu_obj</strong> (<em>Object</em>) the object to give to the submenu.</p></li>
<li><p><strong>parent_keys</strong> (<em>list of str</em><em>, </em><em>optional</em>) the parent keys when
the submenu is closed.</p></li>
</ul>
</dd>
</dl>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>When the user enters <strong>&#64;</strong> in the submenu, she will go back to
the current menu, with the <strong>parent_keys</strong> set as its keys.
Therefore, you should set it on the keys of the choice that
should be opened when the user leaves the submenu.</p>
</div>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p><em>new_menu (BuildingMenu)</em> the new building menu or None.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu.move">
<code class="sig-name descname">move</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">key</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">back</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="n">quiet</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="n">string</span><span class="o">=</span><span class="default_value">''</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/building_menu/building_menu.html#BuildingMenu.move"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu.move" title="Permalink to this definition"></a></dt>
<dd><p>Move inside the menu.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>key</strong> (<em>any</em>) the portion of the key to add to the current
menu keys. If you wish to go back in the menu
tree, dont provide a <strong>key</strong>, just set <strong>back</strong> to <strong>True</strong>.</p></li>
<li><p><strong>back</strong> (<em>bool</em><em>, </em><em>optional</em>) go back in the menu (<strong>False</strong> by default).</p></li>
<li><p><strong>quiet</strong> (<em>bool</em><em>, </em><em>optional</em>) should the menu or choice be
displayed afterward?</p></li>
<li><p><strong>string</strong> (<em>str</em><em>, </em><em>optional</em>) the string sent by the caller to move.</p></li>
</ul>
</dd>
</dl>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>This method will need to be called directly should you
use more than two levels in your menu. For instance,
in your room menu, if you want to have an “exits”
option, and then be able to enter “north” in this
choice to edit an exit. The specific exit choice
could be a different menu (with a different class), but
it could also be an additional level in your original menu.
If thats the case, you will need to use this method.</p>
</div>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu.close">
<code class="sig-name descname">close</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/building_menu/building_menu.html#BuildingMenu.close"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu.close" title="Permalink to this definition"></a></dt>
<dd><p>Close the building menu, removing the CmdSet.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu.display_title">
<code class="sig-name descname">display_title</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/building_menu/building_menu.html#BuildingMenu.display_title"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu.display_title" title="Permalink to this definition"></a></dt>
<dd><p>Return the menu title to be displayed.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu.display_choice">
<code class="sig-name descname">display_choice</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">choice</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/building_menu/building_menu.html#BuildingMenu.display_choice"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu.display_choice" title="Permalink to this definition"></a></dt>
<dd><p>Display the specified choice.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>choice</strong> (<a class="reference internal" href="#evennia.contrib.base_systems.building_menu.building_menu.Choice" title="evennia.contrib.base_systems.building_menu.building_menu.Choice"><em>Choice</em></a>) the menu choice.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu.display">
<code class="sig-name descname">display</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/building_menu/building_menu.html#BuildingMenu.display"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu.display" title="Permalink to this definition"></a></dt>
<dd><p>Display the entire menu or a single choice, depending on the keys.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu.restore">
<em class="property">static </em><code class="sig-name descname">restore</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">caller</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/building_menu/building_menu.html#BuildingMenu.restore"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu.restore" title="Permalink to this definition"></a></dt>
<dd><p>Restore the building menu for the caller.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>caller</strong> (<em>Account</em><em> or </em><em>Object</em>) the caller.</p>
</dd>
</dl>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>This method should be automatically called if a menu is
saved in the caller, but the object itself cannot be found.</p>
</div>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.GenericBuildingMenu">
<em class="property">class </em><code class="sig-prename descclassname">evennia.contrib.base_systems.building_menu.building_menu.</code><code class="sig-name descname">GenericBuildingMenu</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">caller</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">obj</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">title</span><span class="o">=</span><span class="default_value">'Building menu: {obj}'</span></em>, <em class="sig-param"><span class="n">keys</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">parents</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">persistent</span><span class="o">=</span><span class="default_value">False</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/building_menu/building_menu.html#GenericBuildingMenu"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.GenericBuildingMenu" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu" title="evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu</span></code></a></p>
<p>A generic building menu, allowing to edit any object.</p>
<p>This is more a demonstration menu. By default, it allows to edit the
object key and description. Nevertheless, it will be useful to demonstrate
how building menus are meant to be used.</p>
<dl class="py method">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.GenericBuildingMenu.init">
<code class="sig-name descname">init</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">obj</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/building_menu/building_menu.html#GenericBuildingMenu.init"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.GenericBuildingMenu.init" title="Permalink to this definition"></a></dt>
<dd><p>Build the meny, adding the key and description choices.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>obj</strong> (<em>Object</em>) any object to be edited, like a character or room.</p>
</dd>
</dl>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>The quit choice will be automatically added, though you can
call <strong>add_choice_quit</strong> to add this choice with different options.</p>
</div>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.GenericBuildingCmd">
<em class="property">class </em><code class="sig-prename descclassname">evennia.contrib.base_systems.building_menu.building_menu.</code><code class="sig-name descname">GenericBuildingCmd</code><span class="sig-paren">(</span><em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/building_menu/building_menu.html#GenericBuildingCmd"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.GenericBuildingCmd" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.commands.command.html#evennia.commands.command.Command" title="evennia.commands.command.Command"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.commands.command.Command</span></code></a></p>
<p>Generic building command.</p>
<dl class="simple">
<dt>Syntax:</dt><dd><p>&#64;edit [object]</p>
</dd>
</dl>
<p>Open a building menu to edit the specified object. This menu allows to
change the objects key and description.</p>
<p class="rubric">Examples</p>
<p>&#64;edit here
&#64;edit self
&#64;edit #142</p>
<dl class="py attribute">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.GenericBuildingCmd.key">
<code class="sig-name descname">key</code><em class="property"> = '&#64;edit'</em><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.GenericBuildingCmd.key" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.GenericBuildingCmd.func">
<code class="sig-name descname">func</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/building_menu/building_menu.html#GenericBuildingCmd.func"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.GenericBuildingCmd.func" title="Permalink to this definition"></a></dt>
<dd><p>This is the actual executing part of the command. It is
called directly after self.parse(). See the docstring of this
module for which object properties are available (beyond those
set in self.parse())</p>
</dd></dl>
<dl class="py attribute">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.GenericBuildingCmd.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = []</em><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.GenericBuildingCmd.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.GenericBuildingCmd.help_category">
<code class="sig-name descname">help_category</code><em class="property"> = 'general'</em><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.GenericBuildingCmd.help_category" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.GenericBuildingCmd.lock_storage">
<code class="sig-name descname">lock_storage</code><em class="property"> = 'cmd:all();'</em><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.GenericBuildingCmd.lock_storage" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.contrib.base_systems.building_menu.building_menu.GenericBuildingCmd.search_index_entry">
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': '', 'category': 'general', 'key': '&#64;edit', 'no_prefix': 'edit ', 'tags': '', 'text': &quot;\n Generic building command.\n\n Syntax:\n &#64;edit [object]\n\n Open a building menu to edit the specified object. This menu allows to\n change the object's key and description.\n\n Examples:\n &#64;edit here\n &#64;edit self\n &#64;edit #142\n\n &quot;}</em><a class="headerlink" href="#evennia.contrib.base_systems.building_menu.building_menu.GenericBuildingCmd.search_index_entry" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
</section>
</div>
</div>
</div>
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="evennia.contrib.base_systems.building_menu.tests.html" title="evennia.contrib.base_systems.building_menu.tests"
>next</a> |</li>
<li class="right" >
<a href="evennia.contrib.base_systems.building_menu.html" title="evennia.contrib.base_systems.building_menu"
>previous</a> |</li>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 2.x</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="../Evennia-API.html" >API Summary</a> &#187;</li>
<li class="nav-item nav-item-2"><a href="evennia-api.html" >evennia</a> &#187;</li>
<li class="nav-item nav-item-3"><a href="evennia.html" >evennia</a> &#187;</li>
<li class="nav-item nav-item-4"><a href="evennia.contrib.html" >evennia.contrib</a> &#187;</li>
<li class="nav-item nav-item-5"><a href="evennia.contrib.base_systems.html" >evennia.contrib.base_systems</a> &#187;</li>
<li class="nav-item nav-item-6"><a href="evennia.contrib.base_systems.building_menu.html" >evennia.contrib.base_systems.building_menu</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">evennia.contrib.base_systems.building_menu.building_menu</a></li>
</ul>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2023, The Evennia developer community.
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.2.1.
</div>
</body>
</html>