Prepare and compile script types.
Attributes
mlogger = logger.get_logger(__name__)
module-attribute
Functions
create_avail_type(extension, cmd_component, module_builder=None)
Source code in pyrevitlib/pyrevit/runtime/typemaker.py
| def create_avail_type(extension, cmd_component, module_builder=None):
if cmd_component.type_id == exts.LINK_BUTTON_POSTFIX:
mlogger.debug(
'Skipped creating availability type for: %s', cmd_component
)
return
# create command availability class for this command
mlogger.debug('Creating availability type for: %s', cmd_component)
# set the name of the created type
cmd_component.avail_class_name = \
cmd_component.class_name + runtime.CMD_AVAIL_NAME_POSTFIX
if module_builder:
context_str = cmd_component.context.lower()
if context_str == exts.CTX_SELETION:
bundletypemaker.create_selection_avail_type(
module_builder=module_builder,
cmd_component=cmd_component
)
elif context_str == exts.CTX_ZERODOC:
bundletypemaker.create_zerodoc_avail_type(
module_builder=module_builder,
cmd_component=cmd_component
)
else:
bundletypemaker.create_extended_avail_type(
module_builder=module_builder,
cmd_component=cmd_component
)
mlogger.debug(
'Successfully created availability type for: %s', cmd_component)
|
create_exec_types(extension, cmd_component, module_builder=None)
Source code in pyrevitlib/pyrevit/runtime/typemaker.py
| def create_exec_types(extension, cmd_component, module_builder=None):
mlogger.debug('Command language is: %s', cmd_component.script_language)
# set the name of the created type
cmd_component.class_name = cmd_component.unique_name
if module_builder:
### create the executor types
## first highly custom button types
# if invoke
if cmd_component.type_id == exts.INVOKE_BUTTON_POSTFIX:
invoketypemaker.create_executor_type(
extension,
module_builder,
cmd_component
)
# if link
elif cmd_component.type_id == exts.LINK_BUTTON_POSTFIX:
# link buttons don't need types
mlogger.debug('Skipped creating executor type for: %s',
cmd_component)
# if content
elif cmd_component.type_id == exts.CONTENT_BUTTON_POSTFIX:
# link buttons don't need types
bundletypemaker.create_executor_type(
extension,
module_builder,
cmd_component
)
# if url
elif cmd_component.type_id == exts.URL_BUTTON_POSTFIX:
urltypemaker.create_executor_type(
extension,
module_builder,
cmd_component
)
## now language based button types
# if python
elif cmd_component.script_language == exts.PYTHON_LANG:
pythontypemaker.create_executor_type(
extension,
module_builder,
cmd_component
)
# if dynamo
elif cmd_component.script_language == exts.DYNAMO_LANG:
dynamotypemaker.create_executor_type(
extension,
module_builder,
cmd_component
)
# if anything else
else:
bundletypemaker.create_executor_type(
extension,
module_builder,
cmd_component
)
|
make_bundle_types(extension, cmd_component, module_builder=None)
Create the types for the bundle.
Parameters:
Name |
Type |
Description |
Default |
extension |
Extension
|
|
required
|
cmd_component |
GenericUICommand
|
|
required
|
module_builder |
ModuleBuilder
|
|
None
|
Source code in pyrevitlib/pyrevit/runtime/typemaker.py
| def make_bundle_types(extension, cmd_component, module_builder=None):
"""Create the types for the bundle.
Args:
extension (pyrevit.extensions.components.Extension): pyRevit extension
cmd_component (pyrevit.extensions.genericcomps.GenericUICommand):
command
module_builder (ModuleBuilder): module builder.
"""
# make command interface type for the given command
try:
create_exec_types(extension, cmd_component, module_builder)
except Exception as createtype_err:
mlogger.error('Error creating appropriate exec types for: %s | %s',
cmd_component, createtype_err)
# create availability types if necessary
if cmd_component.context:
try:
create_avail_type(extension, cmd_component, module_builder)
except Exception as createtype_err:
mlogger.error('Error creating appropriate avail types for: %s | %s',
cmd_component, createtype_err)
|