<spanid="evennia-contrib-utils-tree-select-tree-select"></span><h1>evennia.contrib.utils.tree_select.tree_select<aclass="headerlink"href="#module-evennia.contrib.utils.tree_select.tree_select"title="Link to this heading">¶</a></h1>
<p>Easy menu selection tree</p>
<p>Contrib - Tim Ashley Jenkins 2017</p>
<p>This module allows you to create and initialize an entire branching EvMenu
instance with nothing but a multi-line string passed to one function.</p>
<p>EvMenu is incredibly powerful and flexible, but using it for simple menus
can often be fairly cumbersome - a simple menu that can branch into five
categories would require six nodes, each with options represented as a list
of dictionaries.</p>
<p>This module provides a function, init_tree_selection, which acts as a frontend
for EvMenu, dynamically sourcing the options from a multi-line string you provide.
For example, if you define a string as such:</p>
<blockquote>
<div><p>TEST_MENU = ‘’’Foo
Bar
Baz
Qux’’’</p>
</div></blockquote>
<p>And then use TEST_MENU as the ‘treestr’ source when you call init_tree_selection
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.contrib.utils.tree_select.tree_select.</span></span><spanclass="sig-name descname"><spanclass="pre">dashcount</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">entry</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/utils/tree_select/tree_select.html#dashcount"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.contrib.utils.tree_select.tree_select.dashcount"title="Link to this definition">¶</a></dt>
<dd><p>Counts the number of dashes at the beginning of a string. This
is needed to determine the depth of options in categories.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.contrib.utils.tree_select.tree_select.</span></span><spanclass="sig-name descname"><spanclass="pre">is_category</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">treestr</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">index</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/utils/tree_select/tree_select.html#is_category"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.contrib.utils.tree_select.tree_select.is_category"title="Link to this definition">¶</a></dt>
<dd><p>Determines whether an option in a tree string is a category by
whether or not there are additional options below it.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.contrib.utils.tree_select.tree_select.</span></span><spanclass="sig-name descname"><spanclass="pre">parse_opts</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">treestr</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">category_index</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/utils/tree_select/tree_select.html#parse_opts"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.contrib.utils.tree_select.tree_select.parse_opts"title="Link to this definition">¶</a></dt>
<dd><p>Parses a tree string and given index into a list of options. If
category_index is none, returns all the options at the top level of
the menu. If category_index corresponds to a category, returns a list
of options under that category. If category_index corresponds to
an option that is not a category, it’s a selection and returns True.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.contrib.utils.tree_select.tree_select.</span></span><spanclass="sig-name descname"><spanclass="pre">index_to_selection</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">treestr</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">index</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">desc</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">False</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/utils/tree_select/tree_select.html#index_to_selection"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.contrib.utils.tree_select.tree_select.index_to_selection"title="Link to this definition">¶</a></dt>
<dd><p>Given a menu tree string and an index, returns the corresponding selection’s
name as a string. If ‘desc’ is set to True, will return the selection’s
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.contrib.utils.tree_select.tree_select.</span></span><spanclass="sig-name descname"><spanclass="pre">go_up_one_category</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">treestr</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">index</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/utils/tree_select/tree_select.html#go_up_one_category"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.contrib.utils.tree_select.tree_select.go_up_one_category"title="Link to this definition">¶</a></dt>
<dd><p>Given a menu tree string and an index, returns the category that the given option
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.contrib.utils.tree_select.tree_select.</span></span><spanclass="sig-name descname"><spanclass="pre">menunode_treeselect</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">caller</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">raw_string</span></span></em>, <emclass="sig-param"><spanclass="o"><spanclass="pre">**</span></span><spanclass="n"><spanclass="pre">kwargs</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/utils/tree_select/tree_select.html#menunode_treeselect"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.contrib.utils.tree_select.tree_select.menunode_treeselect"title="Link to this definition">¶</a></dt>
<dd><p>This is the repeating menu node that handles the tree selection.</p>
<emclass="property"><spanclass="k"><spanclass="pre">class</span></span><spanclass="w"></span></em><spanclass="sig-prename descclassname"><spanclass="pre">evennia.contrib.utils.tree_select.tree_select.</span></span><spanclass="sig-name descname"><spanclass="pre">CmdNameColor</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o"><spanclass="pre">**</span></span><spanclass="n"><spanclass="pre">kwargs</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/utils/tree_select/tree_select.html#CmdNameColor"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.contrib.utils.tree_select.tree_select.CmdNameColor"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">key</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">'namecolor'</span></em><aclass="headerlink"href="#evennia.contrib.utils.tree_select.tree_select.CmdNameColor.key"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">func</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/utils/tree_select/tree_select.html#CmdNameColor.func"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.contrib.utils.tree_select.tree_select.CmdNameColor.func"title="Link 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
<spanclass="sig-name descname"><spanclass="pre">aliases</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">[]</span></em><aclass="headerlink"href="#evennia.contrib.utils.tree_select.tree_select.CmdNameColor.aliases"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">help_category</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">'general'</span></em><aclass="headerlink"href="#evennia.contrib.utils.tree_select.tree_select.CmdNameColor.help_category"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">lock_storage</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">'cmd:all();'</span></em><aclass="headerlink"href="#evennia.contrib.utils.tree_select.tree_select.CmdNameColor.lock_storage"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">search_index_entry</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">{'aliases':</span><spanclass="pre">'',</span><spanclass="pre">'category':</span><spanclass="pre">'general',</span><spanclass="pre">'key':</span><spanclass="pre">'namecolor',</span><spanclass="pre">'no_prefix':</span><spanclass="pre">'</span><spanclass="pre">',</span><spanclass="pre">'tags':</span><spanclass="pre">'',</span><spanclass="pre">'text':</span><spanclass="pre">'\nSet</span><spanclass="pre">or</span><spanclass="pre">remove</span><spanclass="pre">a</span><spanclass="pre">special</span><spanclass="pre">color</span><spanclass="pre">on</span><spanclass="pre">your</span><spanclass="pre">name.</span><spanclass="pre">Just</span><spanclass="pre">an</span><spanclass="pre">example</span><spanclass="pre">for</span><spanclass="pre">the\neasy</span><spanclass="pre">menu</span><spanclass="pre">selection</span><spanclass="pre">tree</span><spanclass="pre">contrib.\n'}</span></em><aclass="headerlink"href="#evennia.contrib.utils.tree_select.tree_select.CmdNameColor.search_index_entry"title="Link to this definition">¶</a></dt>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.contrib.utils.tree_select.tree_select.</span></span><spanclass="sig-name descname"><spanclass="pre">change_name_color</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">caller</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">treestr</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">index</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">selection</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/utils/tree_select/tree_select.html#change_name_color"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.contrib.utils.tree_select.tree_select.change_name_color"title="Link to this definition">¶</a></dt>