Mercurial > projects > doodle
view doodle/import/p_model.d @ 29:960b408d3ac5
Builds and runs ok with builder now.
Still heaps of cleaning up to do, especially code roughly
imported from dog.
author | Graham St Jack <graham.stjack@internode.on.net> |
---|---|
date | Mon, 03 Aug 2009 23:19:55 +0930 |
parents | doodle/import/p-model.d@1754cb773d41 |
children |
line wrap: on
line source
//module doodle.dog.presentation.model; version(none) { import doodle.presentation.types; import util.list; class Property { this(char[] key, char[] value) { _key = key; _value = value; } char[] key() { return _key; } char[] value() { return _value; } private { char[] _key; char[] _value; } } interface IVisitor { void visit(GraphEdge); void visit(GraphNode); } class Diagram { } abstract class DiagramElement { this() { _is_visible = true; } abstract void accept(in IVisitor visitor); bool is_visible() { return _is_visible; } void add_property(Property property) { // TODO _properties.addTail(property); } private { List!(Property) _properties; bool _is_visible; GraphElement _container; } } abstract class SemanticModelBridge { this(char[] presentation) { _presentation = presentation; } char[] presentation() { return _presentation; } private { char[] _presentation; } } class SimpleSemanticModelElement : SemanticModelBridge { this(char[] type_info, char[] presentation) { super(presentation); _type_info = type_info; } char[] type_info() { return _type_info; } private { char[] _type_info; } } abstract class GraphElement : DiagramElement { this() { } void add_anchorage(GraphConnector anchorage) { // TODO } void remove_anchorage(GraphConnector anchorage) { } private { SemanticModelBridge _semantic_model; Point _position; List!(GraphConnector) _anchorages; List!(DiagramElement) _containeds; } } class GraphConnector { this(Point point) { _point = point; } private { Point _point; GraphElement _element; GraphEdge[] _edges; } } class GraphEdge : GraphElement { this() { } void accept(IVisitor visitor) { visitor.visit(this); } private { } } class GraphNode : GraphElement { this() { } void accept(IVisitor visitor) { visitor.visit(this); } private { } } }