def parse(self, text, session): modes = session.ui.mouse_modes.modes from chimerax.core.commands import EnumOf mode_arg = EnumOf(tuple(m.name for m in modes)) value, used, rest = mode_arg.parse(text, session) mmap = {m.name: m for m in modes} return mmap[value], used, rest
def _dispatch_header_command(self, subcommand_text): from chimerax.core.errors import UserError from chimerax.core.commands import EnumOf enum = EnumOf(self.headers, ids=[header.ident for header in self._headers]) header, ident_text, remainder = enum.parse(subcommand_text, self.session) header.process_command(remainder)
def _process_setting_command(self, session, setting_arg_text): from chimerax.core.commands import EnumOf enum = EnumOf(list(self._setting_cmd_annotations.keys())) attr_name, arg_text, remainder = enum.parse(setting_arg_text, session) remainder = remainder.strip() if not remainder: from chimerax.core.errors import UserError raise UserError("No value provided for setting") val, val_text, remainder = self._setting_cmd_annotations[attr_name].parse(remainder, session) if remainder and not remainder.isspace(): from chimerax.core.errors import UserError raise UserError("Extraneous text after command") setattr(self.settings, attr_name, val)