1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- include "primitives.alh"
- include "modelling.alh"
- include "object_operations.alh"
- include "utils.alh"
- Boolean function main(model : Element):
- Element elements
- String class
- String elem
- String name
- String symbol
- String label
- Integer xloc
- String as_src
- String as_dest
- String link
- Element symbols_dict
- symbols_dict = dict_create()
- // Clear model
- elements = allInstances(model, "rendered/GraphicalElement")
- while (set_len(elements) > 0):
- class = set_pop(elements)
- model_delete_element(model, class)
- // render symbols
- xloc = 0
- elements = allInstances(model, "abstract/Symbol")
- while (set_len(elements) > 0):
- class = set_pop(elements)
- name = read_attribute(model, class, "typeID")
- symbol = instantiate_node(model, "rendered/Symbol", "")
- instantiate_attribute(model, symbol, "x", xloc)
- instantiate_attribute(model, symbol, "y", 0)
- instantiate_attribute(model, symbol, "typeID", name)
- instantiate_attribute(model, symbol, "__asid", list_read(string_split_nr(class, "/", 1), 1))
- xloc = xloc + 200
- dict_add(symbols_dict, class, symbol)
- // abstract links between symbols to concrete connecting lines between icons
- elements = allInstances(model, "abstract/Link")
- while (set_len(elements) > 0):
- class = set_pop(elements)
- as_src = readAssociationSource(model, class)
- as_dest = readAssociationDestination(model, class)
- link = instantiate_link(model, "rendered/ConnectingLine", "", symbols_dict[as_src], symbols_dict[as_dest])
- // render attributes to text labels
- xloc = 0
- elements = allInstances(model, "abstract/Attribute")
- while (set_len(elements) > 0):
- class = set_pop(elements)
- name = cast_string(read_attribute(model, class, "key")) + "=" + cast_string(read_attribute(model, class, "value"))
- label = instantiate_node(model, "rendered/TextLabel", "")
- instantiate_attribute(model, label, "text", name)
- instantiate_attribute(model, label, "x", xloc)
- instantiate_attribute(model, label, "y", 80)
- xloc = xloc + 200
- dict_add(symbols_dict, class, label)
- // abstract SymbolAttribute association to concrete IconTextLabel
- elements = allInstances(model, "abstract/SymbolAttribute")
- while (set_len(elements) > 0):
- class = set_pop(elements)
- as_src = readAssociationSource(model, class)
- as_dest = readAssociationDestination(model, class)
- instantiate_link(model, "rendered/SymbolTextLabel", "", symbols_dict[as_src], symbols_dict[as_dest])
- return True!
|