### Home Classes Methods

### In Files

- lib/main-structures.rb

### Parent

Object

### Methods

- ::new
- #load
- #refresh
- #remove_observers
- #save
- #saved
- #set_path
- #set_title

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

# Project

Author | Manuela Ruiz (mruiz@lcc.uma.es)

This class gathers an Execution object and the necessary information in order to save it in a file

### Attributes

execution[RW]

The Execution object

title[R]

The title

saved[W]

True iff the project is saved

path[R]

Path in which the project has been saved

modifying[RW]

true iff the view is been refreshed

erasing[RW]

true iff a rule shape is being deleted

### Public Class Methods

new(execution) click to toggle source

Initializing

          # File lib/main-structures.rb, line 1505
    1505:         def initialize(execution)

    1506:                 @execution = execution

    1507:

    1508:                 @saved = true

    1509:                 @path = nil       #the path in the OS file system

    1510:

    1511:                 @title = Constants::DEFAULT_PROJECT_TITLE

    1512:

    1513:                 @modifying = false

    1514:

    1515:                 @erasing = false

    1516:

    1517:         end

### Public Instance Methods

load(path) click to toggle source

path | path to load the project from

Loads the project from the specified path

          # File lib/main-structures.rb, line 1600
    1600:         def load(path)

    1601:                 @path = path

    1602:                 #the path is a .prj file

    1603:                 #we need the directory

    1604:                 directory = ShadeUtils.get_directory_from_path(path)

    1605:

    1606:                 @execution.constraints = Array.new

    1607:                 @execution.goals = Array.new

    1608:

    1609:

    1610:                 File.open(path.strip, 'r') do |f|

    1611:                         while line = f.gets

    1612:                                 line_a = line.split(':')

    1613:                                 if (line_a[0] == "C") #Load a constraint

    1614:                                         constraint_name = line_a[1].strip

    1615:                                         i = 0

    1616:                                         found = false

    1617:                                         while (i < Shade.constraint_class_names.size) && !found

    1618:                                                 if Shade.constraint_class_names[i][1] == constraint_name

    1619:                                                         found = true

    1620:                                                         constraint_class = Shade.constraint_class_names[i][0]

    1621:                                                         @execution.add_constraint(constraint_class.new)

    1622:                                                 end

    1623:                                                 i += 1

    1624:                                         end

    1625:                                 elsif (line_a[0] == "G") #Load a goal

    1626:                                         goal_name = line_a[1].strip

    1627:                                         i = 0

    1628:                                         found = false

    1629:                                         while (i < Shade.goal_class_names.size) && !found

    1630:                                                 if Shade.goal_class_names[i][1] == goal_name

    1631:                                                         found = true

    1632:                                                         goal_class = Shade.goal_class_names[i][0]

    1633:                                                         @execution.add_goal(goal_class.new)

    1634:                                                 end

    1635:                                                 i += 1

    1636:                                         end

    1637:                                 else

    1638:                                         grammar_title = line.strip

    1639:                                         @execution.grammar.load("#{directory}#{grammar_title}")

    1640:                                 end

    1641:                         end

    1642:                 end

    1643:

    1644:

    1645:         end

refresh(force = false) click to toggle source

force | true if we want to force refreshing, even when no changes have been registered

Refreshes the view of the shapes in the project (that is, the rule shapes and the current shape)

          # File lib/main-structures.rb, line 1650
    1650:         def refresh(force = false)

    1651:                 if Shade.using_sketchup

    1652:                         @modifying = true

    1653:                         if @execution

    1654:                                 @execution.current_shape.refresh(@execution.show_labels)

    1655:                                 if @execution.grammar

    1656:                                         @execution.grammar.rules.each {|rule|

    1657:                                                 rule.alpha.refresh(force)

    1658:                                                 rule.beta.refresh(force)

    1659:                                         }

    1660:                                 end

    1661:                         end

    1662:                         @modifying = false

    1663:                 end

    1664:         end

remove_observers() click to toggle source

Removes all the attached observers

          # File lib/main-structures.rb, line 1549
    1549:         def remove_observers()

    1550:                 if Shade.using_sketchup

    1551:                         size = execution.grammar.rules.size

    1552:                         i = 0

    1553:                         while i < size

    1554:                                 execution.grammar.remove_rule(size-i-1)

    1555:                                 i += 1

    1556:                         end

    1557:

    1558:                         Sketchup.active_model.entities.remove_observer Shade.rule_groups_observer

    1559:                         Shade.rule_groups_observer = nil

    1560:                         GC.start

    1561:                 end

    1562:         end

save(path = @path, text = false) click to toggle source

path | path to save the project in

Saves the project in the specified path

          # File lib/main-structures.rb, line 1522
    1522:         def save(path = @path, text = false)

    1523:                 #the path is a .prj file

    1524:                 #we need the directory

    1525:                 directory = ShadeUtils.get_directory_from_path(path)

    1526:                 title = ShadeUtils.get_title_from_path(path)

    1527:                 File.open(path.strip, 'w') do |f|

    1528:                         f.write("#{title}Grammar.gr2\n")

    1529:                         @execution.constraints.each { |c|

    1530:                                 f.write "C:"

    1531:                                 f.write c.name + "\n"

    1532:                         }

    1533:                         @execution.goals.each { |g|

    1534:                                 f.write "G:"

    1535:                                 f.write g.name + "\n"

    1536:                         }

    1537:                 end

    1538:                 @path = path

    1539:                 @execution.grammar.save("#{directory}#{title}Grammar.gr2", text)

    1540:                 @saved = true

    1541:         end

saved() click to toggle source

Returns true if both the project and its related grammar are saved

          # File lib/main-structures.rb, line 1544
    1544:         def saved()

    1545:                 return (@execution.grammar.saved and @saved)

    1546:         end

set_path(path, closing = false) click to toggle source

path | new path
closing | true iff we are closing SU

Sets the path

          # File lib/main-structures.rb, line 1586
    1586:         def set_path(path, closing = false)

    1587:                 #Set the path attribute

    1588:                 @path = path

    1589:

    1590:                 if path

    1591:                         set_title(ShadeUtils.get_title_from_path(path), closing)

    1592:                 else

    1593:                         set_title(Constants::DEFAULT_PROJECT_TITLE, closing)

    1594:                 end

    1595:         end

set_title(new_title, closing = false) click to toggle source

new_title | String with the new title for the project
closing | true iff SketchUp is being closed

Changes the title of the project to new_title

          # File lib/main-structures.rb, line 1568
    1568:         def set_title(new_title, closing = false)

    1569:                 @title = title

    1570:                 if Shade.using_sketchup

    1571:                         if !closing

    1572:                                 if @title_text

    1573:                                         Sketchup.active_model.entities.erase_entities @title_text

    1574:                                 end

    1575:                                 if Shade.show_text

    1576:                                         @title_text = Sketchup.active_model.entities.add_text("Project: " + @title, Constants::PT_PROJECT_TEXT)

    1577:                                 end

    1578:                         end

    1579:                 end

    1580:         end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.