1 """Menu objects for the MUFF Engine"""
3 # Copyright (c) 2005 mudpy, Jeremy Stanley <fungi@yuggoth.org>
6 # Redistribution and use in source and binary forms, with or without
7 # modification, are permitted provided that the following conditions
10 # - Redistributions of source code must retain the above copyright
11 # notice, this list of conditions and the following disclaimer.
12 # - Redistributions in binary form must reproduce the above
13 # copyright notice, this list of conditions and the following
14 # disclaimer in the documentation and/or other materials provided
15 # with the distribution.
17 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
20 # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
21 # COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
22 # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
23 # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
24 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
25 # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
27 # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28 # POSSIBILITY OF SUCH DAMAGE.
36 for module in muff.__all__:
37 exec("import " + module)
40 if muffconf.config_data.get("general", "menu_path"):
42 except AttributeError:
46 menu_path = muffconf.config_data.get("general", "menu_path")
47 for each_file in os.listdir(menu_path):
48 menu_files.append(menu_path + "/" + each_file)
49 menu_data = ConfigParser.SafeConfigParser()
50 menu_data.read(menu_files)
52 def get_default(user):
53 return menu_data.get(user.state, "default")
56 if not user.menu_seen:
62 if menu_data.get(user.state, "echo") == "off" and user.echoing:
63 echo = chr(255) + chr(251) + chr(1) + chr(0)
69 echo = chr(255) + chr(252) + chr(1) + chr(0)
75 description = "$(red)" + menu_data.get(user.state, "error_" + user.error) + "$(nrm)$(eol)$(eol)"
77 description = "$(red)That is not a valid choice...$(nrm)$(eol)$(eol)"
81 description = menu_data.get(user.state, "description") + "$(eol)$(eol)"
86 for option in menu_data.options(user.state):
87 if re.match("choice_", option):
88 choices[option.split("_")[1]] = menu_data.get(user.state, option)
89 choice_keys = choices.keys()
92 for choice in choice_keys:
93 choicestring += " [$(red)" + choice + "$(nrm)] " + choices[choice] + "$(eol)"
95 choicestring += "$(eol)"
99 prompt = menu_data.get(user.state, "prompt") + " "
103 default = "[$(red)" + menu_data.get(user.state, "default") + "$(nrm)] "
109 echoing = "(won't echo) "
110 user.send(echo + spacer + description + choicestring + prompt + default + echoing, "")
111 user.menu_seen = True