### Home Classes Methods

### In Files

- lib/layers.rb

### Parent

Sketchup::LayersObserver

### Methods

- #onCurrentLayerChanged
- #onLayerRemoved

### Files

- LessThan5BlueLabels.txt
- AtLeast2LargeSegments.txt

### Class Index

Quicksearch

- AddLabelTool
- AllRulesAppliedGoal
- Area
- AreaConstraint
- Array
- BalancedBinaryTree
- BalancedBinaryTreeNode
- CloseObserver
- Constants
- Constraint
- CurrentLabelledShape
- DistinctShapeConstraint
- Execution
- Goal
- Grammar
- Label
- LabelledShape
- LineDescriptor
- LinearLinkedList
- LinearLinkedListNode
- NoLabelsGoal
- NoMoreRulesGoal
- NoScalesConstraint
- Numeric
- Object
- OrderedPoint
- PiList
- Point
- Project
- Robot
- Rule
- RuleGroupsObserver
- RuleLabelledShape
- RuleShapeObserver
- Segment
- ShaDeLayersObserver
- Shade
- ShadeUtils
- UndoObserver

No matching classes.

# 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.