Esempio n. 1
0
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))
Esempio n. 2
0
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
Esempio n. 3
0
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))
Esempio n. 4
0
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
Esempio n. 5
0
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
Esempio n. 6
0
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))
Esempio n. 7
0
def make_shared_types(module_builder=None):
    create_type(module_builder, CMD_AVAIL_TYPE, CMD_AVAIL_TYPE_NAME, [])