def _make_csharp_types(module_builder, cmd_component): compiled_assm = _get_csharp_cmd_asm(cmd_component) iext_cmd, iext_cmd_avail = _verify_command_interfaces(compiled_assm) if iext_cmd: create_type(module_builder, iext_cmd, cmd_component.unique_name, create_ext_command_attrs()) cmd_component.class_name = cmd_component.unique_name else: raise PyRevitException('Can not find IExternalCommand derivatives ' 'for: {}'.format(cmd_component)) if iext_cmd_avail: create_type(module_builder, iext_cmd_avail, cmd_component.unique_avail_name, []) cmd_component.avail_class_name = cmd_component.unique_avail_name else: logger.debug('Can not find IExternalCommandAvailability derivatives ' 'for: {}'.format(cmd_component))
def _make_dyno_types(extension, module_builder, cmd_component): #pylint: disable=W0613 mlogger.debug('Creating executor type for: %s', cmd_component) create_type(module_builder, DYNOCMD_EXECUTOR_TYPE, cmd_component.unique_name, create_ext_command_attrs(), cmd_component.get_full_script_address()) mlogger.debug('Successfully created executor type for: %s', cmd_component) cmd_component.class_name = cmd_component.unique_name
def _make_python_types(extension, module_builder, cmd_component): """ Args: module_builder: cmd_component (pyrevit.extensions.genericcomps.GenericUICommand): Returns: """ logger.debug('Creating executor type for: {}'.format(cmd_component)) # by default, core uses a clean engine for each command execution use_clean_engine = True # use_clean_engine will be set to false only when: # core is in rocket-mode # AND extension is rocket-mode compatible # AND the command is not asking for a clean engine if user_config.core.get_option('rocketmode', False) \ and _is_rocketmode_compat(extension.name) \ and not cmd_component.requires_clean_engine: use_clean_engine = False logger.debug('{} uses clean engine: {}'.format(cmd_component.name, use_clean_engine)) logger.debug('{} requires Fullframe engine: {}'.format( cmd_component.name, cmd_component.requires_fullframe_engine)) create_type(module_builder, CMD_EXECUTOR_TYPE, cmd_component.unique_name, create_ext_command_attrs(), cmd_component.get_full_script_address(), cmd_component.get_full_config_script_address(), join_strings(cmd_component.get_search_paths()), cmd_component.get_help_url() or '', cmd_component.name, cmd_component.bundle_name, extension.name, cmd_component.unique_name, int(use_clean_engine), int(cmd_component.requires_fullframe_engine)) logger.debug( 'Successfully created executor type for: {}'.format(cmd_component)) cmd_component.class_name = cmd_component.unique_name # create command availability class for this command if cmd_component.cmd_context: try: logger.debug( 'Creating availability type for: {}'.format(cmd_component)) cmd_component.avail_class_name = \ _make_python_avail_type(module_builder, cmd_component) logger.debug( 'Successfully created availability type for: {}'.format( cmd_component)) except Exception as cmd_avail_err: cmd_component.avail_class_name = None logger.error('Error creating availability type: {} | {}'.format( cmd_component, cmd_avail_err))
def _make_python_avail_type(module_builder, cmd_component): """ Args: module_builder: cmd_component (pyrevit.extensions.genericcomps.GenericUICommand): Returns: """ if cmd_component.cmd_context == 'Selection': create_type(module_builder, CMD_AVAIL_TYPE_SELECTION, cmd_component.unique_avail_name, [], cmd_component.cmd_context) else: create_type(module_builder, CMD_AVAIL_TYPE_CATEGORY, cmd_component.unique_avail_name, [], cmd_component.cmd_context) return cmd_component.unique_avail_name
def _make_python_avail_type(module_builder, cmd_component): """ Args: module_builder: cmd_component (pyrevit.extensions.genericcomps.GenericUICommand): Returns: """ context_str = cmd_component.cmd_context.lower() if context_str == exts.CTX_SELETION: create_type(module_builder, CMD_AVAIL_TYPE_SELECTION, cmd_component.unique_avail_name, [], cmd_component.cmd_context) elif context_str in exts.CTX_ZERODOC: create_type(module_builder, CMD_AVAIL_TYPE, cmd_component.unique_avail_name, []) else: create_type(module_builder, CMD_AVAIL_TYPE_EXTENDED, cmd_component.unique_avail_name, [], cmd_component.cmd_context) return cmd_component.unique_avail_name
def _make_python_types(extension, module_builder, cmd_component): """ Args: module_builder: cmd_component (pyrevit.extensions.genericcomps.GenericUICommand): Returns: """ logger.debug('Creating executor type for: {}'.format(cmd_component)) create_type(module_builder, CMD_EXECUTOR_TYPE, cmd_component.unique_name, create_ext_command_attrs(), cmd_component.get_full_script_address(), cmd_component.get_full_config_script_address(), join_strings(cmd_component.get_search_paths()), cmd_component.name, cmd_component.bundle_name, extension.name, cmd_component.unique_name) logger.debug( 'Successfully created executor type for: {}'.format(cmd_component)) cmd_component.class_name = cmd_component.unique_name # create command availability class for this command if cmd_component.cmd_context: try: logger.debug( 'Creating availability type for: {}'.format(cmd_component)) cmd_component.avail_class_name = \ _make_python_avail_type(module_builder, cmd_component) logger.debug( 'Successfully created availability type for: {}'.format( cmd_component)) except Exception as cmd_avail_err: cmd_component.avail_class_name = None logger.error('Error creating availability type: {} | {}'.format( cmd_component, cmd_avail_err))
def make_shared_types(module_builder=None): create_type(module_builder, CMD_AVAIL_TYPE, CMD_AVAIL_TYPE_NAME, [])