Für die Erzeugung von Canvas-Objekten gibt es eine ähnliche Funktion im
Modul CanvasItemAux:
createCanvasItem :: CanvasItem w =>
Canvas -> -- enthaltender Canvas
CanvasItemKind -> -- Objekttyp
(GUIOBJECT -> w) -> -- Wrap
[Config w] -> -- Konfigurationsoptionen
Coord -> -- initiale Position
IO w
Diese Funktion gibt im Gegensatz zur oben erwähnten createGUIObject
keinen GUIOBJECT-Wert, sondern das ,,echte'' Canvas-Objekt zurück
(createGUIObject ist allgemeiner, da es auch von den Funktionen
createCanvasItem und createMenuItem, s.u., benutzt wird).
Da diese Funktion somit auch die externe Repräsentation des Objektes
kennt, ist es hier auch möglich, die Liste der Konfigurationen mit zu
übergeben. Diese werden dann automatisch angewendet.
Parameter dieser Funktion sind:
ObjectKind für Widgets). Der Typ CanvasItemKind steht
ebenfalls im Modul GUIObjectKind in kernel/GUIObjectKind.hs:
data CanvasItemKind =
ARC
| LINE
...
Für neue Objekttypen muß hier ebenfalls ein entsprechender Konstruktor
hinzugefügt werden.
Line):
createLine :: Canvas -> [Config Line] -> IO Line createLine cnv ol = createCanvasItem cnv LINE Line ol [(0,0),(0,0)]