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,
)
|