Class: TECSCDE::TECSModel::TmPortArray
Instance Attribute Summary collapse
#owner
Instance Method Summary
collapse
#copy_from, #model, #modified
Instance Attribute Details
#actual_size ⇒ Object
@ports:: @port_def::Port @actual_size::Integer @subscript1::subscript value of 1st element. to check consistency of subscript
60
61
62
|
# File 'lib/tecscde/tecs_model/tm_port_array.rb', line 60
def actual_size
@actual_size
end
|
@ports:: @port_def::Port @actual_size::Integer @subscript1::subscript value of 1st element. to check consistency of subscript
60
61
62
|
# File 'lib/tecscde/tecs_model/tm_port_array.rb', line 60
def ports
@ports
end
|
Instance Method Details
#array? ⇒ Boolean
132
133
134
|
# File 'lib/tecscde/tecs_model/tm_port_array.rb', line 132
def array?
true
end
|
#clone_for_undo ⇒ Object
TmPortArray#clone_for_undo
235
236
237
238
239
|
# File 'lib/tecscde/tecs_model/tm_port_array.rb', line 235
def clone_for_undo
bu = clone
bu.copy_from(self)
bu
end
|
#complete? ⇒ Boolean
220
221
222
|
# File 'lib/tecscde/tecs_model/tm_port_array.rb', line 220
def complete?
@ports.all?(&:complete?)
end
|
TmPortArray#delete
this method is called from TmCell
158
159
160
|
# File 'lib/tecscde/tecs_model/tm_port_array.rb', line 158
def delete
@ports.each(&:delete)
end
|
#delete_highlighted(port) ⇒ Object
TmPortArray#delete_highlighted
this method is called from Control
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
|
# File 'lib/tecscde/tecs_model/tm_port_array.rb', line 164
def delete_highlighted(port)
if @port_def.get_array_size != "[]"
TECSCDE.message_box(" Array size is fixed (\#{@port_def.get_array_size}).\n Cannot delete array member.\n MESSAGE\n return\n end\n index = @ports.index(port)\n if index != 0\n modified do\n TECSCDE.logger.info(\"delete #### subscript=\#{port.get_subscript}\")\n port.delete\n if @ports.delete(port).nil?\n TECSCDE.logger.info(\"delete: not found\")\n end\n index = 0\n @ports.each do |pt|\n pt.set_subscript(index)\n index += 1\n end\n end\n else\n TECSCDE.message_box(<<~MESSAGE, :OK)\n cannot delete array member with subscript==0\n MESSAGE\n end\nend\n", :OK)
|
#editable? ⇒ Boolean
225
226
227
|
# File 'lib/tecscde/tecs_model/tm_port_array.rb', line 225
def editable?
@owner.editable?
end
|
#get_member(subscript) ⇒ Object
148
149
150
151
152
153
154
|
# File 'lib/tecscde/tecs_model/tm_port_array.rb', line 148
def get_member(subscript)
if subscript < 0 || subscript >= @actual_size
nil
else
@ports[subscript]
end
end
|
#get_near_port(x, y) ⇒ Object
TmPortArray#get_near_port
119
120
121
122
123
124
125
126
127
128
129
|
# File 'lib/tecscde/tecs_model/tm_port_array.rb', line 119
def get_near_port(x, y)
@ports.each do |port|
xp, yp = port.get_position
if ((xp - x).abs < NEAR_DIST) && ((yp - y).abs < NEAR_DIST)
return port
end
end
nil
end
|
#get_port_for_new_join(subscript) ⇒ Object
TmPortArray#get_port_for_new_join this method is for load
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
# File 'lib/tecscde/tecs_model/tm_port_array.rb', line 64
def get_port_for_new_join(subscript)
if @subscript1.nil?
@subscript1 = subscript
elsif (@subscript1 >= 0 && subscript < 0) || (@subscript1 < 0 && subscript >= 0)
TECSCDE.logger.error("TM9999 array subscript inconsistent (similar error to S1128)")
return nil
end
modified do
if subscript >= 0
if subscript >= @actual_size
unless @port_def.get_array_size == "[]"
TECSCDE.logger.error("#{@owner.get_name}.#{@port_def.get_name}[#{subscript}]: subscript=#{subscript} out of range(0..(#{@actual_size - 1})")
return nil
end
(0..subscript).each do |subsc|
next if @ports[subsc]
port = new_port(subsc)
@ports[subsc] = port
end
@actual_size = @ports.length
return @ports[subscript]
else
port = @ports[subscript]
return port unless instance_of?(TECSCDE::TECSModel::TmCPortArray)
if port.get_join
TECSCDE.logger.error("#{@owner.get_name}.#{@port_def.get_name}[#{subscript}]: duplicate join")
return nil
end
end
else
found_port = @ports.find do |pt|
pt.get_join.nil?
end
return found_port if found_port
if @port_def.get_array_size == "[]"
port = new_port(@ports.length)
@ports << port
@actual_size = @ports.length
return port
end
end
return nil
end
end
|
#insert(port, before_after) ⇒ Object
TmPortArray#insert
this method is called from Control
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
|
# File 'lib/tecscde/tecs_model/tm_port_array.rb', line 195
def insert(port, before_after)
if @port_def.get_array_size != "[]"
TECSCDE.message_box(" Array size is fixed (\#{@port_def.get_array_size}).\n Cannot insert array member.\n MESSAGE\n return\n end\n modified do\n @owner.adjust_port_position_to_insert(port)\n subsc = port.get_subscript\n i = @ports.length - 1\n while i > subsc\n @ports[i].set_subscript(@ports[i].get_subscript + 1)\n @ports[i + 1] = @ports[i]\n i -= 1\n end\n new_port = new_port(subsc + 1)\n new_port.set_position(port.get_edge_side, port.offset + DIST_PORT)\n @ports[subsc + 1] = new_port\n\n TECSCDE.logger.info(\"insert ####\")\n end\nend\n", :OK)
|
#moved(x_inc, y_inc) ⇒ Object
142
143
144
145
146
|
# File 'lib/tecscde/tecs_model/tm_port_array.rb', line 142
def moved(x_inc, y_inc)
@ports.each do |port|
port.moved(x_inc, y_inc)
end
end
|
#moved_edge(x_inc_l, x_inc_r, y_inc_t, y_inc_b) ⇒ Object
136
137
138
139
140
|
# File 'lib/tecscde/tecs_model/tm_port_array.rb', line 136
def moved_edge(x_inc_l, x_inc_r, y_inc_t, y_inc_b)
@ports.each do |port|
port.moved_edge(x_inc_l, x_inc_r, y_inc_t, y_inc_b)
end
end
|
#setup_clone(ports) ⇒ Object
241
242
243
|
# File 'lib/tecscde/tecs_model/tm_port_array.rb', line 241
def setup_clone(ports)
@ports = ports.dup
end
|
#unsubscripted_array? ⇒ Boolean
TmPortArray#unsubscripted_array?
230
231
232
|
# File 'lib/tecscde/tecs_model/tm_port_array.rb', line 230
def unsubscripted_array?
@port_def.get_array_size == "[]"
end
|