mi-flatland 2.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- flatland/__init__.py +1 -0
- flatland/__main__.py +162 -0
- flatland/configuration/__init__.py +0 -0
- flatland/configuration/configDB.py +51 -0
- flatland/configuration/connector_type.yaml +65 -0
- flatland/configuration/diagram_type.yaml +223 -0
- flatland/configuration/frame.yaml +102 -0
- flatland/configuration/layout_specification.yaml +42 -0
- flatland/configuration/metadata.yaml +20 -0
- flatland/configuration/name_placement.yaml +83 -0
- flatland/configuration/notation.yaml +99 -0
- flatland/configuration/sheet.yaml +22 -0
- flatland/configuration/titleblock.yaml +50 -0
- flatland/connector_subsystem/__init__.py +0 -0
- flatland/connector_subsystem/anchored_leaf_stem.py +19 -0
- flatland/connector_subsystem/anchored_stem.py +92 -0
- flatland/connector_subsystem/anchored_tree_stem.py +28 -0
- flatland/connector_subsystem/bending_binary_connector.py +188 -0
- flatland/connector_subsystem/binary_connector.py +32 -0
- flatland/connector_subsystem/branch.py +76 -0
- flatland/connector_subsystem/connector.py +131 -0
- flatland/connector_subsystem/floating_binary_stem.py +60 -0
- flatland/connector_subsystem/floating_leaf_stem.py +24 -0
- flatland/connector_subsystem/floating_stem.py +30 -0
- flatland/connector_subsystem/grafted_branch.py +112 -0
- flatland/connector_subsystem/interpolated_branch.py +65 -0
- flatland/connector_subsystem/rut_branch.py +35 -0
- flatland/connector_subsystem/stem.py +263 -0
- flatland/connector_subsystem/straight_binary_connector.py +183 -0
- flatland/connector_subsystem/ternary_stem.py +71 -0
- flatland/connector_subsystem/tree_connector.py +249 -0
- flatland/connector_subsystem/trunk_stem.py +38 -0
- flatland/connector_subsystem/unary_connector.py +87 -0
- flatland/database/__init__.py +0 -0
- flatland/database/flatland_db.py +100 -0
- flatland/database/instances/__init__.py +0 -0
- flatland/database/instances/connector_subsystem.py +73 -0
- flatland/database/instances/node_subsystem.py +50 -0
- flatland/database/instances/sheet_subsystem.py +103 -0
- flatland/database/pop_connector_subsys.py +234 -0
- flatland/database/pop_layout_spec.py +37 -0
- flatland/database/pop_node_subsys.py +95 -0
- flatland/database/pop_sheet_subsys.py +307 -0
- flatland/database/relvars.py +455 -0
- flatland/datatypes/__init__.py +0 -0
- flatland/datatypes/command_interface.py +69 -0
- flatland/datatypes/connection_types.py +138 -0
- flatland/datatypes/general_types.py +16 -0
- flatland/datatypes/geometry_types.py +34 -0
- flatland/exceptions.py +309 -0
- flatland/geometry_domain/__init__.py +0 -0
- flatland/geometry_domain/linear_geometry.py +139 -0
- flatland/log.conf +42 -0
- flatland/makeframe.py +35 -0
- flatland/names.py +3 -0
- flatland/node_subsystem/__init__.py +0 -0
- flatland/node_subsystem/canvas.py +193 -0
- flatland/node_subsystem/compartment.py +118 -0
- flatland/node_subsystem/diagram.py +81 -0
- flatland/node_subsystem/grid.py +434 -0
- flatland/node_subsystem/node.py +146 -0
- flatland/node_subsystem/single_cell_node.py +71 -0
- flatland/node_subsystem/spanning_node.py +79 -0
- flatland/sheet_subsystem/__init__.py +0 -0
- flatland/sheet_subsystem/frame.py +197 -0
- flatland/sheet_subsystem/sheet.py +65 -0
- flatland/sheet_subsystem/titleblock_placement.py +45 -0
- flatland/text/__init__.py +0 -0
- flatland/text/text_block.py +72 -0
- flatland/xuml/__init__.py +0 -0
- flatland/xuml/xuml_classdiagram.py +530 -0
- flatland/xuml/xuml_statemachine_diagram.py +327 -0
- mi_flatland-2.0.0.dist-info/METADATA +84 -0
- mi_flatland-2.0.0.dist-info/RECORD +77 -0
- mi_flatland-2.0.0.dist-info/WHEEL +5 -0
- mi_flatland-2.0.0.dist-info/entry_points.txt +2 -0
- mi_flatland-2.0.0.dist-info/top_level.txt +1 -0
flatland/__init__.py
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
version = "2.0.0"
|
flatland/__main__.py
ADDED
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Flatland Diagram Editor
|
|
3
|
+
|
|
4
|
+
"""
|
|
5
|
+
# System
|
|
6
|
+
import logging
|
|
7
|
+
import logging.config
|
|
8
|
+
import sys
|
|
9
|
+
import atexit
|
|
10
|
+
import argparse
|
|
11
|
+
from pathlib import Path
|
|
12
|
+
|
|
13
|
+
# Flatland
|
|
14
|
+
from flatland.xuml.xuml_classdiagram import XumlClassDiagram
|
|
15
|
+
from flatland.xuml.xuml_statemachine_diagram import XumlStateMachineDiagram
|
|
16
|
+
from flatland.database.flatland_db import FlatlandDB
|
|
17
|
+
from flatland import version
|
|
18
|
+
|
|
19
|
+
_logpath = Path("flatland.log")
|
|
20
|
+
|
|
21
|
+
def clean_up():
|
|
22
|
+
"""Normal and exception exit activities"""
|
|
23
|
+
_logpath.unlink(missing_ok=True)
|
|
24
|
+
|
|
25
|
+
def get_logger():
|
|
26
|
+
"""Initiate the logger"""
|
|
27
|
+
log_conf_path = Path(__file__).parent / 'log.conf' # Logging configuration is in this file
|
|
28
|
+
logging.config.fileConfig(fname=log_conf_path, disable_existing_loggers=False)
|
|
29
|
+
return logging.getLogger(__name__) # Create a logger for this module
|
|
30
|
+
|
|
31
|
+
# Configure the expected parameters and actions for the argparse module
|
|
32
|
+
def parse(cl_input):
|
|
33
|
+
parser = argparse.ArgumentParser(description='Flatland model diagram generator')
|
|
34
|
+
parser.add_argument('-m', '--model', action='store',
|
|
35
|
+
help='xuml model file name defining model connectivity without any layout information')
|
|
36
|
+
parser.add_argument('-l', '--layout', action='store',
|
|
37
|
+
help='Flatland layout file defining all layout information with light\
|
|
38
|
+
references to model file.')
|
|
39
|
+
parser.add_argument('-d', '--diagram', action='store', default='diagram.pdf',
|
|
40
|
+
help='Name of file to generate, .pdf extension automatically added')
|
|
41
|
+
parser.add_argument('-D', '--docs', action='store_true',
|
|
42
|
+
help='Copy the project documentation directory into the local directory')
|
|
43
|
+
parser.add_argument('-CF', '--configuration', action='store_true',
|
|
44
|
+
help="Create a new configuration directory in user's flatland home")
|
|
45
|
+
parser.add_argument('-E', '--examples', action='store_true',
|
|
46
|
+
help='Create a directory of examples in the current directory')
|
|
47
|
+
parser.add_argument('-L', '--log', action='store_true',
|
|
48
|
+
help='Generate a diagnostic flatland.log file')
|
|
49
|
+
parser.add_argument('-N', '--nodes_only', action='store_true',
|
|
50
|
+
help='Do not draw any connectors. Helpful to diagnose connector failures due\
|
|
51
|
+
to bad node cplace.')
|
|
52
|
+
parser.add_argument('-NC', '--no_color', action='store_true',
|
|
53
|
+
help='Use white instead of the specified sheet color. Useful when creating printer output.'),
|
|
54
|
+
parser.add_argument('-V', '--version', action='store_true',
|
|
55
|
+
help='Print the current version of flatland')
|
|
56
|
+
parser.add_argument('-G', '--grid', action='store_true',
|
|
57
|
+
help='Print the grid so you can diagnose output with row and column boundaries visible')
|
|
58
|
+
parser.add_argument('-RT', '--show_ref_types', action='store_true',
|
|
59
|
+
help='Display referential attribute types on class diagrams')
|
|
60
|
+
parser.add_argument('-RUL', '--rulers', action='store_true',
|
|
61
|
+
help='Print the ruler grid so you check canvas positions')
|
|
62
|
+
parser.add_argument('-R', '--rebuild', action='store_true',
|
|
63
|
+
help='Rebuild the flatland database. Necessary only if corrupted.')
|
|
64
|
+
return parser.parse_args(cl_input)
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
def main():
|
|
68
|
+
# Start logging
|
|
69
|
+
logger = get_logger()
|
|
70
|
+
logger.info(f'Flatland version: {version}')
|
|
71
|
+
|
|
72
|
+
# Keep track of whether or not Config has been run by some command line option so we don't re-run it
|
|
73
|
+
already_configured = False
|
|
74
|
+
|
|
75
|
+
# Parse the command line args
|
|
76
|
+
args = parse(sys.argv[1:])
|
|
77
|
+
|
|
78
|
+
if not args.log:
|
|
79
|
+
# If no log file is requested, remove the log file before termination
|
|
80
|
+
atexit.register(clean_up)
|
|
81
|
+
|
|
82
|
+
if args.version:
|
|
83
|
+
# Just print the version and quit
|
|
84
|
+
print(f'Flatland version: {version}')
|
|
85
|
+
sys.exit(0)
|
|
86
|
+
|
|
87
|
+
# if args.examples:
|
|
88
|
+
# # Copy the entire example directory into the users local dir if it does not already exist
|
|
89
|
+
# import shutil
|
|
90
|
+
# ex_path = Path(__file__).parent / 'examples'
|
|
91
|
+
# local_ex_path = Path.cwd() / 'examples'
|
|
92
|
+
# if local_ex_path.exists():
|
|
93
|
+
# logger.warning("Examples already exist in the current directory. Delete or move it if you want the latest.")
|
|
94
|
+
# else:
|
|
95
|
+
# logger.info("Copying example directory users local directory")
|
|
96
|
+
# shutil.copytree(ex_path, local_ex_path) # Copy the example directory
|
|
97
|
+
# test_gen_path = Path(__file__).parent / 'tests' / 'gen_example_diagrams.py'
|
|
98
|
+
# shutil.copy(test_gen_path, local_ex_path) # Copy the gen_example file into the copied example dir
|
|
99
|
+
#
|
|
100
|
+
# if args.docs:
|
|
101
|
+
# # Copy the entire docs directory into the users local dir if it does not already exist
|
|
102
|
+
# import shutil
|
|
103
|
+
# docs_path = Path(__file__).parent / 'documentation'
|
|
104
|
+
# local_docs_path = Path.cwd() / 'documentation'
|
|
105
|
+
# if local_docs_path.exists():
|
|
106
|
+
# logger.warning("Documentation already exists in the current directory.\
|
|
107
|
+
# Delete or move it if you want the latest.")
|
|
108
|
+
# else:
|
|
109
|
+
# logger.info("Copying doc directory to users local directory")
|
|
110
|
+
# shutil.copytree(docs_path, local_docs_path)
|
|
111
|
+
#
|
|
112
|
+
if args.model and not args.layout:
|
|
113
|
+
logger.error("A layout file must be specified for your model.")
|
|
114
|
+
sys.exit(1)
|
|
115
|
+
|
|
116
|
+
if args.layout and not args.model:
|
|
117
|
+
logger.error("A model file must be specified to layout.")
|
|
118
|
+
sys.exit(1)
|
|
119
|
+
|
|
120
|
+
# At this point we either have both model and layout or neither
|
|
121
|
+
# If neither, the only thing we might do at this point is rebuild the database if requested
|
|
122
|
+
|
|
123
|
+
# Do any configuration tasks necessary before starting up the app
|
|
124
|
+
# The database will be rebuilt if requested
|
|
125
|
+
if not already_configured:
|
|
126
|
+
FlatlandDB.create_db(rebuild=args.rebuild)
|
|
127
|
+
|
|
128
|
+
# if args.model and args.layout: # Just making sure we have them both
|
|
129
|
+
model_path = Path(args.model)
|
|
130
|
+
layout_path = Path(args.layout)
|
|
131
|
+
diagram_path = Path(args.diagram)
|
|
132
|
+
|
|
133
|
+
# Generate the xuml class diagram (we don't do anything with the returned variable yet)
|
|
134
|
+
mtype = model_path.suffix
|
|
135
|
+
if mtype == '.xcm':
|
|
136
|
+
XumlClassDiagram(
|
|
137
|
+
xuml_model_path=model_path,
|
|
138
|
+
flatland_layout_path=layout_path,
|
|
139
|
+
diagram_file_path=diagram_path,
|
|
140
|
+
show_grid=args.grid,
|
|
141
|
+
nodes_only=args.nodes_only,
|
|
142
|
+
no_color=args.no_color,
|
|
143
|
+
show_rulers=args.rulers,
|
|
144
|
+
show_ref_types=args.show_ref_types
|
|
145
|
+
)
|
|
146
|
+
elif mtype == '.xsm':
|
|
147
|
+
statemodel_diagram = XumlStateMachineDiagram(
|
|
148
|
+
xuml_model_path=model_path,
|
|
149
|
+
flatland_layout_path=layout_path,
|
|
150
|
+
diagram_file_path=diagram_path,
|
|
151
|
+
show_grid=args.grid,
|
|
152
|
+
nodes_only=args.nodes_only,
|
|
153
|
+
show_rulers=args.rulers,
|
|
154
|
+
no_color=args.no_color,
|
|
155
|
+
)
|
|
156
|
+
|
|
157
|
+
logger.info("No problemo") # We didn't die on an exception, basically
|
|
158
|
+
print("No problemo")
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
if __name__ == "__main__":
|
|
162
|
+
main()
|
|
File without changes
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
""" configDB.py - Load configuration data """
|
|
2
|
+
|
|
3
|
+
# System
|
|
4
|
+
from pathlib import Path
|
|
5
|
+
from collections import namedtuple
|
|
6
|
+
from typing import NamedTuple
|
|
7
|
+
|
|
8
|
+
# Model Integration
|
|
9
|
+
from mi_config.config import Config
|
|
10
|
+
|
|
11
|
+
# Flatland
|
|
12
|
+
from flatland.names import app
|
|
13
|
+
|
|
14
|
+
ConfigItem = namedtuple('ConfigItem', 'name collector')
|
|
15
|
+
|
|
16
|
+
class SheetData(NamedTuple):
|
|
17
|
+
standard: str
|
|
18
|
+
height: float
|
|
19
|
+
width: float
|
|
20
|
+
size_group: str
|
|
21
|
+
|
|
22
|
+
class ConfigDB:
|
|
23
|
+
"""
|
|
24
|
+
A set of yaml config files are processed to build a dictionary of
|
|
25
|
+
config item data
|
|
26
|
+
"""
|
|
27
|
+
|
|
28
|
+
config_path = Path(__file__).parent # Location of the system yaml files
|
|
29
|
+
|
|
30
|
+
item_data = {}
|
|
31
|
+
|
|
32
|
+
config_items = [ # Yaml file prefix and tuple, if any, to load data from file
|
|
33
|
+
ConfigItem(name="metadata", collector=None),
|
|
34
|
+
ConfigItem(name="sheet", collector=SheetData),
|
|
35
|
+
ConfigItem(name="titleblock", collector=None),
|
|
36
|
+
ConfigItem(name="frame", collector=None),
|
|
37
|
+
ConfigItem(name="notation", collector=None),
|
|
38
|
+
ConfigItem(name="layout_specification", collector=None),
|
|
39
|
+
ConfigItem(name="diagram_type", collector=None),
|
|
40
|
+
ConfigItem(name="connector_type", collector=None),
|
|
41
|
+
ConfigItem(name="name_placement", collector=None),
|
|
42
|
+
]
|
|
43
|
+
|
|
44
|
+
@classmethod
|
|
45
|
+
def __init__(cls):
|
|
46
|
+
"""
|
|
47
|
+
Load all config items in corresponding yaml files into item_data dictionary
|
|
48
|
+
"""
|
|
49
|
+
for item in cls.config_items:
|
|
50
|
+
c = Config(app_name=app, lib_config_dir=cls.config_path, fspec={item.name:item.collector})
|
|
51
|
+
cls.item_data[item.name] = c.loaded_data[item.name]
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# cconnector_type_name.yaml – Connector type data
|
|
2
|
+
|
|
3
|
+
# Diagram type / Connector Type / Stem Type, etc
|
|
4
|
+
|
|
5
|
+
# TODO: clarify meaning of stem type geometry in comment below
|
|
6
|
+
|
|
7
|
+
class: # Diagram type
|
|
8
|
+
stem semantics: [ Mc mult, 1c mult, 1 mult, M mult, superclass, ordinal ] # stem semantics
|
|
9
|
+
connector types:
|
|
10
|
+
binary association: # Connector type
|
|
11
|
+
geometry: binary # unary, binary, or tree
|
|
12
|
+
about: Connects an anchor point on one node to an anchor point on the same or another node
|
|
13
|
+
stem positions:
|
|
14
|
+
class face: # Name of stem position
|
|
15
|
+
about: How many instances may be associated
|
|
16
|
+
minimum length: 20
|
|
17
|
+
stretch: fixed # fixed, hanging, or free
|
|
18
|
+
association:
|
|
19
|
+
about: How many association class instances per pair of associated instances
|
|
20
|
+
minimum length: 24
|
|
21
|
+
stretch: hanging
|
|
22
|
+
generalization:
|
|
23
|
+
geometry: tree
|
|
24
|
+
about: A superset class compeletely split into disjoint subset classes
|
|
25
|
+
stem positions:
|
|
26
|
+
superclass face:
|
|
27
|
+
about: The superset of all subclass instances
|
|
28
|
+
minimum length: 15
|
|
29
|
+
stretch: fixed
|
|
30
|
+
subclass face:
|
|
31
|
+
about: A disjoint subset of the superclass set of instances
|
|
32
|
+
minimum length: 10
|
|
33
|
+
stretch: fixed
|
|
34
|
+
|
|
35
|
+
state machine:
|
|
36
|
+
stem semantics: [ target state, initial pseudo state, final pseudo state ] # stem semantics
|
|
37
|
+
connector types:
|
|
38
|
+
initial transition:
|
|
39
|
+
geometry: unary
|
|
40
|
+
about: Designates an initial state
|
|
41
|
+
stem positions:
|
|
42
|
+
to initial state:
|
|
43
|
+
about: Points to a designated state as an initial state
|
|
44
|
+
minimum length: 60
|
|
45
|
+
stretch: free
|
|
46
|
+
deletion transition:
|
|
47
|
+
geometry: unary
|
|
48
|
+
about: Designates implicit instance deletion after a state executes its activity
|
|
49
|
+
stem positions:
|
|
50
|
+
from final state:
|
|
51
|
+
about: Points away from a final state to indicate deletion
|
|
52
|
+
minimum length: 10
|
|
53
|
+
stretch: free
|
|
54
|
+
transition:
|
|
55
|
+
geometry: binary
|
|
56
|
+
about: Defines a path from one state to another
|
|
57
|
+
stem positions:
|
|
58
|
+
from state:
|
|
59
|
+
about: Points to the source state in a transition
|
|
60
|
+
minimum length: 10
|
|
61
|
+
stretch: fixed
|
|
62
|
+
to state:
|
|
63
|
+
about: Points to the destination state in a transition
|
|
64
|
+
minimum length: 15
|
|
65
|
+
stretch: fixed
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
# diagram_type.yaml – Diagram Types
|
|
2
|
+
|
|
3
|
+
class: # Diagram type name (class diagram)
|
|
4
|
+
abbreviation: CD
|
|
5
|
+
about: >
|
|
6
|
+
Show data, logic and constraints in a domain
|
|
7
|
+
notations: # Supported notations
|
|
8
|
+
- Starr
|
|
9
|
+
- xUML
|
|
10
|
+
- Shlaer-Mellor
|
|
11
|
+
node types: # The kinds of nodes that can be drawn on this diagram type
|
|
12
|
+
class: # Node type name (a class node)
|
|
13
|
+
about: >
|
|
14
|
+
Abstraction of a set of things with the same properties, behavior,
|
|
15
|
+
and subject to the same rules and constraints
|
|
16
|
+
default size:
|
|
17
|
+
height: 80 # Default size if text fits and user has not specified otherwise
|
|
18
|
+
width: 110
|
|
19
|
+
max size:
|
|
20
|
+
height: 180 # Will not be drawn larger than this size
|
|
21
|
+
width: 144
|
|
22
|
+
compartment types: # The types of compartments that may be stacked inside this node
|
|
23
|
+
name: # Name of the compartment, in this case the name/title of a class
|
|
24
|
+
alignment: # How the text is aligned within this compartment
|
|
25
|
+
horizontal: center
|
|
26
|
+
vertical: center
|
|
27
|
+
padding: # Margin between internal text and external boundary
|
|
28
|
+
top: 5
|
|
29
|
+
bottom: 10
|
|
30
|
+
left: 5
|
|
31
|
+
right: 5
|
|
32
|
+
stack order: 1 # Appearance of compartment with 1 at the top, descending vertically
|
|
33
|
+
attribute:
|
|
34
|
+
alignment:
|
|
35
|
+
horizontal: left
|
|
36
|
+
vertical: top
|
|
37
|
+
padding:
|
|
38
|
+
top: 5
|
|
39
|
+
bottom: 10
|
|
40
|
+
left: 5
|
|
41
|
+
right: 5
|
|
42
|
+
stack order: 2
|
|
43
|
+
method:
|
|
44
|
+
alignment:
|
|
45
|
+
horizontal: left
|
|
46
|
+
vertical: top
|
|
47
|
+
padding:
|
|
48
|
+
top: 5
|
|
49
|
+
bottom: 4
|
|
50
|
+
left: 5
|
|
51
|
+
right: 5
|
|
52
|
+
stack order: 3
|
|
53
|
+
|
|
54
|
+
imported class:
|
|
55
|
+
about: >
|
|
56
|
+
Used when you have a relationship to a class in some other
|
|
57
|
+
subsystem of your domain.
|
|
58
|
+
default size:
|
|
59
|
+
height: 80
|
|
60
|
+
width: 110
|
|
61
|
+
max size:
|
|
62
|
+
height: 180
|
|
63
|
+
width: 144
|
|
64
|
+
compartment types:
|
|
65
|
+
name:
|
|
66
|
+
alignment:
|
|
67
|
+
horizontal: center
|
|
68
|
+
vertical: center
|
|
69
|
+
padding:
|
|
70
|
+
top: 5
|
|
71
|
+
bottom: 10
|
|
72
|
+
left: 5
|
|
73
|
+
right: 5
|
|
74
|
+
stack order: 1
|
|
75
|
+
attribute:
|
|
76
|
+
alignment:
|
|
77
|
+
horizontal: left
|
|
78
|
+
vertical: top
|
|
79
|
+
padding:
|
|
80
|
+
top: 5
|
|
81
|
+
bottom: 10
|
|
82
|
+
left: 5
|
|
83
|
+
right: 5
|
|
84
|
+
stack order: 2
|
|
85
|
+
|
|
86
|
+
state machine:
|
|
87
|
+
abbreviation: SMD
|
|
88
|
+
about: >
|
|
89
|
+
Lifecycle of a class or assigner relationship
|
|
90
|
+
notations:
|
|
91
|
+
- xUML
|
|
92
|
+
node types:
|
|
93
|
+
state name only:
|
|
94
|
+
about: >
|
|
95
|
+
A state with no activity, distinct node type since it is drawn with different padding for the state name
|
|
96
|
+
default size:
|
|
97
|
+
height: 50
|
|
98
|
+
width: 110
|
|
99
|
+
max size:
|
|
100
|
+
height: 100
|
|
101
|
+
width: 300
|
|
102
|
+
compartment types:
|
|
103
|
+
name:
|
|
104
|
+
alignment:
|
|
105
|
+
horizontal: center
|
|
106
|
+
vertical: center
|
|
107
|
+
padding:
|
|
108
|
+
top: 20
|
|
109
|
+
bottom: 20
|
|
110
|
+
left: 10
|
|
111
|
+
right: 10
|
|
112
|
+
stack order: 1
|
|
113
|
+
state:
|
|
114
|
+
about: >
|
|
115
|
+
A context of some duration during an instance's existence
|
|
116
|
+
default size:
|
|
117
|
+
height: 50
|
|
118
|
+
width: 110
|
|
119
|
+
max size:
|
|
120
|
+
height: 100
|
|
121
|
+
width: 300
|
|
122
|
+
compartment types:
|
|
123
|
+
name:
|
|
124
|
+
alignment:
|
|
125
|
+
horizontal: center
|
|
126
|
+
vertical: center
|
|
127
|
+
padding:
|
|
128
|
+
top: 5
|
|
129
|
+
bottom: 10
|
|
130
|
+
left: 10
|
|
131
|
+
right: 10
|
|
132
|
+
stack order: 1
|
|
133
|
+
activity:
|
|
134
|
+
alignment:
|
|
135
|
+
horizontal: left
|
|
136
|
+
vertical: top
|
|
137
|
+
padding:
|
|
138
|
+
top: 4
|
|
139
|
+
bottom: 10
|
|
140
|
+
left: 5
|
|
141
|
+
right: 5
|
|
142
|
+
stack order: 2
|
|
143
|
+
|
|
144
|
+
class collaboration:
|
|
145
|
+
abbreviation: CCD
|
|
146
|
+
about: >
|
|
147
|
+
Shows interactions among classes and external entities in a domain
|
|
148
|
+
notations:
|
|
149
|
+
- Starr
|
|
150
|
+
- xUML
|
|
151
|
+
node types:
|
|
152
|
+
overview class:
|
|
153
|
+
about: >
|
|
154
|
+
Used to represent class in a collaboration or other non-class diagram
|
|
155
|
+
default size:
|
|
156
|
+
height: 25
|
|
157
|
+
width: 100
|
|
158
|
+
max size:
|
|
159
|
+
height: 60
|
|
160
|
+
width: 300
|
|
161
|
+
compartment types:
|
|
162
|
+
name:
|
|
163
|
+
alignment:
|
|
164
|
+
horizontal: center
|
|
165
|
+
vertical: center
|
|
166
|
+
padding:
|
|
167
|
+
top: 5
|
|
168
|
+
bottom: 5
|
|
169
|
+
left: 5
|
|
170
|
+
right: 5
|
|
171
|
+
stack order: 1
|
|
172
|
+
external entity:
|
|
173
|
+
about: >
|
|
174
|
+
Proxy for an external domain or some aspect of an external domain
|
|
175
|
+
default size:
|
|
176
|
+
height: 25
|
|
177
|
+
width: 100
|
|
178
|
+
max size:
|
|
179
|
+
height: 60
|
|
180
|
+
width: 300
|
|
181
|
+
compartment types:
|
|
182
|
+
name:
|
|
183
|
+
alignment:
|
|
184
|
+
horizontal: center
|
|
185
|
+
vertical: center
|
|
186
|
+
padding:
|
|
187
|
+
top: 5
|
|
188
|
+
bottom: 5
|
|
189
|
+
left: 5
|
|
190
|
+
right: 5
|
|
191
|
+
stack order: 1
|
|
192
|
+
|
|
193
|
+
domain:
|
|
194
|
+
abbreviation: DD
|
|
195
|
+
about: >
|
|
196
|
+
Illustrates the diverse subject matters in your project
|
|
197
|
+
as a network of platform independent domains with requirements dependencies
|
|
198
|
+
notations:
|
|
199
|
+
- Starr
|
|
200
|
+
- xUML
|
|
201
|
+
node types:
|
|
202
|
+
domain:
|
|
203
|
+
about: >
|
|
204
|
+
A distinct subject matter with its own vocabulary and rules
|
|
205
|
+
like "Linear Algebra" or "Configuration Management"
|
|
206
|
+
default size:
|
|
207
|
+
height: 60
|
|
208
|
+
width: 100
|
|
209
|
+
max size:
|
|
210
|
+
height: 110
|
|
211
|
+
width: 300
|
|
212
|
+
compartment types:
|
|
213
|
+
name:
|
|
214
|
+
alignment:
|
|
215
|
+
horizontal: center
|
|
216
|
+
vertical: center
|
|
217
|
+
padding:
|
|
218
|
+
top: 5
|
|
219
|
+
bottom: 5
|
|
220
|
+
left: 5
|
|
221
|
+
right: 5
|
|
222
|
+
stack order: 1
|
|
223
|
+
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# system/frame.yaml – System defined frames
|
|
2
|
+
|
|
3
|
+
Model Integration Snippet: # Frame name
|
|
4
|
+
# Frame for small model examples, no title block to maximize space
|
|
5
|
+
|
|
6
|
+
# Each Fitted Frame keyed by sheet name-orientation for the above Frame
|
|
7
|
+
letter-landscape: # name-orientation (name defined in sheets.yaml, orientation either portrait or landscape)
|
|
8
|
+
fields: # positioned freely on sheet outside of any title block (Free Field)
|
|
9
|
+
# Each key is a Metadata Item defined in metadata.yaml
|
|
10
|
+
Title: { x: 8, y: 202, max width: 254, max height: 13 }
|
|
11
|
+
Copyright notice: { x: 8, y: 31, max width: 254, max height: 57 }
|
|
12
|
+
Organization logo: { x: 5, y: 4, max width: 180, max height: 24 }
|
|
13
|
+
Author: { x: 280, y: 22, max width: 20, max height: 5 }
|
|
14
|
+
Modification date: { x: 230, y: 18, max width: 20, max height: 5 }
|
|
15
|
+
Document ID: { x: 230, y: 14, max width: 20, max height: 5 }
|
|
16
|
+
Version: { x: 230, y: 10, max width: 20, max height: 5 }
|
|
17
|
+
|
|
18
|
+
letter-portrait:
|
|
19
|
+
fields:
|
|
20
|
+
Title: { x: 8, y: 265, max width: 254, max height: 13 }
|
|
21
|
+
Copyright notice: { x: 10, y: 31, max width: 254, max height: 57 }
|
|
22
|
+
Organization logo: { x: 8, y: 5, max width: 180, max height: 24 }
|
|
23
|
+
Author: { x: 170, y: 22, max width: 20, max height: 5 }
|
|
24
|
+
Modification date: { x: 170, y: 18, max width: 20, max height: 5 }
|
|
25
|
+
Document ID: { x: 170, y: 14, max width: 20, max height: 5 }
|
|
26
|
+
Version: { x: 170, y: 10, max width: 20, max height: 5 }
|
|
27
|
+
|
|
28
|
+
Model Integration Diagram:
|
|
29
|
+
# Frame for medium ot large diagrams with a Title Block in the lower right corner
|
|
30
|
+
|
|
31
|
+
# All Fitted Frames below will use this Title Block Pattern
|
|
32
|
+
title-block-pattern:
|
|
33
|
+
- SE Simple # Name of the Title Block Pattern defined in titleblock.yaml
|
|
34
|
+
|
|
35
|
+
# Each key below is the Name of a data box defined in titleblock.yaml
|
|
36
|
+
# Each value is one or more Metadata Items defined in metadata.yaml
|
|
37
|
+
- bottom:
|
|
38
|
+
- Organization # Put the org name in Data Box 3
|
|
39
|
+
main:
|
|
40
|
+
- Title
|
|
41
|
+
rtop:
|
|
42
|
+
- Author
|
|
43
|
+
- Modification date # Stack these two in Data Box 6 with Author on top and Modification date underneath
|
|
44
|
+
rbottom:
|
|
45
|
+
- Document ID
|
|
46
|
+
- Version
|
|
47
|
+
|
|
48
|
+
tabloid-landscape:
|
|
49
|
+
title block placement: { x: 275, y: 9 }
|
|
50
|
+
fields: # Note that the Title is displayed both in a Data Box and in a Free Field for easy visibility
|
|
51
|
+
Title: { x: 8, y: 264, max width: 254, max height: 13 }
|
|
52
|
+
Copyright notice: { x: 8, y: 28, max width: 254, max height: 57 }
|
|
53
|
+
Organization logo: { x: 8, y: 9, max width: 180, max height: 24 }
|
|
54
|
+
|
|
55
|
+
tabloid-portrait:
|
|
56
|
+
title block placement: { x: 150, y: 9 }
|
|
57
|
+
fields:
|
|
58
|
+
Title: { x: 10, y: 415, max width: 254, max height: 13 }
|
|
59
|
+
Copyright notice: { x: 8, y: 25, max width: 254, max height: 57 }
|
|
60
|
+
Organization logo: { x: 5, y: 10, max width: 180, max height: 24 }
|
|
61
|
+
|
|
62
|
+
C-landscape:
|
|
63
|
+
title block placement: { x: 1190, y: 35 }
|
|
64
|
+
fields:
|
|
65
|
+
Title: { x: 72, y: 1240, max width: 254, max height: 25 }
|
|
66
|
+
Copyright notice: { x: 72, y: 270, max width: 254, max height: 57 }
|
|
67
|
+
Organization logo: { x: 72, y: 70, max width: 191, max height: 25 }
|
|
68
|
+
|
|
69
|
+
C-portrait:
|
|
70
|
+
title block placement: { x: 700, y: 25 }
|
|
71
|
+
fields:
|
|
72
|
+
Title: { x: 18, y: 584, max width: 254, max height: 25 }
|
|
73
|
+
Copyright notice: { x: 400, y: 38, max width: 254, max height: 57 }
|
|
74
|
+
Organization logo: { x: 19, y: 18, max width: 191, max height: 25 }
|
|
75
|
+
|
|
76
|
+
D-landscape:
|
|
77
|
+
title block placement: { x: 2050, y: 100 }
|
|
78
|
+
fields:
|
|
79
|
+
Title: { x: 72, y: 1650, max width: 254, max height: 25 }
|
|
80
|
+
Copyright notice: { x: 850, y: 220, max width: 254, max height: 57 }
|
|
81
|
+
Organization logo: { x: 70, y: 150, max width: 191, max height: 25 }
|
|
82
|
+
|
|
83
|
+
D-portrait:
|
|
84
|
+
title block placement: { x: 553, y: 38 }
|
|
85
|
+
fields:
|
|
86
|
+
Title: { x: 18, y: 584, max width: 254, max height: 25 }
|
|
87
|
+
Copyright notice: { x: 400, y: 38, max width: 254, max height: 57 }
|
|
88
|
+
Organization logo: { x: 19, y: 18, max width: 191, max height: 25 }
|
|
89
|
+
|
|
90
|
+
E-landscape:
|
|
91
|
+
title block placement: { x: 1025, y: 38 }
|
|
92
|
+
fields:
|
|
93
|
+
Title: { x: 30, y: 884, max width: 254, max height: 25 }
|
|
94
|
+
Copyright notice: { x: 500, y: 38, max width: 254, max height: 57 }
|
|
95
|
+
Organization logo: { x: 30, y: 38, max width: 191, max height: 25 }
|
|
96
|
+
|
|
97
|
+
E-portrait:
|
|
98
|
+
title block placement: { x: 740, y: 25 }
|
|
99
|
+
fields:
|
|
100
|
+
Title: { x: 30, y: 1180, max width: 254, max height: 25 }
|
|
101
|
+
Copyright notice: { x: 220, y: 30, max width: 254, max height: 57 }
|
|
102
|
+
Organization logo: { x: 30, y: 30, max width: 191, max height: 25 }
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# layout_specification.yaml – Overall diagram layout parameters
|
|
2
|
+
|
|
3
|
+
- standard: # Name of the system default diagram layout parameters
|
|
4
|
+
# Diagram layout
|
|
5
|
+
default margin: # Distance from edge of diagram area to nearest drawn element on the diagram
|
|
6
|
+
top: 10
|
|
7
|
+
bottom: 10
|
|
8
|
+
left: 10
|
|
9
|
+
right: 10
|
|
10
|
+
default diagram origin: # Lower left corner of the diagram relative to the Canvas area
|
|
11
|
+
x: 0 # This origin can be overriden by the user in the mls file with padding values
|
|
12
|
+
y: 0
|
|
13
|
+
# Grid/node layout
|
|
14
|
+
default cell padding: # Gaps between cell and node edges, forms a margin around a node within a cell
|
|
15
|
+
top: 5
|
|
16
|
+
bottom: 5
|
|
17
|
+
left: 5
|
|
18
|
+
right: 5
|
|
19
|
+
default cell alignment: # Node is aligned this way by default, user can override in mls file
|
|
20
|
+
vertical: center
|
|
21
|
+
horizontal: center
|
|
22
|
+
# Connector layout
|
|
23
|
+
|
|
24
|
+
# For a Stem that has no graphic decoration, such as an xUML class binary association connection or a xUML subclass
|
|
25
|
+
# connection, this is the minimum distance from the node face to either a bend or the opposing Stem end. It prevents
|
|
26
|
+
# a bend too close to a Node face or a connection too close to another Node.
|
|
27
|
+
undecorated stem clearance: 11
|
|
28
|
+
default cname positions: 5 # The number of connector name positions along a bend
|
|
29
|
+
default stem positions: 5 # Number of positions wher a connector can anchor on a face of a node
|
|
30
|
+
default rut positions: 5 # Number of positions a connector can follow within a row or column
|
|
31
|
+
default new path row height: 100 # Minimum space required for a connector traveling outside the
|
|
32
|
+
default new path col width: 150 # furthest occupied row or column to bend around to its destination face
|
|
33
|
+
|
|
34
|
+
stem spec:
|
|
35
|
+
vertical access buffer:
|
|
36
|
+
horizontal access buffer:
|
|
37
|
+
vertical end buffer:
|
|
38
|
+
horizontal end buffer:
|
|
39
|
+
default name:
|
|
40
|
+
optional:
|
|
41
|
+
|
|
42
|
+
# Add your own named variations below
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# metadata.yaml – System defined metadata
|
|
2
|
+
|
|
3
|
+
# This is a complete list of all Metadata Items that can be positioned within a Frame
|
|
4
|
+
# These are positioned within Frames in the frame.yaml file
|
|
5
|
+
# Their values are specified in Flatland .mls (model layout sheet) files
|
|
6
|
+
|
|
7
|
+
text: # Text item
|
|
8
|
+
- Organization
|
|
9
|
+
- Creation date
|
|
10
|
+
- Modification date
|
|
11
|
+
- Author
|
|
12
|
+
- Reviewer
|
|
13
|
+
- Version
|
|
14
|
+
- Copyright
|
|
15
|
+
- Title
|
|
16
|
+
- Document ID
|
|
17
|
+
|
|
18
|
+
image: # Graphic item such as a *.png file
|
|
19
|
+
- Organization logo
|
|
20
|
+
- Copyright notice
|