Merge pull request 'More 4.4 updates' (#17) from Onek8/LNXSDK:main into main

Reviewed-on: #17
This commit is contained in:
LeenkxTeam 2025-04-03 10:06:05 +00:00
commit 6ec480930a
31 changed files with 785 additions and 775 deletions

View File

@ -90,7 +90,8 @@ class BlendSpaceNode(LnxLogicTreeNode):
draw_handler_dict = {}
modal_handler_dict = {}
def __init__(self):
def __init__(self, *args, **kwargs):
super(BlendSpaceNode, self).__init__(*args, **kwargs)
array_nodes[str(id(self))] = self
if self.advanced_draw_run:
self.add_advanced_draw()

View File

@ -8,8 +8,8 @@ class OneShotActionMultiNode(LnxLogicTreeNode):
lnx_version = 1
min_inputs = 10
def __init__(self):
super(OneShotActionMultiNode, self).__init__()
def __init__(self, *args, **kwargs):
super(OneShotActionMultiNode, self).__init__(*args, **kwargs)
array_nodes[self.get_id_str()] = self
property0: HaxeStringProperty('property0', name = 'Action ID', default = '')

View File

@ -7,8 +7,8 @@ class SwitchActionMultiNode(LnxLogicTreeNode):
lnx_version = 1
min_inputs = 8
def __init__(self):
super(SwitchActionMultiNode, self).__init__()
def __init__(self, *args, **kwargs):
super(SwitchActionMultiNode, self).__init__(*args, **kwargs)
array_nodes[self.get_id_str()] = self
def lnx_init(self, context):

View File

@ -9,7 +9,8 @@ class ArrayNode(LnxLogicVariableNodeMixin, LnxLogicTreeNode):
lnx_section = 'variable'
min_inputs = 0
def __init__(self):
def __init__(self, *args, **kwargs):
super(ArrayNode, self).__init__(*args, **kwargs)
self.register_id()
def lnx_init(self, context):

View File

@ -12,8 +12,8 @@ class ArrayAddNode(LnxLogicTreeNode):
lnx_version = 5
min_inputs = 6
def __init__(self):
super(ArrayAddNode, self).__init__()
def __init__(self, *args, **kwargs):
super(ArrayAddNode, self).__init__(*args, **kwargs)
array_nodes[self.get_id_str()] = self
def lnx_init(self, context):

View File

@ -9,8 +9,8 @@ class BooleanArrayNode(LnxLogicVariableNodeMixin, LnxLogicTreeNode):
lnx_section = 'variable'
min_inputs = 0
def __init__(self):
super(BooleanArrayNode, self).__init__()
def __init__(self, *args, **kwargs):
super(BooleanArrayNode, self).__init__(*args, **kwargs)
self.register_id()
def lnx_init(self, context):

View File

@ -9,8 +9,8 @@ class ColorArrayNode(LnxLogicVariableNodeMixin, LnxLogicTreeNode):
lnx_section = 'variable'
min_inputs = 0
def __init__(self):
super(ColorArrayNode, self).__init__()
def __init__(self, *args, **kwargs):
super(ColorArrayNode, self).__init__(*args, **kwargs)
self.register_id()
def lnx_init(self, context):

View File

@ -9,8 +9,8 @@ class FloatArrayNode(LnxLogicVariableNodeMixin, LnxLogicTreeNode):
lnx_section = 'variable'
min_inputs = 0
def __init__(self):
super(FloatArrayNode, self).__init__()
def __init__(self, *args, **kwargs):
super(FloatArrayNode, self).__init__(*args, **kwargs)
self.register_id()
def lnx_init(self, context):

View File

@ -9,8 +9,8 @@ class IntegerArrayNode(LnxLogicVariableNodeMixin, LnxLogicTreeNode):
lnx_section = 'variable'
min_inputs = 0
def __init__(self):
super(IntegerArrayNode, self).__init__()
def __init__(self, *args, **kwargs):
super(IntegerArrayNode, self).__init__(*args, **kwargs)
self.register_id()
def lnx_init(self, context):

View File

@ -9,8 +9,8 @@ class ObjectArrayNode(LnxLogicVariableNodeMixin, LnxLogicTreeNode):
lnx_section = 'variable'
min_inputs = 0
def __init__(self):
super(ObjectArrayNode, self).__init__()
def __init__(self, *args, **kwargs):
super(ObjectArrayNode, self).__init__(*args, **kwargs)
self.register_id()
def lnx_init(self, context):

View File

@ -9,8 +9,8 @@ class StringArrayNode(LnxLogicVariableNodeMixin, LnxLogicTreeNode):
lnx_section = 'variable'
min_inputs = 0
def __init__(self):
super(StringArrayNode, self).__init__()
def __init__(self, *args, **kwargs):
super(StringArrayNode, self).__init__(*args, **kwargs)
self.register_id()
def lnx_init(self, context):

View File

@ -9,8 +9,9 @@ class VectorArrayNode(LnxLogicVariableNodeMixin, LnxLogicTreeNode):
lnx_section = 'variable'
min_inputs = 0
def __init__(self):
super(VectorArrayNode, self).__init__()
def __init__(self, *args, **kwargs):
super(VectorArrayNode, self).__init__(*args, **kwargs)
self.register_id()
def lnx_init(self, context):

View File

@ -9,7 +9,8 @@ class AddTorrentNode(LnxLogicTreeNode):
lnx_category = 'Leenkx'
lnx_version = 1
def __init__(self):
def __init__(self, *args, **kwargs):
super(AddTorrentNode, self).__init__(*args, **kwargs)
array_nodes[str(id(self))] = self

View File

@ -1,54 +1,54 @@
from lnx.logicnode.lnx_nodes import *
class CallWASMNode(LnxLogicTreeNode):
"""Call WASM"""
bl_idname = 'LNCallWASMNode'
bl_label = 'Call WASM'
bl_description = 'Call WASM'
lnx_category = 'HTML'
lnx_version = 1
min_inputs = 3
property1: HaxeBoolProperty(
'property1',
name="Secure",
description="Assignment",
default=False,
)
def __init__(self):
super(CallWASMNode, self).__init__()
array_nodes[str(id(self))] = self
def lnx_init(self, context):
self.add_input('LnxNodeSocketAction', 'In')
self.add_input('LnxDynamicSocket', 'WASM')
self.add_input('LnxStringSocket', 'Call')
self.add_output('LnxNodeSocketAction', 'Out')
self.add_output('LnxDynamicSocket', 'Result')
def draw_buttons(self, context, layout):
#layout.prop(self, 'property1')
row = layout.row(align=True)
op = row.operator('lnx.node_add_input', text='Add Arg', icon='PLUS', emboss=True)
op.node_index = str(id(self))
op.socket_type = 'LnxDynamicSocket'
op.name_format = "Arg {0}"
op.index_name_offset = -2
column = row.column(align=True)
op = column.operator('lnx.node_remove_input', text='', icon='X', emboss=True)
op.node_index = str(id(self))
if len(self.inputs) == self.min_inputs:
column.enabled = False
def get_replacement_node(self, node_tree: bpy.types.NodeTree):
if self.lnx_version not in (0, 1):
raise LookupError()
return NodeReplacement.Identity(self)
def register():
add_category('HTML', icon='SEQ_STRIP_META')
from lnx.logicnode.lnx_nodes import *
class CallWASMNode(LnxLogicTreeNode):
"""Call WASM"""
bl_idname = 'LNCallWASMNode'
bl_label = 'Call WASM'
bl_description = 'Call WASM'
lnx_category = 'HTML'
lnx_version = 1
min_inputs = 3
property1: HaxeBoolProperty(
'property1',
name="Secure",
description="Assignment",
default=False,
)
def __init__(self, *args, **kwargs):
super(CallWASMNode, self).__init__(*args, **kwargs)
array_nodes[str(id(self))] = self
def lnx_init(self, context):
self.add_input('LnxNodeSocketAction', 'In')
self.add_input('LnxDynamicSocket', 'WASM')
self.add_input('LnxStringSocket', 'Call')
self.add_output('LnxNodeSocketAction', 'Out')
self.add_output('LnxDynamicSocket', 'Result')
def draw_buttons(self, context, layout):
#layout.prop(self, 'property1')
row = layout.row(align=True)
op = row.operator('lnx.node_add_input', text='Add Arg', icon='PLUS', emboss=True)
op.node_index = str(id(self))
op.socket_type = 'LnxDynamicSocket'
op.name_format = "Arg {0}"
op.index_name_offset = -2
column = row.column(align=True)
op = column.operator('lnx.node_remove_input', text='', icon='X', emboss=True)
op.node_index = str(id(self))
if len(self.inputs) == self.min_inputs:
column.enabled = False
def get_replacement_node(self, node_tree: bpy.types.NodeTree):
if self.lnx_version not in (0, 1):
raise LookupError()
return NodeReplacement.Identity(self)
def register():
add_category('HTML', icon='SEQ_STRIP_META')
CallWASMNode.on_register()

View File

@ -1,451 +1,451 @@
import array
from lnx.logicnode.lnx_nodes import *
class CreateStyleNode(LnxLogicTreeNode):
"""Create Style"""
bl_idname = 'LNCreateStyleNode'
bl_label = 'Create Style'
bl_description = 'Create Style'
lnx_category = 'HTML'
lnx_version = 1
min_inputs = 1
@staticmethod
def get_enum_id_value(obj, prop_name, value):
return obj.bl_rna.properties[prop_name].enum_items[value].identifier
@staticmethod
def get_count_in(type_name):
return {
'align-content': 0,
'align-items': 1,
'align-self': 2,
'animation-delay': 3,
'animation-direction': 4,
'animation-duration': 5,
'animation-fill-mode': 6,
'animation-iteration-count': 7,
'animation-name': 8,
'animation-play-state': 9,
'animation-timing-function': 10,
'backface-visibility': 11,
'background': 12,
'background-attachment': 13,
'background-clip': 14,
'background-color': 15,
'background-image': 16,
'background-origin': 17,
'background-position': 18,
'background-repeat': 19,
'background-size': 20,
'border': 21,
'border-bottom': 22,
'border-bottom-color': 23,
'border-bottom-left-radius': 24,
'border-bottom-right-radius': 25,
'border-bottom-style': 26,
'border-bottom-width': 27,
'border-collapse': 28,
'border-color': 29,
'border-image': 30,
'border-image-outset': 31,
'border-image-repeat': 32,
'border-image-slice': 33,
'border-image-source': 34,
'border-image-width': 35,
'border-left': 36,
'border-left-color': 37,
'border-left-style': 38,
'border-left-width': 39,
'border-radius': 40,
'border-right': 41,
'border-right-color': 42,
'border-right-style': 43,
'border-right-width': 44,
'border-spacing': 45,
'border-style': 46,
'border-top': 47,
'border-top-color': 48,
'border-top-left-radius': 49,
'border-top-right-radius': 50,
'border-top-style': 51,
'border-top-width': 52,
'border-width': 53,
'bottom': 54,
'box-shadow': 55,
'box-sizing': 56,
'caption-side': 57,
'clear': 58,
'clip': 59,
'color': 60,
'column-count': 61,
'column-fill': 62,
'column-gap': 63,
'column-rule': 64,
'column-rule-color': 65,
'column-rule-style': 66,
'column-rule-width': 67,
'column-span': 68,
'column-width': 69,
'columns': 70,
'content': 71,
'counter-increment': 72,
'counter-reset': 73,
'cursor': 74,
'direction': 75,
'display': 76,
'empty-cells': 77,
'flex': 78,
'flex-basis': 79,
'flex-direction': 80,
'flex-flow': 81,
'flex-grow': 82,
'flex-shrink': 83,
'flex-wrap': 84,
'float': 85,
'font': 86,
'font-family': 87,
'font-size': 88,
'font-size-adjust': 89,
'font-stretch': 90,
'font-style': 91,
'font-variant': 92,
'font-weight': 93,
'height': 94,
'justify-content': 95,
'left': 96,
'letter-spacing': 97,
'line-height': 98,
'list-style': 99,
'list-style-image': 100,
'list-style-position': 101,
'list-style-type': 102,
'margin': 103,
'margin-bottom': 104,
'margin-left': 105,
'margin-right': 106,
'margin-top': 107,
'max-height': 108,
'max-width': 109,
'min-height': 110,
'min-width': 111,
'opacity': 112,
'order': 113,
'outline': 114,
'outline-color': 115,
'outline-offset': 116,
'outline-style': 117,
'outline-width': 118,
'overflow': 119,
'overflow-x': 120,
'overflow-y': 121,
'padding': 122,
'padding-bottom': 123,
'padding-left': 124,
'padding-right': 125,
'padding-top': 126,
'page-break-after': 127,
'page-break-before': 128,
'page-break-inside': 129,
'perspective': 130,
'perspective-origin': 131,
'position': 132,
'quotes': 133,
'resize': 134,
'right': 135,
'tab-size': 136,
'table-layout': 137,
'text-align': 138,
'text-align-last': 139,
'text-decoration': 140,
'text-decoration-color': 141,
'text-decoration-line': 142,
'text-decoration-style': 143,
'text-indent': 144,
'text-justify': 145,
'text-overflow': 146,
'text-shadow': 147,
'text-transform': 148,
'top': 149,
'transform': 150,
'transform-origin': 151,
'transform-style': 152,
'transition': 153,
'transition-delay': 154,
'transition-duration': 155,
'transition-property': 156,
'transition-timing-function': 157,
'vertical-align': 158,
'visibility': 159,
'white-space': 160,
'width': 161,
'word-break': 162,
'word-spacing': 163,
'word-wrap': 164,
'z-index': 165
}.get(type_name, 60)
def get_enum(self):
ind = 0
properties = ''
for i in self.inputs:
if ind != 0:
properties += self.inputs[ind].name + ':'
ind += 1
self['property1'] = properties
return self.get('property0', 60)
def set_enum(self, value):
select_current = self.get_enum_id_value(self, 'property0', value)
select_prev = self.property0
if select_prev != select_current:
self.add_input('LnxStringSocket', select_current)
self['property0'] = value
ind = 0
properties = ''
for i in self.inputs:
if ind != 0:
properties += self.inputs[ind].name + ':'
ind += 1
self['property1'] = properties
property0: HaxeEnumProperty(
'property0',
items = [('align-content', 'align-content', 'Align Content'),
('align-items', 'align-items', 'Align Items'),
('align-self', 'align-self', 'Align Self'),
('animation-delay', 'animation-delay', 'Animation Delay'),
('animation-direction', 'animation-direction', 'Animation Direction'),
('animation-duration', 'animation-duration', 'Animation Duration'),
('animation-fill-mode', 'animation-fill-mode', 'Animation Fill Mode'),
('animation-iteration-count', 'animation-iteration-count', 'Animation Iteration Count'),
('animation-name', 'animation-name', 'Animation Name'),
('animation-play-state', 'animation-play-state', 'Animation Play State'),
('animation-timing-function', 'animation-timing-function', 'Animation Timing Function'),
('backface-visibility', 'backface-visibility', 'Backface Visibility'),
('background', 'background', 'Background'),
('background-attachment', 'background-attachment', 'Background Attachment'),
('background-clip', 'background-clip', 'Background Clip'),
('background-color', 'background-color', 'Background Color'),
('background-image', 'background-image', 'Background Image'),
('background-origin', 'background-origin', 'Background Origin'),
('background-position', 'background-position', 'Background Position'),
('background-repeat', 'background-repeat', 'Background Repeat'),
('background-size', 'background-size', 'Background Size'),
('border', 'border', 'Border'),
('border-bottom', 'border-bottom', 'Border Bottom'),
('border-bottom-color', 'border-bottom-color', 'Border Bottom Color'),
('border-bottom-left-radius', 'border-bottom-left-radius', 'Border Bottom Left Radius'),
('border-bottom-right-radius', 'border-bottom-right-radius', 'Border Bottom Right Radius'),
('border-bottom-style', 'border-bottom-style', 'Border Bottom Style'),
('border-bottom-width', 'border-bottom-width', 'Border Bottom Width'),
('border-collapse', 'border-collapse', 'Border Collapse'),
('border-color', 'border-color', 'Border Color'),
('border-image', 'border-image', 'Border Image'),
('border-image-outset', 'border-image-outset', 'Border Image Outset'),
('border-image-repeat', 'border-image-repeat', 'Border Image Repeat'),
('border-image-slice', 'border-image-slice', 'Border Image Slice'),
('border-image-source', 'border-image-source', 'Border Image Source'),
('border-image-width', 'border-image-width', 'Border Image Width'),
('border-left', 'border-left', 'Border Left'),
('border-left-color', 'border-left-color', 'Border Left Color'),
('border-left-style', 'border-left-style', 'Border Left Style'),
('border-left-width', 'border-left-width', 'Border Left Width'),
('border-radius', 'border-radius', 'Border Radius'),
('border-right', 'border-right', 'Border Right'),
('border-right-color', 'border-right-color', 'Border Right Color'),
('border-right-style', 'border-right-style', 'Border Right Style'),
('border-right-width', 'border-right-width', 'Border Right Width'),
('border-spacing', 'border-spacing', 'Border Spacing'),
('border-style', 'border-style', 'Border Style'),
('border-top', 'border-top', 'Border Top'),
('border-top-color', 'border-top-color', 'Border Top Color'),
('border-top-left-radius', 'border-top-left-radius', 'Border Top Left Radius'),
('border-top-right-radius', 'border-top-right-radius', 'Border Top Right Radius'),
('border-top-style', 'border-top-style', 'Border Top Style'),
('border-top-width', 'border-top-width', 'Border Top Width'),
('border-width', 'border-width', 'Border Width'),
('bottom', 'bottom', 'Bottom'),
('box-shadow', 'box-shadow', 'Box Shadow'),
('box-sizing', 'box-sizing', 'Box Sizing'),
('caption-side', 'caption-side', 'Caption Side'),
('clear', 'clear', 'Clear'),
('clip', 'clip', 'Clip'),
('color', 'color', 'Color'),
('column-count', 'column-count', 'Column Count'),
('column-fill', 'column-fill', 'Column Fill'),
('column-gap', 'column-gap', 'Column Gap'),
('column-rule', 'column-rule', 'Column Rule'),
('column-rule-color', 'column-rule-color', 'Column Rule Color'),
('column-rule-style', 'column-rule-style', 'Column Rule Style'),
('column-rule-width', 'column-rule-width', 'Column Rule Width'),
('column-span', 'column-span', 'Column Span'),
('column-width', 'column-width', 'Column Width'),
('columns', 'columns', 'Columns'),
('content', 'content', 'Content'),
('counter-increment', 'counter-increment', 'Counter Increment'),
('counter-reset', 'counter-reset', 'Counter Reset'),
('cursor', 'cursor', 'Cursor'),
('direction', 'direction', 'Direction'),
('display', 'display', 'Display'),
('empty-cells', 'empty-cells', 'Empty Cells'),
('flex', 'flex', 'Flex'),
('flex-basis', 'flex-basis', 'Flex Basis'),
('flex-direction', 'flex-direction', 'Flex Direction'),
('flex-flow', 'flex-flow', 'Flex Flow'),
('flex-grow', 'flex-grow', 'Flex Grow'),
('flex-shrink', 'flex-shrink', 'Flex Shrink'),
('flex-wrap', 'flex-wrap', 'Flex Wrap'),
('float', 'float', 'Float'),
('font', 'font', 'Font'),
('font-family', 'font-family', 'Font Family'),
('font-size', 'font-size', 'Font Size'),
('font-size-adjust', 'font-size-adjust', 'Font Size Adjust'),
('font-stretch', 'font-stretch', 'Font Stretch'),
('font-style', 'font-style', 'Font Style'),
('font-variant', 'font-variant', 'Font Variant'),
('font-weight', 'font-weight', 'Font Weight'),
('height', 'height', 'Height'),
('justify-content', 'justify-content', 'Justify Content'),
('left', 'left', 'Left'),
('letter-spacing', 'letter-spacing', 'Letter Spacing'),
('line-height', 'line-height', 'Line Height'),
('list-style', 'list-style', 'List Style'),
('list-style-image', 'list-style-image', 'List Style Image'),
('list-style-position', 'list-style-position', 'List Style Position'),
('list-style-type', 'list-style-type', 'List Style Type'),
('margin', 'margin', 'Margin'),
('margin-bottom', 'margin-bottom', 'Margin Bottom'),
('margin-left', 'margin-left', 'Margin Left'),
('margin-right', 'margin-right', 'Margin Right'),
('margin-top', 'margin-top', 'Margin Top'),
('max-height', 'max-height', 'Max Height'),
('max-width', 'max-width', 'Max Width'),
('min-height', 'min-height', 'Min Height'),
('min-width', 'min-width', 'Min Width'),
('opacity', 'opacity', 'Opacity'),
('order', 'order', 'Order'),
('outline', 'outline', 'Outline'),
('outline-color', 'outline-color', 'Outline Color'),
('outline-offset', 'outline-offset', 'Outline Offset'),
('outline-style', 'outline-style', 'Outline Style'),
('outline-width', 'outline-width', 'Outline Sidth'),
('overflow', 'overflow', 'Overflow'),
('overflow-x', 'overflow-x', 'Overflow X'),
('overflow-y', 'overflow-y', 'Overflow Y'),
('padding', 'padding', 'Padding'),
('padding-bottom', 'padding-bottom', 'Padding Bottom'),
('padding-left', 'padding-left', 'Padding Left'),
('padding-right', 'padding-right', 'Padding Right'),
('padding-top', 'padding-top', 'Padding Top'),
('page-break-after', 'page-break-after', 'Page Break After'),
('page-break-before', 'page-break-before', 'Page Break Before'),
('page-break-inside', 'page-break-inside', 'Page Break Inside'),
('perspective', 'perspective', 'Perspective'),
('perspective-origin', 'perspective-origin', 'Perspective Origin'),
('position', 'position', 'Position'),
('quotes', 'quotes', 'Quotes'),
('resize', 'resize', 'Resize'),
('right', 'right', 'Right'),
('tab-size', 'tab-size', 'Tab Size'),
('table-layout', 'table-layout', 'Table Layout'),
('text-align', 'text-align', 'Text Align'),
('text-align-last', 'text-align-last', 'Text Align Last'),
('text-decoration', 'text-decoration', 'Text Decoration'),
('text-decoration-color', 'text-decoration-color', 'Text Decoration Color'),
('text-decoration-line', 'text-decoration-line', 'Text Decoration Line'),
('text-decoration-style', 'text-decoration-style', 'Text Decoration Style'),
('text-indent', 'text-indent', 'Text Indent'),
('text-justify', 'text-justify', 'Text Justify'),
('text-overflow', 'text-overflow', 'Text Overflow'),
('text-shadow', 'text-shadow', 'Text Shadow'),
('text-transform', 'text-transform', 'Text Transform'),
('top', 'top', 'Top'),
('transform', 'transform', 'Transform'),
('transform-origin', 'transform-origin', 'Transform Origin'),
('transform-style', 'transform-style', 'Transform Style'),
('transition', 'transition', 'Transition'),
('transition-delay', 'transition-delay', 'Transition Delay'),
('transition-duration', 'transition-duration', 'Transition Duration'),
('transition-property', 'transition-property', 'Transition Property'),
('transition-timing-function', 'transition-timing-function', 'Transition Timing Function'),
('vertical-align', 'vertical-align', 'Vertical Align'),
('visibility', 'visibility', 'Visibility'),
('white-space', 'white-space', 'White Space'),
('width', 'width', 'Width'),
('word-break', 'word-break', 'Word Break'),
('word-spacing', 'word-spacing', 'Word Spacing'),
('word-wrap', 'word-wrap', 'Word Wrap'),
('z-index', 'z-index', 'Z Index')],
name='',
default='color',
#update=set_properties,
set=set_enum,
get=get_enum)
property1: HaxeStringProperty(
'property1',
name='',
default='')
property2: HaxeBoolProperty(
'property2',
name='Append CSS',
default=False)
def __init__(self):
super(CreateStyleNode, self).__init__()
array_nodes[str(id(self))] = self
def lnx_init(self, context):
self.add_input('LnxStringSocket', 'Class Name')
self.add_output('LnxStringSocket', 'Class')
self.add_output('LnxStringSocket', 'Inline Style')
self.add_output('LnxStringSocket', 'CSS')
ind = 0
properties = ''
for i in self.inputs:
if ind != 0:
properties += self.inputs[ind].name + ':'
ind += 1
self['property1'] = properties
def draw_buttons(self, context, layout):
layout.prop(self, 'property0')
row = layout.row(align=True)
column = row.column(align=True)
op = column.operator('lnx.node_remove_input', text='Remove', icon='X', emboss=True)
op.node_index = str(id(self))
if len(self.inputs) == self.min_inputs:
column.enabled = False
layout.prop(self, 'property2')
def get_replacement_node(self, node_tree: bpy.types.NodeTree):
if self.lnx_version not in (0, 1):
raise LookupError()
return NodeReplacement.Identity(self)
def register():
add_category('HTML', icon='SEQ_STRIP_META')
CreateStyleNode.on_register()
import array
from lnx.logicnode.lnx_nodes import *
class CreateStyleNode(LnxLogicTreeNode):
"""Create Style"""
bl_idname = 'LNCreateStyleNode'
bl_label = 'Create Style'
bl_description = 'Create Style'
lnx_category = 'HTML'
lnx_version = 1
min_inputs = 1
@staticmethod
def get_enum_id_value(obj, prop_name, value):
return obj.bl_rna.properties[prop_name].enum_items[value].identifier
@staticmethod
def get_count_in(type_name):
return {
'align-content': 0,
'align-items': 1,
'align-self': 2,
'animation-delay': 3,
'animation-direction': 4,
'animation-duration': 5,
'animation-fill-mode': 6,
'animation-iteration-count': 7,
'animation-name': 8,
'animation-play-state': 9,
'animation-timing-function': 10,
'backface-visibility': 11,
'background': 12,
'background-attachment': 13,
'background-clip': 14,
'background-color': 15,
'background-image': 16,
'background-origin': 17,
'background-position': 18,
'background-repeat': 19,
'background-size': 20,
'border': 21,
'border-bottom': 22,
'border-bottom-color': 23,
'border-bottom-left-radius': 24,
'border-bottom-right-radius': 25,
'border-bottom-style': 26,
'border-bottom-width': 27,
'border-collapse': 28,
'border-color': 29,
'border-image': 30,
'border-image-outset': 31,
'border-image-repeat': 32,
'border-image-slice': 33,
'border-image-source': 34,
'border-image-width': 35,
'border-left': 36,
'border-left-color': 37,
'border-left-style': 38,
'border-left-width': 39,
'border-radius': 40,
'border-right': 41,
'border-right-color': 42,
'border-right-style': 43,
'border-right-width': 44,
'border-spacing': 45,
'border-style': 46,
'border-top': 47,
'border-top-color': 48,
'border-top-left-radius': 49,
'border-top-right-radius': 50,
'border-top-style': 51,
'border-top-width': 52,
'border-width': 53,
'bottom': 54,
'box-shadow': 55,
'box-sizing': 56,
'caption-side': 57,
'clear': 58,
'clip': 59,
'color': 60,
'column-count': 61,
'column-fill': 62,
'column-gap': 63,
'column-rule': 64,
'column-rule-color': 65,
'column-rule-style': 66,
'column-rule-width': 67,
'column-span': 68,
'column-width': 69,
'columns': 70,
'content': 71,
'counter-increment': 72,
'counter-reset': 73,
'cursor': 74,
'direction': 75,
'display': 76,
'empty-cells': 77,
'flex': 78,
'flex-basis': 79,
'flex-direction': 80,
'flex-flow': 81,
'flex-grow': 82,
'flex-shrink': 83,
'flex-wrap': 84,
'float': 85,
'font': 86,
'font-family': 87,
'font-size': 88,
'font-size-adjust': 89,
'font-stretch': 90,
'font-style': 91,
'font-variant': 92,
'font-weight': 93,
'height': 94,
'justify-content': 95,
'left': 96,
'letter-spacing': 97,
'line-height': 98,
'list-style': 99,
'list-style-image': 100,
'list-style-position': 101,
'list-style-type': 102,
'margin': 103,
'margin-bottom': 104,
'margin-left': 105,
'margin-right': 106,
'margin-top': 107,
'max-height': 108,
'max-width': 109,
'min-height': 110,
'min-width': 111,
'opacity': 112,
'order': 113,
'outline': 114,
'outline-color': 115,
'outline-offset': 116,
'outline-style': 117,
'outline-width': 118,
'overflow': 119,
'overflow-x': 120,
'overflow-y': 121,
'padding': 122,
'padding-bottom': 123,
'padding-left': 124,
'padding-right': 125,
'padding-top': 126,
'page-break-after': 127,
'page-break-before': 128,
'page-break-inside': 129,
'perspective': 130,
'perspective-origin': 131,
'position': 132,
'quotes': 133,
'resize': 134,
'right': 135,
'tab-size': 136,
'table-layout': 137,
'text-align': 138,
'text-align-last': 139,
'text-decoration': 140,
'text-decoration-color': 141,
'text-decoration-line': 142,
'text-decoration-style': 143,
'text-indent': 144,
'text-justify': 145,
'text-overflow': 146,
'text-shadow': 147,
'text-transform': 148,
'top': 149,
'transform': 150,
'transform-origin': 151,
'transform-style': 152,
'transition': 153,
'transition-delay': 154,
'transition-duration': 155,
'transition-property': 156,
'transition-timing-function': 157,
'vertical-align': 158,
'visibility': 159,
'white-space': 160,
'width': 161,
'word-break': 162,
'word-spacing': 163,
'word-wrap': 164,
'z-index': 165
}.get(type_name, 60)
def get_enum(self):
ind = 0
properties = ''
for i in self.inputs:
if ind != 0:
properties += self.inputs[ind].name + ':'
ind += 1
self['property1'] = properties
return self.get('property0', 60)
def set_enum(self, value):
select_current = self.get_enum_id_value(self, 'property0', value)
select_prev = self.property0
if select_prev != select_current:
self.add_input('LnxStringSocket', select_current)
self['property0'] = value
ind = 0
properties = ''
for i in self.inputs:
if ind != 0:
properties += self.inputs[ind].name + ':'
ind += 1
self['property1'] = properties
property0: HaxeEnumProperty(
'property0',
items = [('align-content', 'align-content', 'Align Content'),
('align-items', 'align-items', 'Align Items'),
('align-self', 'align-self', 'Align Self'),
('animation-delay', 'animation-delay', 'Animation Delay'),
('animation-direction', 'animation-direction', 'Animation Direction'),
('animation-duration', 'animation-duration', 'Animation Duration'),
('animation-fill-mode', 'animation-fill-mode', 'Animation Fill Mode'),
('animation-iteration-count', 'animation-iteration-count', 'Animation Iteration Count'),
('animation-name', 'animation-name', 'Animation Name'),
('animation-play-state', 'animation-play-state', 'Animation Play State'),
('animation-timing-function', 'animation-timing-function', 'Animation Timing Function'),
('backface-visibility', 'backface-visibility', 'Backface Visibility'),
('background', 'background', 'Background'),
('background-attachment', 'background-attachment', 'Background Attachment'),
('background-clip', 'background-clip', 'Background Clip'),
('background-color', 'background-color', 'Background Color'),
('background-image', 'background-image', 'Background Image'),
('background-origin', 'background-origin', 'Background Origin'),
('background-position', 'background-position', 'Background Position'),
('background-repeat', 'background-repeat', 'Background Repeat'),
('background-size', 'background-size', 'Background Size'),
('border', 'border', 'Border'),
('border-bottom', 'border-bottom', 'Border Bottom'),
('border-bottom-color', 'border-bottom-color', 'Border Bottom Color'),
('border-bottom-left-radius', 'border-bottom-left-radius', 'Border Bottom Left Radius'),
('border-bottom-right-radius', 'border-bottom-right-radius', 'Border Bottom Right Radius'),
('border-bottom-style', 'border-bottom-style', 'Border Bottom Style'),
('border-bottom-width', 'border-bottom-width', 'Border Bottom Width'),
('border-collapse', 'border-collapse', 'Border Collapse'),
('border-color', 'border-color', 'Border Color'),
('border-image', 'border-image', 'Border Image'),
('border-image-outset', 'border-image-outset', 'Border Image Outset'),
('border-image-repeat', 'border-image-repeat', 'Border Image Repeat'),
('border-image-slice', 'border-image-slice', 'Border Image Slice'),
('border-image-source', 'border-image-source', 'Border Image Source'),
('border-image-width', 'border-image-width', 'Border Image Width'),
('border-left', 'border-left', 'Border Left'),
('border-left-color', 'border-left-color', 'Border Left Color'),
('border-left-style', 'border-left-style', 'Border Left Style'),
('border-left-width', 'border-left-width', 'Border Left Width'),
('border-radius', 'border-radius', 'Border Radius'),
('border-right', 'border-right', 'Border Right'),
('border-right-color', 'border-right-color', 'Border Right Color'),
('border-right-style', 'border-right-style', 'Border Right Style'),
('border-right-width', 'border-right-width', 'Border Right Width'),
('border-spacing', 'border-spacing', 'Border Spacing'),
('border-style', 'border-style', 'Border Style'),
('border-top', 'border-top', 'Border Top'),
('border-top-color', 'border-top-color', 'Border Top Color'),
('border-top-left-radius', 'border-top-left-radius', 'Border Top Left Radius'),
('border-top-right-radius', 'border-top-right-radius', 'Border Top Right Radius'),
('border-top-style', 'border-top-style', 'Border Top Style'),
('border-top-width', 'border-top-width', 'Border Top Width'),
('border-width', 'border-width', 'Border Width'),
('bottom', 'bottom', 'Bottom'),
('box-shadow', 'box-shadow', 'Box Shadow'),
('box-sizing', 'box-sizing', 'Box Sizing'),
('caption-side', 'caption-side', 'Caption Side'),
('clear', 'clear', 'Clear'),
('clip', 'clip', 'Clip'),
('color', 'color', 'Color'),
('column-count', 'column-count', 'Column Count'),
('column-fill', 'column-fill', 'Column Fill'),
('column-gap', 'column-gap', 'Column Gap'),
('column-rule', 'column-rule', 'Column Rule'),
('column-rule-color', 'column-rule-color', 'Column Rule Color'),
('column-rule-style', 'column-rule-style', 'Column Rule Style'),
('column-rule-width', 'column-rule-width', 'Column Rule Width'),
('column-span', 'column-span', 'Column Span'),
('column-width', 'column-width', 'Column Width'),
('columns', 'columns', 'Columns'),
('content', 'content', 'Content'),
('counter-increment', 'counter-increment', 'Counter Increment'),
('counter-reset', 'counter-reset', 'Counter Reset'),
('cursor', 'cursor', 'Cursor'),
('direction', 'direction', 'Direction'),
('display', 'display', 'Display'),
('empty-cells', 'empty-cells', 'Empty Cells'),
('flex', 'flex', 'Flex'),
('flex-basis', 'flex-basis', 'Flex Basis'),
('flex-direction', 'flex-direction', 'Flex Direction'),
('flex-flow', 'flex-flow', 'Flex Flow'),
('flex-grow', 'flex-grow', 'Flex Grow'),
('flex-shrink', 'flex-shrink', 'Flex Shrink'),
('flex-wrap', 'flex-wrap', 'Flex Wrap'),
('float', 'float', 'Float'),
('font', 'font', 'Font'),
('font-family', 'font-family', 'Font Family'),
('font-size', 'font-size', 'Font Size'),
('font-size-adjust', 'font-size-adjust', 'Font Size Adjust'),
('font-stretch', 'font-stretch', 'Font Stretch'),
('font-style', 'font-style', 'Font Style'),
('font-variant', 'font-variant', 'Font Variant'),
('font-weight', 'font-weight', 'Font Weight'),
('height', 'height', 'Height'),
('justify-content', 'justify-content', 'Justify Content'),
('left', 'left', 'Left'),
('letter-spacing', 'letter-spacing', 'Letter Spacing'),
('line-height', 'line-height', 'Line Height'),
('list-style', 'list-style', 'List Style'),
('list-style-image', 'list-style-image', 'List Style Image'),
('list-style-position', 'list-style-position', 'List Style Position'),
('list-style-type', 'list-style-type', 'List Style Type'),
('margin', 'margin', 'Margin'),
('margin-bottom', 'margin-bottom', 'Margin Bottom'),
('margin-left', 'margin-left', 'Margin Left'),
('margin-right', 'margin-right', 'Margin Right'),
('margin-top', 'margin-top', 'Margin Top'),
('max-height', 'max-height', 'Max Height'),
('max-width', 'max-width', 'Max Width'),
('min-height', 'min-height', 'Min Height'),
('min-width', 'min-width', 'Min Width'),
('opacity', 'opacity', 'Opacity'),
('order', 'order', 'Order'),
('outline', 'outline', 'Outline'),
('outline-color', 'outline-color', 'Outline Color'),
('outline-offset', 'outline-offset', 'Outline Offset'),
('outline-style', 'outline-style', 'Outline Style'),
('outline-width', 'outline-width', 'Outline Sidth'),
('overflow', 'overflow', 'Overflow'),
('overflow-x', 'overflow-x', 'Overflow X'),
('overflow-y', 'overflow-y', 'Overflow Y'),
('padding', 'padding', 'Padding'),
('padding-bottom', 'padding-bottom', 'Padding Bottom'),
('padding-left', 'padding-left', 'Padding Left'),
('padding-right', 'padding-right', 'Padding Right'),
('padding-top', 'padding-top', 'Padding Top'),
('page-break-after', 'page-break-after', 'Page Break After'),
('page-break-before', 'page-break-before', 'Page Break Before'),
('page-break-inside', 'page-break-inside', 'Page Break Inside'),
('perspective', 'perspective', 'Perspective'),
('perspective-origin', 'perspective-origin', 'Perspective Origin'),
('position', 'position', 'Position'),
('quotes', 'quotes', 'Quotes'),
('resize', 'resize', 'Resize'),
('right', 'right', 'Right'),
('tab-size', 'tab-size', 'Tab Size'),
('table-layout', 'table-layout', 'Table Layout'),
('text-align', 'text-align', 'Text Align'),
('text-align-last', 'text-align-last', 'Text Align Last'),
('text-decoration', 'text-decoration', 'Text Decoration'),
('text-decoration-color', 'text-decoration-color', 'Text Decoration Color'),
('text-decoration-line', 'text-decoration-line', 'Text Decoration Line'),
('text-decoration-style', 'text-decoration-style', 'Text Decoration Style'),
('text-indent', 'text-indent', 'Text Indent'),
('text-justify', 'text-justify', 'Text Justify'),
('text-overflow', 'text-overflow', 'Text Overflow'),
('text-shadow', 'text-shadow', 'Text Shadow'),
('text-transform', 'text-transform', 'Text Transform'),
('top', 'top', 'Top'),
('transform', 'transform', 'Transform'),
('transform-origin', 'transform-origin', 'Transform Origin'),
('transform-style', 'transform-style', 'Transform Style'),
('transition', 'transition', 'Transition'),
('transition-delay', 'transition-delay', 'Transition Delay'),
('transition-duration', 'transition-duration', 'Transition Duration'),
('transition-property', 'transition-property', 'Transition Property'),
('transition-timing-function', 'transition-timing-function', 'Transition Timing Function'),
('vertical-align', 'vertical-align', 'Vertical Align'),
('visibility', 'visibility', 'Visibility'),
('white-space', 'white-space', 'White Space'),
('width', 'width', 'Width'),
('word-break', 'word-break', 'Word Break'),
('word-spacing', 'word-spacing', 'Word Spacing'),
('word-wrap', 'word-wrap', 'Word Wrap'),
('z-index', 'z-index', 'Z Index')],
name='',
default='color',
#update=set_properties,
set=set_enum,
get=get_enum)
property1: HaxeStringProperty(
'property1',
name='',
default='')
property2: HaxeBoolProperty(
'property2',
name='Append CSS',
default=False)
def __init__(self, *args, **kwargs):
super(CreateStyleNode, self).__init__(*args, **kwargs)
array_nodes[str(id(self))] = self
def lnx_init(self, context):
self.add_input('LnxStringSocket', 'Class Name')
self.add_output('LnxStringSocket', 'Class')
self.add_output('LnxStringSocket', 'Inline Style')
self.add_output('LnxStringSocket', 'CSS')
ind = 0
properties = ''
for i in self.inputs:
if ind != 0:
properties += self.inputs[ind].name + ':'
ind += 1
self['property1'] = properties
def draw_buttons(self, context, layout):
layout.prop(self, 'property0')
row = layout.row(align=True)
column = row.column(align=True)
op = column.operator('lnx.node_remove_input', text='Remove', icon='X', emboss=True)
op.node_index = str(id(self))
if len(self.inputs) == self.min_inputs:
column.enabled = False
layout.prop(self, 'property2')
def get_replacement_node(self, node_tree: bpy.types.NodeTree):
if self.lnx_version not in (0, 1):
raise LookupError()
return NodeReplacement.Identity(self)
def register():
add_category('HTML', icon='SEQ_STRIP_META')
CreateStyleNode.on_register()

View File

@ -9,7 +9,8 @@ class CreateTorrentNode(LnxLogicTreeNode):
lnx_category = 'Leenkx'
lnx_version = 1
def __init__(self):
def __init__(self, *args, **kwargs):
super(CreateTorrentNode, self).__init__(*args, **kwargs)
array_nodes[str(id(self))] = self

View File

@ -1,110 +1,111 @@
from lnx.logicnode.lnx_nodes import *
class LeenkxEventNode(LnxLogicTreeNode):
"""Leenkx Event"""
bl_idname = 'LNLeenkxEventNode'
bl_label = 'Leenkx Event'
bl_description = 'Trigger an event from the network passing both data and ID'
lnx_category = 'Leenkx'
lnx_version = 1
@staticmethod
def get_enum_id_value(obj, prop_name, value):
return obj.bl_rna.properties[prop_name].enum_items[value].identifier
@staticmethod
def get_count_in(type_name):
return {
'client': 0,
'host': 1,
'securehost': 2
}.get(type_name, 0)
def get_enum(self):
return self.get('property0', 0)
def set_enum(self, value):
# Checking the selection of each type
select_current = self.get_enum_id_value(self, 'property0', value)
select_prev = self.property0
#Check if type changed
if select_prev != select_current:
for i in self.inputs:
self.inputs.remove(i)
# Arguements for type Client
if (self.get_count_in(select_current) == 0):
self.add_input('LnxStringSocket', 'Url', default_value="8001")
# Arguements for type Host
if (self.get_count_in(select_current) == 1):
self.add_input('LnxStringSocket', 'Domain', default_value="127.0.0.1")
self.add_input('LnxIntSocket', 'Port', default_value=8001)
# Arguements for type Secure Host
if (self.get_count_in(select_current) == 2):
self.add_input('LnxStringSocket', 'Domain', default_value="127.0.0.1")
self.add_input('LnxIntSocket', 'Port', default_value=8001)
self['property0'] = value
property0: HaxeEnumProperty(
'property0',
items = [('client', 'Client', 'Network client Event listener'),
('host', 'Host', 'Network host Event listener'),
('securehost', 'Secure Host', 'Network secure host Event listener')],
name='',
default='client',
set=set_enum,
get=get_enum)
property1: HaxeEnumProperty(
'property1',
items = [('onopen', 'OnOpen', 'Listens to onOpen event'),
('onmessage', 'OnMessage', 'Listens to onMessage event'),
('onerror', 'OnError', 'Listens to onError event'),
('onclose', 'OnClose', 'Listens to onClose event'),
('onseen', 'OnSeen', 'Listens to onClose event'),
('onserver', 'OnServer', 'Listens to onClose event'),
('onconnections', 'OnConnections', 'Listens to onClose event'),
('onping', 'OnPing', 'Listens to onClose event'),
('onleft', 'OnLeft', 'Listens to onClose event'),
('ontimeout', 'OnTimeout', 'Listens to onClose event'),
('onrpc', 'OnRpc', 'Listens to onClose event'),
('onrpcresponse', 'OnRpcResponse', 'Listens to onClose event'),
('onwireleft', 'OnWireLeft', 'Listens to onClose event'),
('onwireseen', 'OnWireSeen', 'Listens to onClose event'),
('ontorrent', 'OnTorrent', 'Listens to onClose event'),
('ontracker', 'OnTracker', 'Listens to onClose event'),
('onannounce', 'OnAnnounce', 'Listens to onClose event')],
name='',
default='onopen')
def __init__(self):
array_nodes[str(id(self))] = self
def lnx_init(self, context):
#self.add_input('LnxNodeSocketAction', 'In')
self.add_input('LnxStringSocket', 'Url', default_value="ws://127.0.0.1:8001")
self.add_output('LnxNodeSocketAction', 'Out')
self.add_output('LnxDynamicSocket', 'ID')
self.add_output('LnxDynamicSocket', 'Data')
def draw_buttons(self, context, layout):
layout.prop(self, 'property0')
layout.prop(self, 'property1')
def register():
add_category('Leenkx', icon='ORIENTATION_CURSOR')
from lnx.logicnode.lnx_nodes import *
class LeenkxEventNode(LnxLogicTreeNode):
"""Leenkx Event"""
bl_idname = 'LNLeenkxEventNode'
bl_label = 'Leenkx Event'
bl_description = 'Trigger an event from the network passing both data and ID'
lnx_category = 'Leenkx'
lnx_version = 1
@staticmethod
def get_enum_id_value(obj, prop_name, value):
return obj.bl_rna.properties[prop_name].enum_items[value].identifier
@staticmethod
def get_count_in(type_name):
return {
'client': 0,
'host': 1,
'securehost': 2
}.get(type_name, 0)
def get_enum(self):
return self.get('property0', 0)
def set_enum(self, value):
# Checking the selection of each type
select_current = self.get_enum_id_value(self, 'property0', value)
select_prev = self.property0
#Check if type changed
if select_prev != select_current:
for i in self.inputs:
self.inputs.remove(i)
# Arguements for type Client
if (self.get_count_in(select_current) == 0):
self.add_input('LnxStringSocket', 'Url', default_value="8001")
# Arguements for type Host
if (self.get_count_in(select_current) == 1):
self.add_input('LnxStringSocket', 'Domain', default_value="127.0.0.1")
self.add_input('LnxIntSocket', 'Port', default_value=8001)
# Arguements for type Secure Host
if (self.get_count_in(select_current) == 2):
self.add_input('LnxStringSocket', 'Domain', default_value="127.0.0.1")
self.add_input('LnxIntSocket', 'Port', default_value=8001)
self['property0'] = value
property0: HaxeEnumProperty(
'property0',
items = [('client', 'Client', 'Network client Event listener'),
('host', 'Host', 'Network host Event listener'),
('securehost', 'Secure Host', 'Network secure host Event listener')],
name='',
default='client',
set=set_enum,
get=get_enum)
property1: HaxeEnumProperty(
'property1',
items = [('onopen', 'OnOpen', 'Listens to onOpen event'),
('onmessage', 'OnMessage', 'Listens to onMessage event'),
('onerror', 'OnError', 'Listens to onError event'),
('onclose', 'OnClose', 'Listens to onClose event'),
('onseen', 'OnSeen', 'Listens to onClose event'),
('onserver', 'OnServer', 'Listens to onClose event'),
('onconnections', 'OnConnections', 'Listens to onClose event'),
('onping', 'OnPing', 'Listens to onClose event'),
('onleft', 'OnLeft', 'Listens to onClose event'),
('ontimeout', 'OnTimeout', 'Listens to onClose event'),
('onrpc', 'OnRpc', 'Listens to onClose event'),
('onrpcresponse', 'OnRpcResponse', 'Listens to onClose event'),
('onwireleft', 'OnWireLeft', 'Listens to onClose event'),
('onwireseen', 'OnWireSeen', 'Listens to onClose event'),
('ontorrent', 'OnTorrent', 'Listens to onClose event'),
('ontracker', 'OnTracker', 'Listens to onClose event'),
('onannounce', 'OnAnnounce', 'Listens to onClose event')],
name='',
default='onopen')
def __init__(self, *args, **kwargs):
super(LeenkxEventNode, self).__init__(*args, **kwargs)
array_nodes[str(id(self))] = self
def lnx_init(self, context):
#self.add_input('LnxNodeSocketAction', 'In')
self.add_input('LnxStringSocket', 'Url', default_value="ws://127.0.0.1:8001")
self.add_output('LnxNodeSocketAction', 'Out')
self.add_output('LnxDynamicSocket', 'ID')
self.add_output('LnxDynamicSocket', 'Data')
def draw_buttons(self, context, layout):
layout.prop(self, 'property0')
layout.prop(self, 'property1')
def register():
add_category('Leenkx', icon='ORIENTATION_CURSOR')
LeenkxEventNode.on_register()

View File

@ -1,116 +1,117 @@
from lnx.logicnode.lnx_nodes import *
class LeenkxSendMessageNode(LnxLogicTreeNode):
"""Leenkx Send Message"""
bl_idname = 'LNLeenkxSendMessageNode'
bl_label = 'Leenkx Send Message'
bl_description = 'Send messages to the Leenkx network'
lnx_category = 'Leenkx'
lnx_version = 1
@staticmethod
def get_enum_id_value(obj, prop_name, value):
return obj.bl_rna.properties[prop_name].enum_items[value].identifier
@staticmethod
def get_count_in(type_name):
return {
'client': 0,
'host': 1,
'securehost': 2
}.get(type_name, 0)
def get_enum(self):
return self.get('property0', 0)
def set_enum(self, value):
# Checking the selection of each type
select_current = self.get_enum_id_value(self, 'property0', value)
select_prev = self.property0
#Check if type changed
if select_prev != select_current:
for i in self.inputs:
self.inputs.remove(i)
# Arguements for type Client
if (self.get_count_in(select_current) == 0):
self.add_input('LnxNodeSocketAction', 'In')
self.add_input('LnxDynamicSocket', 'Connection')
self.add_input('LnxStringSocket', 'API')
self.add_input('LnxDynamicSocket', 'Data')
self.add_input('LnxStringSocket', 'ID')
self.add_input('LnxBoolSocket', 'Send All')
# Arguements for type Host
if (self.get_count_in(select_current) == 1):
self.add_input('LnxNodeSocketAction', 'In')
self.add_input('LnxDynamicSocket', 'Connection')
self.add_input('LnxStringSocket', 'API')
self.add_input('LnxDynamicSocket', 'Data')
self.add_input('LnxStringSocket', 'ID')
self.add_input('LnxBoolSocket', 'Send All')
# Arguements for type Secure Host
if (self.get_count_in(select_current) == 2):
self.add_input('LnxNodeSocketAction', 'In')
self.add_input('LnxDynamicSocket', 'Connection')
self.add_input('LnxStringSocket', 'API')
self.add_input('LnxDynamicSocket', 'Data')
self.add_input('LnxStringSocket', 'ID')
self.add_input('LnxBoolSocket', 'Send All')
self['property0'] = value
property0: HaxeEnumProperty(
'property0',
items = [('client', 'Client', 'Network client Event listener'),
('host', 'Host', 'Network host Event listener'),
('securehost', 'Secure Host', 'Network secure host Event listener')],
name='',
default='client',
set=set_enum,
get=get_enum)
property1: HaxeEnumProperty(
'property1',
items = [('string', 'String', 'Send a string over the network to one or all of the clients'),
('vector', 'Vector', 'Send a vector over the network to one or all of the clients'),
('float', 'Float', 'Send a float over the network to one or all of the clients'),
('integer', 'Integer', 'Send an integer over the network to one or all of the clients'),
('boolean', 'Boolean', 'Send a boolean over the network to one or all of the clients'),
('transform', 'Transform', 'Send a transform over the network to one or all of the clients'),
('rotation', 'Rotation', 'Send a rotation over the network to one or all of the clients')],
name='',
default='string')
def __init__(self):
array_nodes[str(id(self))] = self
def lnx_init(self, context):
self.add_input('LnxNodeSocketAction', 'In')
self.add_input('LnxDynamicSocket', 'Connection')
self.add_input('LnxStringSocket', 'API')
self.add_input('LnxDynamicSocket', 'Data')
self.add_input('LnxStringSocket', 'ID')
self.add_input('LnxBoolSocket', 'Send All')
self.add_output('LnxNodeSocketAction', 'Out')
def draw_buttons(self, context, layout):
layout.prop(self, 'property0')
layout.prop(self, 'property1')
def register():
add_category('Leenkx', icon='ORIENTATION_CURSOR')
from lnx.logicnode.lnx_nodes import *
class LeenkxSendMessageNode(LnxLogicTreeNode):
"""Leenkx Send Message"""
bl_idname = 'LNLeenkxSendMessageNode'
bl_label = 'Leenkx Send Message'
bl_description = 'Send messages to the Leenkx network'
lnx_category = 'Leenkx'
lnx_version = 1
@staticmethod
def get_enum_id_value(obj, prop_name, value):
return obj.bl_rna.properties[prop_name].enum_items[value].identifier
@staticmethod
def get_count_in(type_name):
return {
'client': 0,
'host': 1,
'securehost': 2
}.get(type_name, 0)
def get_enum(self):
return self.get('property0', 0)
def set_enum(self, value):
# Checking the selection of each type
select_current = self.get_enum_id_value(self, 'property0', value)
select_prev = self.property0
#Check if type changed
if select_prev != select_current:
for i in self.inputs:
self.inputs.remove(i)
# Arguements for type Client
if (self.get_count_in(select_current) == 0):
self.add_input('LnxNodeSocketAction', 'In')
self.add_input('LnxDynamicSocket', 'Connection')
self.add_input('LnxStringSocket', 'API')
self.add_input('LnxDynamicSocket', 'Data')
self.add_input('LnxStringSocket', 'ID')
self.add_input('LnxBoolSocket', 'Send All')
# Arguements for type Host
if (self.get_count_in(select_current) == 1):
self.add_input('LnxNodeSocketAction', 'In')
self.add_input('LnxDynamicSocket', 'Connection')
self.add_input('LnxStringSocket', 'API')
self.add_input('LnxDynamicSocket', 'Data')
self.add_input('LnxStringSocket', 'ID')
self.add_input('LnxBoolSocket', 'Send All')
# Arguements for type Secure Host
if (self.get_count_in(select_current) == 2):
self.add_input('LnxNodeSocketAction', 'In')
self.add_input('LnxDynamicSocket', 'Connection')
self.add_input('LnxStringSocket', 'API')
self.add_input('LnxDynamicSocket', 'Data')
self.add_input('LnxStringSocket', 'ID')
self.add_input('LnxBoolSocket', 'Send All')
self['property0'] = value
property0: HaxeEnumProperty(
'property0',
items = [('client', 'Client', 'Network client Event listener'),
('host', 'Host', 'Network host Event listener'),
('securehost', 'Secure Host', 'Network secure host Event listener')],
name='',
default='client',
set=set_enum,
get=get_enum)
property1: HaxeEnumProperty(
'property1',
items = [('string', 'String', 'Send a string over the network to one or all of the clients'),
('vector', 'Vector', 'Send a vector over the network to one or all of the clients'),
('float', 'Float', 'Send a float over the network to one or all of the clients'),
('integer', 'Integer', 'Send an integer over the network to one or all of the clients'),
('boolean', 'Boolean', 'Send a boolean over the network to one or all of the clients'),
('transform', 'Transform', 'Send a transform over the network to one or all of the clients'),
('rotation', 'Rotation', 'Send a rotation over the network to one or all of the clients')],
name='',
default='string')
def __init__(self, *args, **kwargs):
super(LeenkxSendMessageNode, self).__init__(*args, **kwargs)
array_nodes[str(id(self))] = self
def lnx_init(self, context):
self.add_input('LnxNodeSocketAction', 'In')
self.add_input('LnxDynamicSocket', 'Connection')
self.add_input('LnxStringSocket', 'API')
self.add_input('LnxDynamicSocket', 'Data')
self.add_input('LnxStringSocket', 'ID')
self.add_input('LnxBoolSocket', 'Send All')
self.add_output('LnxNodeSocketAction', 'Out')
def draw_buttons(self, context, layout):
layout.prop(self, 'property0')
layout.prop(self, 'property1')
def register():
add_category('Leenkx', icon='ORIENTATION_CURSOR')
LeenkxSendMessageNode.on_register()

View File

@ -9,7 +9,8 @@ class SeedTorrentNode(LnxLogicTreeNode):
lnx_category = 'Leenkx'
lnx_version = 1
def __init__(self):
def __init__(self, *args, **kwargs):
super(SeedTorrentNode, self).__init__(*args, **kwargs)
array_nodes[str(id(self))] = self

View File

@ -57,7 +57,8 @@ class SetElementDataNode(LnxLogicTreeNode):
get=get_enum)
def __init__(self):
def __init__(self, *args, **kwargs):
super(SetElementDataNode, self).__init__(*args, **kwargs)
array_nodes[str(id(self))] = self

View File

@ -9,7 +9,8 @@ class TouchPadNode(LnxLogicTreeNode):
lnx_category = 'Leenkx'
lnx_version = 1
def __init__(self):
def __init__(self, *args, **kwargs):
super(TouchPadNode, self).__init__(*args, **kwargs)
array_nodes[str(id(self))] = self

View File

@ -21,8 +21,8 @@ class DrawCameraNode(LnxLogicTreeNode):
num_choices: IntProperty(default=0, min=0)
def __init__(self):
super(DrawCameraNode, self).__init__()
def __init__(self, *args, **kwargs):
super(DrawCameraNode, self).__init__(*args, **kwargs)
array_nodes[str(id(self))] = self
def lnx_init(self, context):

View File

@ -26,8 +26,8 @@ class DrawPolygonNode(LnxLogicTreeNode):
num_choices: IntProperty(default=1, min=0)
def __init__(self):
super(DrawPolygonNode, self).__init__()
def __init__(self, *args, **kwargs):
super(DrawPolygonNode, self).__init__(*args, **kwargs)
array_nodes[str(id(self))] = self
def lnx_init(self, context):

View File

@ -55,8 +55,8 @@ class OnSwipeNode(LnxLogicTreeNode):
min_outputs = 4
max_outputs = 12
def __init__(self):
super(OnSwipeNode, self).__init__()
def __init__(self, *args, **kwargs):
super(OnSwipeNode, self).__init__(*args, **kwargs)
array_nodes[str(id(self))] = self
def lnx_init(self, context):

View File

@ -7,8 +7,8 @@ class AlternateNode(LnxLogicTreeNode):
lnx_section = 'flow'
lnx_version = 2
def __init__(self):
super(AlternateNode, self).__init__()
def __init__(self, *args, **kwargs):
super(AlternateNode, self).__init__(*args, **kwargs)
array_nodes[str(id(self))] = self
def lnx_init(self, context):

View File

@ -10,8 +10,8 @@ class CallFunctionNode(LnxLogicTreeNode):
lnx_version = 2
min_inputs = 3
def __init__(self):
super(CallFunctionNode, self).__init__()
def __init__(self, *args, **kwargs):
super(CallFunctionNode, self).__init__(*args, **kwargs)
array_nodes[str(id(self))] = self
def lnx_init(self, context):

View File

@ -21,8 +21,8 @@ class CaseIndexNode(LnxLogicTreeNode):
num_choices: IntProperty(default=0, min=0)
def __init__(self):
super().__init__()
def __init__(self, *args, **kwargs):
super(CaseIndexNode, self).__init__(*args, **kwargs)
array_nodes[str(id(self))] = self
def lnx_init(self, context):

View File

@ -11,8 +11,8 @@ class FunctionNode(LnxLogicTreeNode):
lnx_version = 2
min_outputs = 1
def __init__(self):
super(FunctionNode, self).__init__()
def __init__(self, *args, **kwargs):
super(FunctionNode, self).__init__(*args, **kwargs)
array_nodes[str(id(self))] = self
def lnx_init(self, context):

View File

@ -38,8 +38,8 @@ class GateNode(LnxLogicTreeNode):
update=remove_extra_inputs)
property1: HaxeFloatProperty('property1', name='Tolerance', description='Precision for float compare', default=0.0001)
def __init__(self):
super(GateNode, self).__init__()
def __init__(self, *args, **kwargs):
super(GateNode, self).__init__(*args, **kwargs)
array_nodes[str(id(self))] = self
def lnx_init(self, context):

View File

@ -41,8 +41,8 @@ class MergeNode(LnxLogicTreeNode):
update=update_exec_mode,
)
def __init__(self):
super(MergeNode, self).__init__()
def __init__(self, *args, **kwargs):
super(MergeNode, self).__init__(*args, **kwargs)
array_nodes[str(id(self))] = self
def lnx_init(self, context):

View File

@ -8,8 +8,8 @@ class SequenceNode(LnxLogicTreeNode):
lnx_version = 2
min_outputs = 0
def __init__(self):
super(SequenceNode, self).__init__()
def __init__(self, *args, **kwargs):
super(SequenceNode, self).__init__(*args, **kwargs)
array_nodes[self.get_id_str()] = self
def lnx_init(self, context):