annotate flax/Node.py @ 2405:69ca2b2fc133

overcomplicated attempt at persisting the pane layout in the rdf graph this was hard because we have to somehow wait for the graph to load before config'ing the panes
author drewp@bigasterisk.com
date Fri, 17 May 2024 16:58:26 -0700
parents 7ccf1d10804b
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
1 # super rough code
45b12307c695 Initial revision
drewp
parents:
diff changeset
2
45b12307c695 Initial revision
drewp
parents:
diff changeset
3 # The magic value
45b12307c695 Initial revision
drewp
parents:
diff changeset
4 NoChange = "NoChange"
45b12307c695 Initial revision
drewp
parents:
diff changeset
5
45b12307c695 Initial revision
drewp
parents:
diff changeset
6 class NodeType:
45b12307c695 Initial revision
drewp
parents:
diff changeset
7 def __init__(self, iports=None, oports=None):
45b12307c695 Initial revision
drewp
parents:
diff changeset
8 make_attributes_from_args('iports', 'oports')
166
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
9 def process(self,iports,oports):
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
10 pass
45b12307c695 Initial revision
drewp
parents:
diff changeset
11 # TODO: handle NoChange stuff
45b12307c695 Initial revision
drewp
parents:
diff changeset
12
45b12307c695 Initial revision
drewp
parents:
diff changeset
13 class AddNode(NodeType):
45b12307c695 Initial revision
drewp
parents:
diff changeset
14 """Adds two nodes together"""
45b12307c695 Initial revision
drewp
parents:
diff changeset
15 def __init__(self):
45b12307c695 Initial revision
drewp
parents:
diff changeset
16 NodeType.__init__(self, iports={'in1' : Port, 'in2' : Port},
45b12307c695 Initial revision
drewp
parents:
diff changeset
17 oports={'out1' : Port})
45b12307c695 Initial revision
drewp
parents:
diff changeset
18 def process(self, ports):
45b12307c695 Initial revision
drewp
parents:
diff changeset
19 ports.out1 = ports.in1 + ports.in2
45b12307c695 Initial revision
drewp
parents:
diff changeset
20
45b12307c695 Initial revision
drewp
parents:
diff changeset
21 class SumNode(NodeType):
45b12307c695 Initial revision
drewp
parents:
diff changeset
22 """Adds any number of nodes together"""
45b12307c695 Initial revision
drewp
parents:
diff changeset
23 def __init__(self, empty_val=0):
45b12307c695 Initial revision
drewp
parents:
diff changeset
24 NodeType.__init__(self, iports={'in1' : MultiPort},
45b12307c695 Initial revision
drewp
parents:
diff changeset
25 oports={'out1' : Port})
45b12307c695 Initial revision
drewp
parents:
diff changeset
26 self.empty_val = 0
45b12307c695 Initial revision
drewp
parents:
diff changeset
27 def process(self, ports):
45b12307c695 Initial revision
drewp
parents:
diff changeset
28 val = self.empty_val
45b12307c695 Initial revision
drewp
parents:
diff changeset
29 for p in ports.in1:
45b12307c695 Initial revision
drewp
parents:
diff changeset
30 val += p
45b12307c695 Initial revision
drewp
parents:
diff changeset
31
45b12307c695 Initial revision
drewp
parents:
diff changeset
32 ports.out1 = val
45b12307c695 Initial revision
drewp
parents:
diff changeset
33
45b12307c695 Initial revision
drewp
parents:
diff changeset
34 class FadeNode(NodeType):
45b12307c695 Initial revision
drewp
parents:
diff changeset
35 """Provides a UI scaler to let you fade a value"""
45b12307c695 Initial revision
drewp
parents:
diff changeset
36 def __init__(self):
166
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
37 NodeType.__init__(self, iports={'in1' : Port(),
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
38 'scale1' : Port()},
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
39 oports={'out1' : Port()},
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
40 def process(self, iports, oports):
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
41 ports.out1 = ports.in1 * ports.scale1
45b12307c695 Initial revision
drewp
parents:
diff changeset
42
45b12307c695 Initial revision
drewp
parents:
diff changeset
43 class FadeConstellation(Constellation):
45b12307c695 Initial revision
drewp
parents:
diff changeset
44 """This somehow describes the following:
45b12307c695 Initial revision
drewp
parents:
diff changeset
45
45b12307c695 Initial revision
drewp
parents:
diff changeset
46 [ ] [ UI.Scale ]
45b12307c695 Initial revision
drewp
parents:
diff changeset
47 | |
45b12307c695 Initial revision
drewp
parents:
diff changeset
48 | in | scale
45b12307c695 Initial revision
drewp
parents:
diff changeset
49 | ____ /
45b12307c695 Initial revision
drewp
parents:
diff changeset
50 | |
45b12307c695 Initial revision
drewp
parents:
diff changeset
51 [ FadeNode ]
45b12307c695 Initial revision
drewp
parents:
diff changeset
52 |
45b12307c695 Initial revision
drewp
parents:
diff changeset
53 | out
45b12307c695 Initial revision
drewp
parents:
diff changeset
54 |
45b12307c695 Initial revision
drewp
parents:
diff changeset
55 [ ]
45b12307c695 Initial revision
drewp
parents:
diff changeset
56
45b12307c695 Initial revision
drewp
parents:
diff changeset
57 Maybe this is a group (I like this more):
45b12307c695 Initial revision
drewp
parents:
diff changeset
58
45b12307c695 Initial revision
drewp
parents:
diff changeset
59 |
45b12307c695 Initial revision
drewp
parents:
diff changeset
60 | in
45b12307c695 Initial revision
drewp
parents:
diff changeset
61 | FadeGroup
45b12307c695 Initial revision
drewp
parents:
diff changeset
62 - - - - - - - - - - - - -- - -
45b12307c695 Initial revision
drewp
parents:
diff changeset
63 | | |
45b12307c695 Initial revision
drewp
parents:
diff changeset
64 | [ UI.Scale ]
45b12307c695 Initial revision
drewp
parents:
diff changeset
65 | | | |
45b12307c695 Initial revision
drewp
parents:
diff changeset
66 | in | scale
45b12307c695 Initial revision
drewp
parents:
diff changeset
67 | | ____ / |
45b12307c695 Initial revision
drewp
parents:
diff changeset
68 | |
45b12307c695 Initial revision
drewp
parents:
diff changeset
69 | [ FadeNode ] |
45b12307c695 Initial revision
drewp
parents:
diff changeset
70 |
45b12307c695 Initial revision
drewp
parents:
diff changeset
71 | | out |
45b12307c695 Initial revision
drewp
parents:
diff changeset
72 |
45b12307c695 Initial revision
drewp
parents:
diff changeset
73 \ - - - - - - - - - - - -- - - /
45b12307c695 Initial revision
drewp
parents:
diff changeset
74 |
45b12307c695 Initial revision
drewp
parents:
diff changeset
75 | out
45b12307c695 Initial revision
drewp
parents:
diff changeset
76 |
45b12307c695 Initial revision
drewp
parents:
diff changeset
77 """
166
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
78
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
79 Persistence
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
80 node instance saves:
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
81 node name, id, and such
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
82 input ports:
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
83 any port details
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
84 what the port connects to
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
85 values:
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
86 maybe UI.Scale level
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
87 maybe group contents
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
88
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
89
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
90 p=InputPort(node=self,minconns=1,maxconns=2) # an input port to this node
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
91 p.connect(othernode)
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
92 print p.connections()
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
93 p.connect(yetanother)
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
94
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
95 op=OutputPort(node=self) # an output port
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
96 print op.connections() # lists all the nodes that call us an input node
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
97 op.connect(n) # calls n.connect(self)
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
98
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
99
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
100
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
101
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
102 Ports
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
103 Port: "scalar"
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
104 MultiPort: "array of Port"
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
105 ^ all wrong
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
106
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
107 Ports II:
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
108 min/max number of connections
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
109 (failure to fit these numbers means port is "deactivated")
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
110 "Normal" ports are min=1, max=1
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
111 "Multiports" are min=0, max=None
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
112 "Binary" ports are min=2, max=2
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
113 oh yeah, there are two totally different types of ports
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
114
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
115 Input ports: min/max numbers of connections
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
116 store current connections
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
117 Output ports: nothing
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
118 store nothing!
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
119
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
120 fake node persistence for subtract node
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
121
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
122 <!-- "my subtract" is a unique id -->
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
123 <!-- drew: there is no such thing as a subtract group -->
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
124 <node name="my subtract" type="math.Add">
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
125 <inputs>
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
126 <port name="in1">
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
127 <noderef name="node I"/>
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
128 <noderef name="node II"/>
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
129 </port>
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
130 </inputs>
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
131 <state>
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
132 </state>
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
133
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
134 </node>
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
135
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
136
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
137 <node name="the group" type="group">
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
138
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
139 <!-- all of the port names of the group are being made up right
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
140 here- a group has no preset inputs or outputs-->
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
141
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
142 <inputs>
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
143 <port name="group-in 1">
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
144 <noderef name="node5"/>
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
145 <noderef name="node6"/>
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
146 </port>
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
147 </inputs>
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
148
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
149 <state>
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
150 <children>
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
151 <noderef name="node3">
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
152 <connect localPort="in1" groupPort="group-in1"/>
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
153 </noderef>
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
154 <noderef name="node4">
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
155 <connect localPort="in1" groupPort="group-in1"/>
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
156 <connect localPort="out1" groupPort="theoutput"/>
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
157 </noderef>
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
158 </children>
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
159
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
160 </state>
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
161 </node>
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
162
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
163 <node name="preset value" type="source.Scalar">
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
164 <!-- no inputs, node has output only -->
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
165 <state>
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
166 <value>8.3</value>
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
167
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
168 <minvalue>0</minvalue>
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
169 <maxvalue>100</maxvalue>
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
170
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
171 <gui>
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
172 <slider res=".1" height="200" bgcolor="red"/>
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
173 <priority>very high</priority>
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
174 <xpos>395</xpos>
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
175 <ypos>21</ypos>
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
176 </gui>
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
177
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
178 </state>
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
179
7ccf1d10804b lots more notes
drewp
parents: 110
diff changeset
180 </node>