Beispiel #1
0
def register_label_command(logger):

    from chimerax.core.commands import CmdDesc, register, create_alias, ObjectsArg, StringArg, FloatArg
    from chimerax.core.commands import Float3Arg, ColorArg, IntArg, BoolArg, EnumOf, Or, EmptyArg

    otype = EnumOf(('atoms', 'residues', 'pseudobonds', 'bonds'))
    desc = CmdDesc(required=[('objects', Or(ObjectsArg, EmptyArg))],
                   optional=[('object_type', otype)],
                   keyword=[('text', Or(DefArg, StringArg)),
                            ('offset', Or(DefArg, Float3Arg)),
                            ('color', Or(DefArg, ColorArg)),
                            ('bg_color', Or(NoneArg, ColorArg)),
                            ('size', Or(DefArg, IntArg)),
                            ('height', Or(EnumOf(['fixed']), FloatArg)),
                            ('default_height', FloatArg), ('font', StringArg),
                            ('attribute', StringArg), ('on_top', BoolArg)],
                   synopsis='Create atom labels')
    register('label', desc, label, logger=logger)
    desc = CmdDesc(optional=[('orient', FloatArg)],
                   synopsis='Set label orientation updating')
    register('label orient', desc, label_orient, logger=logger)
    desc = CmdDesc(required=[('objects', Or(ObjectsArg, EmptyArg))],
                   optional=[('object_type', otype)],
                   synopsis='Delete atom labels')
    register('label delete', desc, label_delete, logger=logger)
    desc = CmdDesc(synopsis='List available fonts')
    from .label2d import label_listfonts
    register('label listfonts', desc, label_listfonts, logger=logger)
    create_alias('~label', 'label delete $*', logger=logger)
Beispiel #2
0
 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
Beispiel #3
0
def register_command(logger):
    from chimerax.core.commands import register, CmdDesc, StringArg, ColorArg, NoArg, EnumOf
    from chimerax.core.commands import Or, RestOfLine, create_alias
    register(
        'color list',
        CmdDesc(
            optional=[('which', EnumOf(["all", "custom", "builtin"]))],
            synopsis='list colors'),
        list_colors, logger=logger
    )

    register(
        'color show',
        CmdDesc(required=[('name', RestOfLine)],
                synopsis="show color"),
        show_color, logger=logger
    )
    register(
        'color name',
        CmdDesc(required=[('name', StringArg), ('color', ColorArg)],
                synopsis="name a custom color"),
        name_color, logger=logger
    )
    register(
        'color delete',
        CmdDesc(required=[('name', Or(EnumOf(['custom']), StringArg))],
                synopsis="remove color definition"),
        delete_color, logger=logger
    )
    create_alias('colordef', 'color name $*', logger=logger)
    create_alias('~colordef', 'color delete $*', logger=logger)
    create_alias('colourdef', 'color name $*', logger=logger,
            url="help:user/commands/colordef.html")
    create_alias('~colourdef', 'color delete $*', logger=logger,
            url="help:user/commands/colordef.html")
Beispiel #4
0
def register_command(logger):
    from chimerax.core.commands import register, CmdDesc, ObjectsArg, EmptyArg, EnumOf, Or, IntArg
    desc = CmdDesc(required = [('objects', Or(ObjectsArg, EmptyArg)),
                               ('atom_style', Or(EnumOf(('sphere', 'ball', 'stick')), EmptyArg))],
                   keyword = [('dashes', IntArg),
                              ('ring_fill', EnumOf(['on', 'off', 'thick', 'thin']))],
                   synopsis='change atom and bond depiction')
    register('style', desc, style, logger=logger)
Beispiel #5
0
 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)
Beispiel #6
0
 def register_isolde_sim():
     desc = CmdDesc(
         optional=[('atoms', AtomsArg)],
         required=[('cmd',
                    EnumOf(('start', 'pause', 'checkpoint', 'revert',
                            'stop')))],
         keyword=[('discard_to', EnumOf(('start', 'checkpoint')))],
         synopsis='Start, stop or pause an interactive simulation')
     register('isolde sim', desc, isolde_sim, logger=logger)
Beispiel #7
0
def register_command(command_name, logger):
    from chimerax.core.commands \
        import CmdDesc, register, BoolArg, FloatArg, ColorArg, Or, EnumOf, NoneArg, EmptyArg, \
            SaveFileNameArg, NonNegativeIntArg, StringArg, AttrNameArg, PositiveIntArg
    from chimerax.atomic import AtomsArg
    del_kw = {'keyword': [('name', StringArg)]}
    if command_name in ["clashes", "contacts"]:
        kw = {
            'required': [('test_atoms', Or(AtomsArg, EmptyArg))],
            'keyword':
            [('name', StringArg), ('hbond_allowance', FloatArg),
             ('overlap_cutoff', FloatArg), ('attr_name', AttrNameArg),
             ('bond_separation', NonNegativeIntArg), ('continuous', BoolArg),
             ('distance_only', FloatArg), ('inter_model', BoolArg),
             ('inter_submodel', BoolArg), ('intra_model', BoolArg),
             ('intra_mol', BoolArg), ('intra_res', BoolArg), ('log', BoolArg),
             ('make_pseudobonds', BoolArg),
             ('naming_style', EnumOf(('simple', 'command', 'serial'))),
             ('color', Or(NoneArg, ColorArg)), ('radius', FloatArg),
             ('res_separation', PositiveIntArg),
             ('restrict', Or(EnumOf(('cross', 'both', 'any')), AtomsArg)),
             ('reveal', BoolArg), ('save_file', SaveFileNameArg),
             ('set_attrs', BoolArg), ('select', BoolArg),
             ('show_dist', BoolArg), ('dashes', NonNegativeIntArg),
             ('summary', BoolArg)],
        }
        register('clashes',
                 CmdDesc(**kw, synopsis="Find clashes"),
                 cmd_clashes,
                 logger=logger)
        register('contacts',
                 CmdDesc(**kw,
                         synopsis="Find contacts",
                         url="help:user/commands/clashes.html"),
                 cmd_contacts,
                 logger=logger)
        register('clashes delete',
                 CmdDesc(synopsis="Remove clash pseudobonds", **del_kw),
                 cmd_xclashes,
                 logger=logger)
        register('contacts delete',
                 CmdDesc(synopsis="Remove contact pseudobonds",
                         url="help:user/commands/clashes.html",
                         **del_kw),
                 cmd_xcontacts,
                 logger=logger)
    else:
        register('~clashes',
                 CmdDesc(synopsis="Remove clash pseudobonds", **del_kw),
                 cmd_xclashes,
                 logger=logger)
        register('~contacts',
                 CmdDesc(synopsis="Remove contact pseudobonds",
                         url="help:user/commands/clashes.html",
                         **del_kw),
                 cmd_xcontacts,
                 logger=logger)
Beispiel #8
0
 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)
Beispiel #9
0
 def fetch_args(self):
     from chimerax.core.commands import BoolArg, EnumOf
     return {
         'new_tab': BoolArg,
         'data_format': EnumOf([fmt.nicknames[0]
             for fmt in session.open_command.open_data_formats]),
     }
Beispiel #10
0
 def register_isolde_demo():
     desc = CmdDesc(
         synopsis=
         'Load a small crystallographic or cryo-EM model for use in interactive tutorials',
         required=[('demo_name', EnumOf(list(_available_demos.keys())))],
         keyword=[('model_only', BoolArg), ('start_isolde', BoolArg)])
     register('isolde demo', desc, isolde_demo, logger=logger)
Beispiel #11
0
def register_label_command(logger):

    from chimerax.core.commands import CmdDesc, register, Or, BoolArg, IntArg, StringArg, FloatArg, ColorArg
    from chimerax.core.commands import NonNegativeFloatArg, EnumOf
    from .label3d import DefArg, NoneArg

    labels_arg = [('labels', Or(NamedLabelsArg, LabelsArg))]
    # Create and change have same arguments
    cargs = [('text', StringArg), ('color', Or(DefArg, ColorArg)),
             ('bg_color', Or(NoneArg, ColorArg)), ('size', IntArg),
             ('font', StringArg), ('bold', BoolArg), ('italic', BoolArg),
             ('xpos', FloatArg), ('ypos', FloatArg), ('visibility', BoolArg),
             ('margin', NonNegativeFloatArg), ('outline', NonNegativeFloatArg)]
    create_desc = CmdDesc(required=[('name', StringArg)],
                          keyword=cargs,
                          synopsis='Create a 2d label')
    register('2dlabels create', create_desc, label_create, logger=logger)
    change_desc = CmdDesc(required=labels_arg,
                          keyword=cargs + [('frames', IntArg)],
                          synopsis='Change a 2d label')
    register('2dlabels change', change_desc, label_change, logger=logger)
    delete_desc = CmdDesc(optional=[('labels',
                                     Or(EnumOf(['all']), LabelsArrowsArg))],
                          synopsis='Delete a 2d label')
    register('2dlabels delete', delete_desc, label_delete, logger=logger)
    fonts_desc = CmdDesc(synopsis='List available fonts')
    register('2dlabels listfonts', fonts_desc, label_listfonts, logger=logger)

    label_desc = CmdDesc(optional=labels_arg,
                         keyword=cargs + [('frames', IntArg)],
                         synopsis='Create or change a 2d label')
    register('2dlabels', label_desc, label2d, logger=logger)
Beispiel #12
0
def register_command(logger):
    from chimerax.core.commands import CmdDesc, EnumOf, register
    desc = CmdDesc(optional=[('format',
                              EnumOf(['verbose', 'bundles', 'packages']))],
                   non_keyword=['format'],
                   synopsis='show version information')
    register('version', desc, version, logger=logger)
Beispiel #13
0
 def settings_info(self):
     name, defaults = super().settings_info()
     from chimerax.core.commands import EnumOf
     defaults.update({
         'atoms': (EnumOf(RmsdDomainOption.values), carbon_alpha),
     })
     return "RMSD sequence header", defaults
Beispiel #14
0
def register_command(logger):
    from chimerax.core.commands import CmdDesc, register, create_alias
    from chimerax.core.commands import CenterArg, CoordSysArg, Or, EnumOf, FloatArg, AxisArg
    from chimerax.core.commands import ModelsArg, BoolArg
    offset_arg = Or(EnumOf(['off']), FloatArg)
    desc = CmdDesc(optional=[],
                   keyword=[('near', offset_arg), ('far', offset_arg),
                            ('front', offset_arg), ('back', offset_arg),
                            ('position', CenterArg), ('axis', AxisArg),
                            ('coordinate_system', CoordSysArg)],
                   synopsis='set clip planes')
    register('clip', desc, clip, logger=logger)
    register('clip off',
             CmdDesc(synopsis='Turn off all clip planes'),
             clip_off,
             logger=logger)
    register('clip list',
             CmdDesc(synopsis='List active clip planes'),
             clip_list,
             logger=logger)
    model_desc = CmdDesc(required=[('models', ModelsArg)],
                         optional=[('clipping', BoolArg)],
                         synopsis="Turn off clipping for individual models.")
    register('clip model', model_desc, clip_model, logger=logger)
    create_alias('~clip', 'clip off', logger=logger)
Beispiel #15
0
 def register_isolde_mod_his():
     desc = CmdDesc(
         synopsis=
         'Set the protonation state of one or more histidine residues',
         required=[('residues', ResiduesArg),
                   ('protonated_atom', EnumOf(['ND', 'NE', 'both']))])
     register('isolde modify his', desc, mod_his_command, logger=logger)
Beispiel #16
0
 def settings_info(self):
     name, defaults = super().settings_info()
     from chimerax.core.commands import EnumOf, FloatArg, IntArg, Bounded, PositiveIntArg, BoolArg
     from chimerax.sim_matrices import matrices
     matrix_names = list(matrices(self.alignment.session).keys())
     defaults.update({
         'style': (EnumOf(self.styles), self.STYLE_AL2CO),
         'al2co_freq': (Bounded(IntArg, min=0, max=2), 2),
         'al2co_cons': (Bounded(IntArg, min=0, max=2), 0),
         'al2co_window': (PositiveIntArg, 1),
         'al2co_gap': (Bounded(FloatArg, min=0, max=1), 0.5),
         'al2co_matrix': (EnumOf(matrix_names), "BLOSUM-62"),
         'al2co_transform': (Bounded(IntArg, min=0, max=2), 0),
         'initially_shown': (BoolArg, True),
     })
     return "conservation sequence header", defaults
Beispiel #17
0
def register_fitmap_command(logger):

    from chimerax.core.commands import CmdDesc, register, BoolArg, IntArg, FloatArg, EnumOf, ObjectsArg
    from chimerax.map.mapargs import MapArg

    fitmap_desc = CmdDesc(
        required=[
            ('atoms_or_map', ObjectsArg),
        ],
        keyword=[
            ('in_map',
             MapArg),  # Require keyword to avoid two consecutive atom specs.
            ('subtract_maps', ObjectsArg),

            # Four modes, default is single fit mode (no option)
            ('each_model', BoolArg),
            ('sequence', IntArg),
            ('search', IntArg),

            # Fitting settings
            ('metric', EnumOf(('overlap', 'correlation', 'cam'))
             ),  # overlap, correlation or cam.
            ('envelope', BoolArg),
            ('zeros', BoolArg),
            ('resolution', FloatArg),
            ('shift', BoolArg),
            ('rotate', BoolArg),
            ('symmetric', BoolArg),
            ('max_steps', IntArg),
            ('grid_step_max', FloatArg),
            ('grid_step_min', FloatArg),

            # Search options
            ('placement', EnumOf(('sr', 's', 'r'))),
            ('radius', FloatArg),
            ('cluster_angle', FloatArg),
            ('cluster_shift', FloatArg),
            ('asymmetric_unit', BoolArg),
            ('level_inside', FloatArg),  # fraction of point in contour

            # Output options
            ('move_whole_molecules', BoolArg),
            ('list_fits', BoolArg),
        ],
        required_arguments=['in_map'],
        synopsis='Optimize positions of atomic models or maps in maps')
    register('fitmap', fitmap_desc, fitmap, logger=logger)
Beispiel #18
0
def register_morph_command(logger):
    from chimerax.core.commands import CmdDesc, register, IntArg, EnumOf, BoolArg, FloatArg, ColorArg
    from chimerax.atomic import StructuresArg
    desc = CmdDesc(required=[('structures', StructuresArg)],
                   keyword=[('frames', IntArg), ('wrap', BoolArg),
                            ('rate',
                             EnumOf(('linear', 'ramp up', 'ramp down',
                                     'sinusoidal'))),
                            ('method', EnumOf(('corkscrew', 'linear'))),
                            ('cartesian', BoolArg), ('same', BoolArg),
                            ('core_fraction', FloatArg),
                            ('min_hinge_spacing', IntArg),
                            ('hide_models', BoolArg), ('play', BoolArg),
                            ('slider', BoolArg), ('color_segments', BoolArg),
                            ('color_core', ColorArg)],
                   synopsis='morph atomic structures')
    register('morph', desc, morph, logger=logger)
Beispiel #19
0
 def register_isolde_add_aa():
     desc = CmdDesc(
         required=[
             ('resname', StringArg),
         ],
         optional=[
             ('stem_residue', ResiduesArg),
         ],
         keyword=[('add_direction', EnumOf(['C', 'N'])),
                  ('structure', StructureArg), ('chain_id', StringArg),
                  ('number', IntArg),
                  ('add_b_factor', Bounded(FloatArg, min=0)),
                  ('occupancy', Bounded(FloatArg, min=0, max=1)),
                  ('approx_conformation', EnumOf(['strand', 'helix']))],
         synopsis=
         'Add an amino acid to the terminus of an existing chain, or as the start of a new fragment.'
     )
     register('isolde add aa', desc, add_aa_cmd, logger=logger)
Beispiel #20
0
def register_command(logger):
    from chimerax.core.commands import register, CmdDesc, ObjectsArg, EmptyArg, EnumOf, Or, FloatArg
    desc = CmdDesc(required = [('objects', Or(ObjectsArg, EmptyArg))],
                   keyword = [('atom_radius', Or(EnumOf(['default']), FloatArg)),
                              ('stick_radius', FloatArg),
                              ('pseudobond_radius', FloatArg),
                              ('ball_scale', FloatArg)],
                   synopsis='change atom and bond sizes')
    register('size', desc, size, logger=logger)
Beispiel #21
0
def register_command(logger):
    from chimerax.core.commands import CmdDesc, Or, EnumOf, EmptyArg, RestOfLine, register
    desc = CmdDesc(optional=[('option',
                              Or(EnumOf(['allOptions'], abbreviations=False),
                                 EmptyArg)), ('command_name', RestOfLine)],
                   non_keyword=['command_name', 'option'],
                   hidden=['option'],
                   synopsis='show command usage')
    register('usage', desc, usage, logger=logger)
Beispiel #22
0
def register_buttonpanel_command(logger):
    from chimerax.core.commands import CmdDesc, register, StringArg, IntArg, EnumOf
    desc = CmdDesc(required=[('title', StringArg)],
                   keyword=[('add', StringArg), ('command', StringArg),
                            ('row', IntArg), ('column', IntArg),
                            ('rows', IntArg), ('columns', IntArg),
                            ('fill', EnumOf(('rows', 'columns')))],
                   synopsis='Create a user interface button panel.')
    register('buttonpanel', desc, buttonpanel, logger=logger)
Beispiel #23
0
def register_command(logger):
    from chimerax.core.commands import CmdDesc, register, ObjectsArg
    from chimerax.core.commands import FloatArg, IntArg, ColorArg, BoolArg, NoArg, create_alias
    from chimerax.core.commands import SurfacesArg, EmptyArg, EnumOf, Or
    from chimerax.atomic import AtomsArg
    surface_desc = CmdDesc(optional=[('atoms', AtomsArg)],
                           keyword=[('enclose', AtomsArg),
                                    ('include', AtomsArg),
                                    ('probe_radius', FloatArg),
                                    ('grid_spacing', FloatArg),
                                    ('resolution', FloatArg),
                                    ('level', FloatArg), ('color', ColorArg),
                                    ('transparency', FloatArg),
                                    ('visible_patches', IntArg),
                                    ('sharp_boundaries', BoolArg),
                                    ('nthread', IntArg), ('replace', BoolArg),
                                    ('update', BoolArg)],
                           synopsis='create molecular surface')
    register('surface', surface_desc, surface, logger=logger)

    show_desc = CmdDesc(optional=[('objects', ObjectsArg)],
                        synopsis='Show patches of molecular surfaces')
    register('surface showPatches',
             show_desc,
             surface_show_patches,
             logger=logger)

    hide_desc = CmdDesc(optional=[('objects', ObjectsArg)],
                        synopsis='Hide patches of molecular surfaces')
    register('surface hidePatches',
             hide_desc,
             surface_hide_patches,
             logger=logger)
    create_alias('~surface', 'surface hidePatches $*', logger=logger)

    close_desc = CmdDesc(optional=[('objects', ObjectsArg)],
                         synopsis='close molecular surfaces')
    register('surface close', close_desc, surface_close, logger=logger)

    style_desc = CmdDesc(required=[('surfaces', Or(SurfacesArg, EmptyArg)),
                                   ('style', EnumOf(
                                       ('mesh', 'dot', 'solid')))],
                         synopsis='Change surface style to mesh, dot or solid')
    register('surface style', style_desc, surface_style, logger=logger)

    cap_desc = CmdDesc(optional=[
        ('enable', BoolArg),
    ],
                       keyword=[('offset', FloatArg),
                                ('subdivision', FloatArg), ('mesh', BoolArg)],
                       synopsis='Enable or disable clipping surface caps')
    register('surface cap', cap_desc, surface_cap, logger=logger)

    # Register surface operation subcommands.
    from . import sop
    sop.register_surface_subcommands(logger)
Beispiel #24
0
def register_command(logger):
    from chimerax.core.commands import CmdDesc, register, FloatArg, EnumOf, IntArg
    types = EnumOf(('mono', 'ortho', '360', 'dome', '360tb', '360sbs',
                    'stereo', 'sbs', 'tb'))
    desc = CmdDesc(optional=[('type', types)],
                   keyword=[('field_of_view', FloatArg),
                            ('eye_separation', FloatArg),
                            ('pixel_eye_separation', FloatArg),
                            ('cube_pixels', IntArg)],
                   synopsis='adjust camera parameters')
    register('camera', desc, camera, logger=logger)
Beispiel #25
0
def register_command(logger):

    from chimerax.core.commands import CmdDesc, register, EnumOf, BoolArg, FloatArg, IntArg
    from chimerax.atomic import OrderedAtomsArg
    desc = CmdDesc(required=[('atoms', OrderedAtomsArg)],
                   keyword=[('to_atoms', OrderedAtomsArg),
                            ('move',
                             EnumOf(
                                 ('atoms', 'residues', 'chains', 'structures',
                                  'structure atoms', 'nothing'))),
                            ('each', EnumOf(
                                ('chain', 'structure', 'coordset'))),
                            ('match_chain_ids', BoolArg),
                            ('match_numbering', BoolArg),
                            ('match_atom_names', BoolArg),
                            ('cutoff_distance', FloatArg),
                            ('report_matrix', BoolArg)],
                   required_arguments=['to_atoms'],
                   synopsis='Align one set of atoms to another')
    register('align', desc, align, logger=logger)
Beispiel #26
0
 def save_args(self):
     from chimerax.core.commands import BoolArg, ModelsArg, ModelArg, EnumOf
     return {
         'all_coordsets': BoolArg,
         'displayed_only': BoolArg,
         'models': ModelsArg,
         'pqr': BoolArg,
         'rel_model': ModelArg,
         'selected_only': BoolArg,
         'serial_numbering': EnumOf(("amber", "h36"))
     }
Beispiel #27
0
def register_color_image_command(logger):
    from chimerax.core.commands import CmdDesc, register, SurfacesArg, OpenFileNameArg, EnumOf, SaveFileNameArg, BoolArg
    desc = CmdDesc(required=[('surfaces', SurfacesArg)],
                   keyword=[('file', OpenFileNameArg),
                            ('coords',
                             EnumOf(
                                 ('sphere', 'pole', 'south', 'vertexcolors'))),
                            ('write_colors', SaveFileNameArg),
                            ('modulate', BoolArg)],
                   synopsis='Color surfaces with images from files')
    register('color image', desc, color_image, logger=logger)
Beispiel #28
0
def register_command(logger):
    from chimerax.core.commands import register, CmdDesc, Or, ObjectsArg, EmptyArg, FloatArg
    from chimerax.core.commands import ListOf, EnumOf
    from .color import TargetArg
    from .color import WHAT_TARGETS
    what_arg = ListOf(EnumOf((*WHAT_TARGETS.keys(),)))
    desc = CmdDesc(required=[('objects', Or(ObjectsArg, EmptyArg)),
                             ('percent', FloatArg)],
                   optional=[('what', what_arg)],
                   keyword=[('target', TargetArg)],
                   synopsis="change object transparency")
    register('transparency', desc, transparency, logger=logger)
Beispiel #29
0
def register_command(logger):
    from chimerax.core.commands import CmdDesc, register, EnumOf, EmptyArg, ObjectsArg, Or
    from chimerax.core.commands import BoolArg, Float2Arg, Float3Arg, ModelArg, create_alias
    methods = ('frontCenter', 'fixed', 'centerOfView')
    desc = CmdDesc(optional=[('method', Or(EnumOf(methods), EmptyArg)),
                             ('objects', Or(ObjectsArg, EmptyArg)),
                             ('pivot', Float3Arg)],
                   keyword=[('coordinate_system', ModelArg),
                            ('show_pivot', Or(Float2Arg, BoolArg))],
                   synopsis='set center of rotation method')
    register('cofr', desc, cofr, logger=logger)
    create_alias('~cofr', 'cofr frontCenter')
Beispiel #30
0
def register_command(ci, logger):
    from chimerax.core.commands import CmdDesc, register
    if ci.name == "meeting":
        from chimerax.core.commands import (StringArg, IntArg, ColorArg,
                                            OpenFileNameArg, BoolArg)
        desc = CmdDesc(optional=[('host', StringArg)],
                       keyword=[('port', IntArg), ('name', StringArg),
                                ('color', ColorArg),
                                ('face_image', OpenFileNameArg),
                                ('copy_scene', BoolArg),
                                ('relay_commands', BoolArg),
                                ('update_interval', IntArg)])
        from .meeting import meeting as func
    elif ci.name == "meeting close":
        desc = CmdDesc()
        from .meeting import meeting_close as func
    elif ci.name == "meeting send":
        desc = CmdDesc()
        from .meeting import meeting_send as func
    elif ci.name == "conference":
        from chimerax.core.commands import (StringArg, IntArg, ColorArg,
                                            OpenFileNameArg, BoolArg, EnumOf)
        desc = CmdDesc(required=[("action", EnumOf(["start", "join",
                                                    "host"]))],
                       optional=[("location", StringArg)],
                       keyword=[("name", StringArg), ("color", ColorArg),
                                ("face_image", OpenFileNameArg),
                                ("copy_scene", BoolArg),
                                ("relay_commands", BoolArg),
                                ("update_interval", IntArg)])
        from .conference import conference as func
    elif ci.name == "conference set":
        from chimerax.core.commands import (StringArg, IntArg, ColorArg,
                                            OpenFileNameArg, BoolArg, EnumOf)
        desc = CmdDesc(keyword=[(
            "color",
            ColorArg), ("face_image", OpenFileNameArg), (
                "copy_scene", BoolArg), ("relay_commands",
                                         BoolArg), ("update_interval",
                                                    IntArg)])
        from .conference import conference_set as func
    elif ci.name == "conference close":
        desc = CmdDesc()
        from .conference import conference_close as func
    elif ci.name == "conference send":
        desc = CmdDesc()
        from .conference import conference_send as func
    else:
        raise ValueError("trying to register unknown command: %s" % ci.name)
    if desc.synopsis is None:
        desc.synopsis = ci.synopsis
    register(ci.name, desc, func, logger=logger)