In Files

Parent

ShaDeLayersObserver

Author

Manuela Ruiz (mruiz@lcc.uma.es)

This class represents the observer for the layers

Public Instance Methods

onCurrentLayerChanged(layers, layer) click to toggle source

Method that triggers when the current active layer is changed

     # File lib/layers.rb, line 12
 12:         def onCurrentLayerChanged(layers, layer)

 13:                 #If layer does not exist...

 14:                 if !Shade.project.execution.current_shape.p[layer.name]

 15: 

 16:                         Shade.project.modifying = true

 17: 

 18:                         # Draw vertical line

 19:                         point1 = Constants::PTS_V[0].clone

 20:                         point2 = Constants::PTS_V[1].clone

 21:                         group = Sketchup.active_model.entities.add_group

 22:                         group.entities.add_line point1,point2

 23:                         group.layer = layer

 24:                         

 25:                         #Update the rules

 26:                         Shade.project.execution.grammar.rules.each_with_index { |rule, i|

 27:                                 

 28:                                 #Choose first non-empty layer

 29:                                 found = false

 30:                                 j = 0

 31:                                 n_layers = Sketchup.active_model.layers.length

 32:                                 layer_name = "Layer0"

 33:                                 

 34:                                 #The content of the new layer is the same that is inside the first non-empty layer in the left shape of the rule

 35:                                 while (!found and (j < n_layers))

 36:                                         layer_name = Sketchup.active_model.layers[j].name

 37:                                         

 38:                                         if rule.alpha.p[layer_name]

 39:                                                 found = (rule.alpha.p[layer_name].size > 0)

 40:                                         end

 41:                                         

 42:                                         j += 1

 43:                                 end

 44:                                 

 45:                                 if !(rule.left.s[layer.name])

 46:                                         rule.left.s[layer.name] = rule.left.s[layer_name].clone

 47:                                         rule.left.p[layer.name] = rule.left.p[layer_name].clone

 48:                                         rule.left.paint()

 49:                                 end

 50:                                 

 51:                                 if !(rule.right.s[layer.name])

 52:                                         rule.right.s[layer.name] = rule.right.s[layer_name].clone

 53:                                         rule.right.p[layer.name] = rule.right.p[layer_name].clone

 54:                                         rule.right.paint()

 55:                                 end

 56: 

 57:                                 #Paint the rule layout (arrow, crosses and horizontal line)

 58:                                 ShadeUtils.paint_rule_layout(i, layer.name)

 59:                         }

 60:                         

 61:                         #Update the current shape

 62:                         #Choose first non-empty layer

 63:                         found = false

 64:                         j = 0

 65:                         n_layers = Sketchup.active_model.layers.length

 66:                         layer_name = "Layer0"

 67:                         #The content of the new layer is the same that is inside the first non-empty layer in the current_shape

 68:                         while (!found and (j < n_layers))

 69:                                 layer_name = Sketchup.active_model.layers[j].name

 70:                                 

 71:                                 if Shade.project.execution.current_shape.p[layer_name]

 72:                                         found = (Shade.project.execution.current_shape.p[layer_name].size > 0)

 73:                                 end

 74:                                 

 75:                                 j += 1

 76:                         end

 77: 

 78:                         Shade.project.execution.current_shape.s[layer.name] = Shade.project.execution.current_shape.s[layer_name].clone

 79:                         Shade.project.execution.current_shape.p[layer.name] = Shade.project.execution.current_shape.p[layer_name].clone

 80:                         Shade.project.execution.current_shape.create_pi

 81: 

 82:                         Shade.project.execution.current_shape.paint(Shade.project.execution.show_labels, layer)

 83:                         

 84:                         #Update the axiom

 85:                         #Choose first non-empty layer

 86:                         found = false

 87:                         j = 0

 88:                         n_layers = Sketchup.active_model.layers.length

 89:                         layer_name = "Layer0"

 90:                         #The content of the new layer is the same that is inside the first non-empty layer in the current_shape

 91:                         while (!found and (j < n_layers))

 92:                                 layer_name = Sketchup.active_model.layers[j].name

 93:                                 

 94:                                 if Shade.project.execution.grammar.axiom.p[layer_name]

 95:                                         if Shade.project.execution.grammar.axiom.p[layer_name]

 96:                                                 found = (Shade.project.execution.grammar.axiom.p[layer_name].size > 0)

 97:                                         end

 98:                                 end

 99:                                 

100:                                 j += 1

101:                         end

102:                         

103:                         Shade.project.execution.grammar.axiom.s[layer.name] = Shade.project.execution.grammar.axiom.s[layer_name].clone

104:                         Shade.project.execution.grammar.axiom.p[layer.name] = Shade.project.execution.grammar.axiom.p[layer_name].clone

105:                         

106:                         Shade.project.execution.grammar.saved = false

107:                         

108:                         Shade.project.modifying = false

109:                 else

110:                         #Update the rules

111:                         Shade.project.execution.grammar.rules.each_with_index { |rule, i|

112:                                 rule.left.paint()

113:                                 rule.right.paint()

114:                                 #Paint the rule layout (arrow, crosses and horizontal line)

115:                                 ShadeUtils.paint_rule_layout(i, layer.name)

116:                         }

117:                         

118:                         #Update the current shape

119:                         Shade.project.execution.current_shape.paint(Shade.project.execution.show_labels)

120:                 end

121:                 

122:                 

123:         end
onLayerRemoved(layers, layer) click to toggle source

Method that triggers then a layer is removed

     # File lib/layers.rb, line 126
126:         def onLayerRemoved(layers, layer)

127:                 Shade.project.execution.grammar.rules.each { |rule|

128:                         rule.left.s.delete layer.name

129:                         rule.left.p.delete layer.name

130:                         rule.left.shape_transformation.delete layer.name

131:                         

132:                         rule.right.s.delete layer.name

133:                         rule.right.p.delete layer.name

134:                         rule.left.shape_transformation.delete layer.name

135:                 }

136:                 Shade.project.execution.current_shape.s.delete layer.name

137:                 Shade.project.execution.current_shape.p.delete layer.name

138:                 

139:                 Shade.project.execution.grammar.saved = false

140:         end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.