[dia] PyDia: add read-only Sheet object and update docs



commit 68e941df904b8e1d95aa762b7dffe76a630148ae
Author: Hans Breuer <hans breuer org>
Date:   Sun Jun 22 21:00:47 2014 +0200

    PyDia: add read-only Sheet object and update docs
    
     - PyDiaObjects.dia: add and connect Sheet and MenuItem
     - allsheets.py: Self Documentation Series - Part VII : All Sheets

 plug-ins/python/Makefile.am   |    2 +
 plug-ins/python/allsheets.py  |   81 +++
 plug-ins/python/diamodule.c   |   26 +-
 plug-ins/python/makefile.msc  |    1 +
 plug-ins/python/pydia-sheet.c |  160 ++++++
 plug-ins/python/pydia-sheet.h |   16 +
 samples/Self/PyDiaObjects.dia | 1182 +++++++++++++++++++++++++++++++++++------
 7 files changed, 1305 insertions(+), 163 deletions(-)
---
diff --git a/plug-ins/python/Makefile.am b/plug-ins/python/Makefile.am
index 1801528..b9f2a62 100644
--- a/plug-ins/python/Makefile.am
+++ b/plug-ins/python/Makefile.am
@@ -51,6 +51,8 @@ libpython_plugin_la_SOURCES = \
        pydia-properties.h \
        pydia-property.c \
        pydia-render.c \
+       pydia-sheet.c \
+       pydia-sheet.h \
        pydia-text.c \
        pydia-text.h \
        diamodule.c \
diff --git a/plug-ins/python/allsheets.py b/plug-ins/python/allsheets.py
new file mode 100644
index 0000000..a50fced
--- /dev/null
+++ b/plug-ins/python/allsheets.py
@@ -0,0 +1,81 @@
+#    PyDia Self Documentation Series - Part VII : All Sheets
+#    Copyright (c) 2014  Hans Breuer  <hans breuer org>
+#
+#        generates something form the list of sheets
+#
+
+#    This program is free software; you can redistribute it and/or modify
+#   it under the terms of the GNU General Public License as published by
+#   the Free Software Foundation; either version 2 of the License, or
+#   (at your option) any later version.
+#
+#   This program is distributed in the hope that it will be useful,
+#   but WITHOUT ANY WARRANTY; without even the implied warranty of
+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#   GNU General Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License
+#   along with this program; if not, write to the Free Software
+#   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+import dia, os, string
+
+# Given a list of "sheet objects" return the common namespace of the object types
+def so_get_namespace (sol) :
+       names = {}
+       if len(sol) < 1 :
+               return "Empty"
+       for ot, descr, fname in sol :
+               if ot :
+                       sp = string.split(ot.name, " - ")
+                       if len(sp) > 1 :
+                               if names.has_key (sp[0]) :
+                                       names[sp[0]] += 1
+                               else :
+                                       names[sp[0]] = 1
+       return string.join (names.keys(), ",")
+
+def check_objecttype_overlap (sheets) :
+       types = dia.registered_types()
+       # remove Standard objects, they do not have or need a sheet
+       del types["Group"]
+       for s in ["Arc", "Box", "BezierLine", "Beziergon", "Ellipse", "Image", "Line",
+                 "Outline", "Path", "Polygon", "PolyLine", "Text", "ZigZagLine"] :
+               del types["Standard - %s" % (s,)]
+       # got through all the sheets to match against registered types
+       missing = []
+       for sheet in sheets :
+               for ot, descr, fname in sheet.objects :
+                       if types.has_key (ot.name) :
+                               if ot == types[ot.name] :
+                                       del types[ot.name]
+                               else :
+                                       print "Mix-up:", ot.name
+                       else :
+                               # sheet referencing a type not available
+                               missing.append (ot.name)
+       # from the dictionary removed every type referenced just once?
+       print types
+
+def isheets_cb (data, flags) :
+       sheets = dia.registered_sheets ()
+       check_objecttype_overlap (sheets)
+       path = os.environ["TEMP"] + os.path.sep + "dia-sheets.html"
+       f = open (path, "w")
+       f.write ("""
+<html><head><title>Dia Sheets</title></head><body>
+<table>
+""")
+       for sheet in sheets :
+               info = "Namespace: [%s]<br>%i object types" % (so_get_namespace (sheet.objects), 
len(sheet.objects))
+               sname = sheet.name
+               if not sheet.user :
+                       sname = "<b>" + sname + "</b>"
+               f.write ("<tr><td>%s</td><td>%s</td><td>%s</td></tr>\n" % (sname, sheet.description, info))
+       f.write ("""</table>
+</body></html>
+""")
+       dia.message(0, "'" + path + "' saved.")
+
+dia.register_action ("HelpInspectSheets", "Dia Sheets Inspection",
+                     "/ToolboxMenu/Help/HelpExtensionStart",
+                     isheets_cb)
diff --git a/plug-ins/python/diamodule.c b/plug-ins/python/diamodule.c
index 21ab03a..8871a62 100644
--- a/plug-ins/python/diamodule.c
+++ b/plug-ins/python/diamodule.c
@@ -39,6 +39,7 @@
 #include "pydia-text.h"
 #include "pydia-paperinfo.h"
 #include "pydia-menuitem.h"
+#include "pydia-sheet.h"
 
 #include "lib/dialib.h"
 #include "lib/object.h"
@@ -201,6 +202,23 @@ PyDia_RegisteredTypes(PyObject *self, PyObject *args)
 }
 
 static PyObject *
+PyDia_RegisteredSheets(PyObject *self, PyObject *args)
+{
+    PyObject *list;
+    GSList *items;
+
+    if (!PyArg_ParseTuple(args, ":dia.registered_sheets"))
+       return NULL;
+
+    list = PyList_New(0);
+
+    for (items = get_sheets_list (); items != NULL; items = items->next)
+       PyList_Append (list, PyDiaSheet_New (items->data));
+
+    return list;
+}
+
+static PyObject *
 PyDia_ActiveDisplay(PyObject *self, PyObject *args)
 {
     DDisplay *disp;
@@ -513,6 +531,9 @@ static PyMethodDef dia_methods[] = {
     { "registered_types", PyDia_RegisteredTypes, METH_VARARGS,
       "registered_types() -> Dict of ObjectType indexed by their name."
       "  A dictionary of all registered object factories, aka. DiaObjectType" },
+    { "registered_sheets", PyDia_RegisteredSheets, METH_VARARGS,
+      "registered_sheets() -> List of registered sheets."
+      "  A list of all registered sheets." },
     { "active_display", PyDia_ActiveDisplay, METH_VARARGS,
       "active_display() -> Display.  Delivers the currently active display 'dia.Display' or None" },
     { "update_all", PyDia_UpdateAll, METH_VARARGS,
@@ -582,6 +603,7 @@ initdia(void)
     PyDiaText_Type.ob_type = &PyType_Type;
     PyDiaPaperinfo_Type.ob_type = &PyType_Type;
     PyDiaMenuitem_Type.ob_type = &PyType_Type;
+    PyDiaSheet_Type.ob_type = &PyType_Type;
 #endif
 
     m = Py_InitModule3("dia", dia_methods, dia_module_doc);
@@ -643,9 +665,11 @@ initdia(void)
                         (void *)&PyDiaPaperinfo_Type);
     PyDict_SetItemString(d, "Menuitem",
                         (void *)&PyDiaMenuitem_Type);
+    PyDict_SetItemString(d, "Sheet",
+                        (void *)&PyDiaSheet_Type);
 
     if (PyErr_Occurred())
-       Py_FatalError("can't initialise module dia");
+       Py_FatalError("can't initialize module dia");
     else {
       /* should all be no-ops when used embedded */
       g_type_init ();
diff --git a/plug-ins/python/makefile.msc b/plug-ins/python/makefile.msc
index 8612e1c..4ce7d93 100644
--- a/plug-ins/python/makefile.msc
+++ b/plug-ins/python/makefile.msc
@@ -41,6 +41,7 @@ OBJECTS = \
        pydia-properties.obj \
        pydia-property.obj \
        pydia-render.obj \
+       pydia-sheet.obj \
        pydia-text.obj \
 
 OBJECTS2 = \
diff --git a/plug-ins/python/pydia-sheet.c b/plug-ins/python/pydia-sheet.c
new file mode 100644
index 0000000..91f3414
--- /dev/null
+++ b/plug-ins/python/pydia-sheet.c
@@ -0,0 +1,160 @@
+/* Python plug-in for dia
+ * Copyright (C) 1999  James Henstridge
+ * Copyright (C) 2014  Hans Breuer
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#include <config.h>
+
+#include "pydia-object.h"
+#include "pydia-sheet.h"
+
+#include <structmember.h> /* PyMemberDef */
+
+PyObject *
+PyDiaSheet_New(Sheet *sheet)
+{
+    PyDiaSheet *self;
+
+    self = PyObject_NEW(PyDiaSheet, &PyDiaSheet_Type);
+
+    if (!self) return NULL;
+    self->sheet = sheet;
+    return (PyObject *)self;
+}
+
+static void
+PyDiaSheet_Dealloc(PyDiaSheet *self)
+{
+     PyObject_DEL(self);
+}
+
+static int
+PyDiaSheet_Compare(PyDiaSheet *self, PyDiaSheet *other)
+{
+    if (self->sheet == other->sheet) return 0;
+    if (self->sheet > other->sheet) return -1;
+    return 1;
+}
+
+static long
+PyDiaSheet_Hash(PyDiaSheet *self)
+{
+    return (long)self->sheet;
+}
+
+static PyObject *
+PyDiaSheet_Str(PyDiaSheet *self)
+{
+    return PyString_FromString(self->sheet->description);
+}
+
+/*
+ * "real" member function implementaion ?
+ */
+
+static PyMethodDef PyDiaSheet_Methods[] = {
+    {NULL, 0, 0, NULL}
+};
+
+#define T_INVALID -1 /* can't allow direct access due to pyobject->data indirection */
+static PyMemberDef PyDiaSheet_Members[] = {
+    { "name", T_INVALID, 0, RESTRICTED|READONLY,
+      "The name for the sheet." },
+    { "description", T_INVALID, 0, RESTRICTED|READONLY,
+      "The description for the sheet." },
+    { "filename", T_INVALID, 0, RESTRICTED|READONLY,
+      "The filename for the sheet." },
+    { "user", T_INVALID, 0, RESTRICTED|READONLY,
+      "The sheet scope is user provided, not system." },
+    { "objects", T_INVALID, 0, RESTRICTED|READONLY,
+      "The list of sheet objects referenced by the sheet." },
+    { NULL }
+};
+
+static PyObject *
+PyDiaSheet_GetAttr(PyDiaSheet *self, gchar *attr)
+{
+    if (!strcmp(attr, "__members__"))
+       return Py_BuildValue("[ssss]", "name", "description", "filename", "objects");
+    else if (!strcmp(attr, "name"))
+       return PyString_FromString(self->sheet->name);
+    else if (!strcmp(attr, "description"))
+       return PyString_FromString(self->sheet->description);
+    else if (!strcmp(attr, "filename"))
+       return PyString_FromString(self->sheet->filename);
+    else if (!strcmp(attr, "user"))
+       return PyInt_FromLong(self->sheet->scope == SHEET_SCOPE_USER ? 1 : 0);
+    else if (!strcmp(attr, "objects")) {
+       /* Just returning tuples with information for now. Wrapping SheetObject
+        * looks like overkill for the time being.
+        *  - DiaObjectType or None
+        *  - description of the SheetObject
+        *  - filename of the icon file
+        */
+       PyObject *ret = PyList_New(0);
+       GSList *list;
+
+       for (list = self->sheet->objects; list != NULL; list = list->next) {
+           SheetObject *so = list->data;
+           DiaObjectType *ot = object_get_type (so->object_type);
+
+           if (!ot)
+               Py_INCREF(Py_None);
+           PyList_Append(ret, Py_BuildValue ("(Oss)",
+                                               ot ? PyDiaObjectType_New (ot) : Py_None,
+                                               PyString_FromString (so->description ? so->description : ""),
+                                               PyString_FromString (so->pixmap_file ? so->pixmap_file : 
"")));
+       }
+       return ret;
+    }
+
+    return Py_FindMethod(PyDiaSheet_Methods, (PyObject *)self, attr);
+}
+
+PyTypeObject PyDiaSheet_Type = {
+    PyObject_HEAD_INIT(&PyType_Type)
+    0,
+    "dia.Sheet",
+    sizeof(PyDiaSheet),
+    0,
+    (destructor)PyDiaSheet_Dealloc,
+    (printfunc)0,
+    (getattrfunc)PyDiaSheet_GetAttr,
+    (setattrfunc)0,
+    (cmpfunc)PyDiaSheet_Compare,
+    (reprfunc)0,
+    0,
+    0,
+    0,
+    (hashfunc)PyDiaSheet_Hash,
+    (ternaryfunc)0,
+    (reprfunc)PyDiaSheet_Str,
+    (getattrofunc)0,
+    (setattrofunc)0,
+    (PyBufferProcs *)0,
+    0L, /* Flags */
+    "returned by dia.register_export() but not used otherwise yet.",
+    (traverseproc)0,
+    (inquiry)0,
+    (richcmpfunc)0,
+    0, /* tp_weakliszoffset */
+    (getiterfunc)0,
+    (iternextfunc)0,
+    PyDiaSheet_Methods, /* tp_methods */
+    PyDiaSheet_Members, /* tp_members */
+    0
+};
diff --git a/plug-ins/python/pydia-sheet.h b/plug-ins/python/pydia-sheet.h
new file mode 100644
index 0000000..84addc7
--- /dev/null
+++ b/plug-ins/python/pydia-sheet.h
@@ -0,0 +1,16 @@
+#ifndef PYDIA_SHEET_H
+#define PYDIA_SHEET_H
+
+#include <Python.h>
+#include "sheet.h"
+
+typedef struct {
+    PyObject_HEAD
+    Sheet *sheet;
+} PyDiaSheet;
+
+extern PyTypeObject PyDiaSheet_Type;
+
+PyObject* PyDiaSheet_New (Sheet* sheet);
+
+#endif
diff --git a/samples/Self/PyDiaObjects.dia b/samples/Self/PyDiaObjects.dia
index 7387194..a7af6da 100644
--- a/samples/Self/PyDiaObjects.dia
+++ b/samples/Self/PyDiaObjects.dia
@@ -70,7 +70,7 @@
           <dia:boolean val="false"/>
         </dia:attribute>
         <dia:attribute name="snap-to-grid">
-          <dia:boolean val="false"/>
+          <dia:boolean val="true"/>
         </dia:attribute>
         <dia:attribute name="snap-to-object">
           <dia:boolean val="true"/>
@@ -84,22 +84,22 @@
       </dia:composite>
     </dia:attribute>
   </dia:diagramdata>
-  <dia:layer name="Background" visible="true" active="true">
+  <dia:layer name="Background" visible="true" connectable="true" active="true">
     <dia:object type="UML - Class" version="0" id="O0">
       <dia:attribute name="obj_pos">
         <dia:point val="43,3"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="42.95,2.95;45.91,7.45"/>
+        <dia:rectangle val="42.95,2.95;45.86,8.25"/>
       </dia:attribute>
       <dia:attribute name="elem_corner">
         <dia:point val="43,3"/>
       </dia:attribute>
       <dia:attribute name="elem_width">
-        <dia:real val="2.8600000000000003"/>
+        <dia:real val="2.8100000000000001"/>
       </dia:attribute>
       <dia:attribute name="elem_height">
-        <dia:real val="4.4000000000000004"/>
+        <dia:real val="5.2000000000000011"/>
       </dia:attribute>
       <dia:attribute name="name">
         <dia:string>#Color#</dia:string>
@@ -194,6 +194,29 @@
       <dia:attribute name="attributes">
         <dia:composite type="umlattribute">
           <dia:attribute name="name">
+            <dia:string>#alpha#</dia:string>
+          </dia:attribute>
+          <dia:attribute name="type">
+            <dia:string>##</dia:string>
+          </dia:attribute>
+          <dia:attribute name="value">
+            <dia:string>##</dia:string>
+          </dia:attribute>
+          <dia:attribute name="comment">
+            <dia:string>#double: alpha color component [0 .. 1.0]#</dia:string>
+          </dia:attribute>
+          <dia:attribute name="visibility">
+            <dia:enum val="0"/>
+          </dia:attribute>
+          <dia:attribute name="abstract">
+            <dia:boolean val="false"/>
+          </dia:attribute>
+          <dia:attribute name="class_scope">
+            <dia:boolean val="false"/>
+          </dia:attribute>
+        </dia:composite>
+        <dia:composite type="umlattribute">
+          <dia:attribute name="name">
             <dia:string>#blue#</dia:string>
           </dia:attribute>
           <dia:attribute name="type">
@@ -270,19 +293,19 @@
     </dia:object>
     <dia:object type="UML - Class" version="0" id="O1">
       <dia:attribute name="obj_pos">
-        <dia:point val="66.6803,15.5046"/>
+        <dia:point val="69.3825,11"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="66.6303,15.4546;74.6678,19.9546"/>
+        <dia:rectangle val="69.3325,10.95;76.5775,17.05"/>
       </dia:attribute>
       <dia:attribute name="elem_corner">
-        <dia:point val="66.6803,15.5046"/>
+        <dia:point val="69.3825,11"/>
       </dia:attribute>
       <dia:attribute name="elem_width">
-        <dia:real val="7.9375"/>
+        <dia:real val="7.1450000000000005"/>
       </dia:attribute>
       <dia:attribute name="elem_height">
-        <dia:real val="4.4000000000000004"/>
+        <dia:real val="6"/>
       </dia:attribute>
       <dia:attribute name="name">
         <dia:string>#ConnectionPoint#</dia:string>
@@ -400,6 +423,52 @@
         </dia:composite>
         <dia:composite type="umlattribute">
           <dia:attribute name="name">
+            <dia:string>#directions#</dia:string>
+          </dia:attribute>
+          <dia:attribute name="type">
+            <dia:string>##</dia:string>
+          </dia:attribute>
+          <dia:attribute name="value">
+            <dia:string>##</dia:string>
+          </dia:attribute>
+          <dia:attribute name="comment">
+            <dia:string>#Preferred directions away from the object (e.g. DIR_NORTH=0x1)#</dia:string>
+          </dia:attribute>
+          <dia:attribute name="visibility">
+            <dia:enum val="0"/>
+          </dia:attribute>
+          <dia:attribute name="abstract">
+            <dia:boolean val="false"/>
+          </dia:attribute>
+          <dia:attribute name="class_scope">
+            <dia:boolean val="false"/>
+          </dia:attribute>
+        </dia:composite>
+        <dia:composite type="umlattribute">
+          <dia:attribute name="name">
+            <dia:string>#flags#</dia:string>
+          </dia:attribute>
+          <dia:attribute name="type">
+            <dia:string>##</dia:string>
+          </dia:attribute>
+          <dia:attribute name="value">
+            <dia:string>##</dia:string>
+          </dia:attribute>
+          <dia:attribute name="comment">
+            <dia:string>#Flags, e.g. CP_FLAGS_MAIN (=0x3)#</dia:string>
+          </dia:attribute>
+          <dia:attribute name="visibility">
+            <dia:enum val="0"/>
+          </dia:attribute>
+          <dia:attribute name="abstract">
+            <dia:boolean val="false"/>
+          </dia:attribute>
+          <dia:attribute name="class_scope">
+            <dia:boolean val="false"/>
+          </dia:attribute>
+        </dia:composite>
+        <dia:composite type="umlattribute">
+          <dia:attribute name="name">
             <dia:string>#object#</dia:string>
           </dia:attribute>
           <dia:attribute name="type">
@@ -453,13 +522,13 @@
     </dia:object>
     <dia:object type="UML - Class" version="0" id="O2">
       <dia:attribute name="obj_pos">
-        <dia:point val="14.6201,26.392"/>
+        <dia:point val="15,27"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="14.5701,26.342;27.1051,48.242"/>
+        <dia:rectangle val="14.95,26.95;27.485,48.85"/>
       </dia:attribute>
       <dia:attribute name="elem_corner">
-        <dia:point val="14.6201,26.392"/>
+        <dia:point val="15,27"/>
       </dia:attribute>
       <dia:attribute name="elem_width">
         <dia:real val="12.434999999999999"/>
@@ -2428,19 +2497,19 @@
     </dia:object>
     <dia:object type="UML - Class" version="0" id="O5">
       <dia:attribute name="obj_pos">
-        <dia:point val="2.23703,30.6026"/>
+        <dia:point val="5,36"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="2.18703,30.5526;5.07203,32.8526"/>
+        <dia:rectangle val="4.95,35.95;8.63,38.85"/>
       </dia:attribute>
       <dia:attribute name="elem_corner">
-        <dia:point val="2.23703,30.6026"/>
+        <dia:point val="5,36"/>
       </dia:attribute>
       <dia:attribute name="elem_width">
-        <dia:real val="2.7850000000000001"/>
+        <dia:real val="3.5800000000000001"/>
       </dia:attribute>
       <dia:attribute name="elem_height">
-        <dia:real val="2.1999999999999997"/>
+        <dia:real val="2.7999999999999998"/>
       </dia:attribute>
       <dia:attribute name="name">
         <dia:string>#Error#</dia:string>
@@ -2449,7 +2518,7 @@
         <dia:string>##</dia:string>
       </dia:attribute>
       <dia:attribute name="comment">
-        <dia:string>##</dia:string>
+        <dia:string>#The error object is just a helper to redirect errors to messages#</dia:string>
       </dia:attribute>
       <dia:attribute name="abstract">
         <dia:boolean val="false"/>
@@ -2533,7 +2602,38 @@
         <dia:real val="0.69999999999999996"/>
       </dia:attribute>
       <dia:attribute name="attributes"/>
-      <dia:attribute name="operations"/>
+      <dia:attribute name="operations">
+        <dia:composite type="umloperation">
+          <dia:attribute name="name">
+            <dia:string>#write#</dia:string>
+          </dia:attribute>
+          <dia:attribute name="stereotype">
+            <dia:string>##</dia:string>
+          </dia:attribute>
+          <dia:attribute name="type">
+            <dia:string>##</dia:string>
+          </dia:attribute>
+          <dia:attribute name="visibility">
+            <dia:enum val="0"/>
+          </dia:attribute>
+          <dia:attribute name="comment">
+            <dia:string>##</dia:string>
+          </dia:attribute>
+          <dia:attribute name="abstract">
+            <dia:boolean val="true"/>
+          </dia:attribute>
+          <dia:attribute name="inheritance_type">
+            <dia:enum val="0"/>
+          </dia:attribute>
+          <dia:attribute name="query">
+            <dia:boolean val="false"/>
+          </dia:attribute>
+          <dia:attribute name="class_scope">
+            <dia:boolean val="false"/>
+          </dia:attribute>
+          <dia:attribute name="parameters"/>
+        </dia:composite>
+      </dia:attribute>
       <dia:attribute name="template">
         <dia:boolean val="false"/>
       </dia:attribute>
@@ -2541,16 +2641,16 @@
     </dia:object>
     <dia:object type="UML - Class" version="0" id="O6">
       <dia:attribute name="obj_pos">
-        <dia:point val="2.1558,35.2279"/>
+        <dia:point val="4.91877,41.6253"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="2.1058,35.1779;8.0883,38.8779"/>
+        <dia:rectangle val="4.86877,41.5753;10.2313,45.2753"/>
       </dia:attribute>
       <dia:attribute name="elem_corner">
-        <dia:point val="2.1558,35.2279"/>
+        <dia:point val="4.91877,41.6253"/>
       </dia:attribute>
       <dia:attribute name="elem_width">
-        <dia:real val="5.8825000000000003"/>
+        <dia:real val="5.2625000000000002"/>
       </dia:attribute>
       <dia:attribute name="elem_height">
         <dia:real val="3.6000000000000001"/>
@@ -2701,13 +2801,13 @@
     </dia:object>
     <dia:object type="UML - Class" version="0" id="O7">
       <dia:attribute name="obj_pos">
-        <dia:point val="68.2266,22.4356"/>
+        <dia:point val="71.0225,17.931"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="68.1766,22.3856;73.7816,29.0856"/>
+        <dia:rectangle val="70.9725,17.881;76.5775,24.581"/>
       </dia:attribute>
       <dia:attribute name="elem_corner">
-        <dia:point val="68.2266,22.4356"/>
+        <dia:point val="71.0225,17.931"/>
       </dia:attribute>
       <dia:attribute name="elem_width">
         <dia:real val="5.5049999999999999"/>
@@ -2961,19 +3061,19 @@
     </dia:object>
     <dia:object type="UML - Class" version="0" id="O8">
       <dia:attribute name="obj_pos">
-        <dia:point val="35.0388,19.7444"/>
+        <dia:point val="35,19"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="34.9888,19.6944;47.9088,31.1944"/>
+        <dia:rectangle val="34.95,18.95;47.87,31.25"/>
       </dia:attribute>
       <dia:attribute name="elem_corner">
-        <dia:point val="35.0388,19.7444"/>
+        <dia:point val="35,19"/>
       </dia:attribute>
       <dia:attribute name="elem_width">
         <dia:real val="12.82"/>
       </dia:attribute>
       <dia:attribute name="elem_height">
-        <dia:real val="11.4"/>
+        <dia:real val="12.199999999999999"/>
       </dia:attribute>
       <dia:attribute name="name">
         <dia:string>#Layer#</dia:string>
@@ -3372,6 +3472,36 @@
         </dia:composite>
         <dia:composite type="umloperation">
           <dia:attribute name="name">
+            <dia:string>#render#</dia:string>
+          </dia:attribute>
+          <dia:attribute name="stereotype">
+            <dia:string>##</dia:string>
+          </dia:attribute>
+          <dia:attribute name="type">
+            <dia:string>##</dia:string>
+          </dia:attribute>
+          <dia:attribute name="visibility">
+            <dia:enum val="0"/>
+          </dia:attribute>
+          <dia:attribute name="comment">
+            <dia:string>#render(dia.Renderer: r) -&gt; None.  Render the layer with the given 
renderer#</dia:string>
+          </dia:attribute>
+          <dia:attribute name="abstract">
+            <dia:boolean val="true"/>
+          </dia:attribute>
+          <dia:attribute name="inheritance_type">
+            <dia:enum val="0"/>
+          </dia:attribute>
+          <dia:attribute name="query">
+            <dia:boolean val="false"/>
+          </dia:attribute>
+          <dia:attribute name="class_scope">
+            <dia:boolean val="false"/>
+          </dia:attribute>
+          <dia:attribute name="parameters"/>
+        </dia:composite>
+        <dia:composite type="umloperation">
+          <dia:attribute name="name">
             <dia:string>#update_extents#</dia:string>
           </dia:attribute>
           <dia:attribute name="stereotype">
@@ -3408,19 +3538,19 @@
     </dia:object>
     <dia:object type="UML - Class" version="0" id="O9">
       <dia:attribute name="obj_pos">
-        <dia:point val="54.5744,19.6356"/>
+        <dia:point val="55,20"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="54.5244,19.5856;61.2844,30.2856"/>
+        <dia:rectangle val="54.95,19.95;62.48,31.45"/>
       </dia:attribute>
       <dia:attribute name="elem_corner">
-        <dia:point val="54.5744,19.6356"/>
+        <dia:point val="55,20"/>
       </dia:attribute>
       <dia:attribute name="elem_width">
-        <dia:real val="6.6600000000000001"/>
+        <dia:real val="7.4299999999999997"/>
       </dia:attribute>
       <dia:attribute name="elem_height">
-        <dia:real val="10.6"/>
+        <dia:real val="11.399999999999999"/>
       </dia:attribute>
       <dia:attribute name="name">
         <dia:string>#Object#</dia:string>
@@ -3752,6 +3882,36 @@
         </dia:composite>
         <dia:composite type="umloperation">
           <dia:attribute name="name">
+            <dia:string>#get_object_menu#</dia:string>
+          </dia:attribute>
+          <dia:attribute name="stereotype">
+            <dia:string>##</dia:string>
+          </dia:attribute>
+          <dia:attribute name="type">
+            <dia:string>##</dia:string>
+          </dia:attribute>
+          <dia:attribute name="visibility">
+            <dia:enum val="0"/>
+          </dia:attribute>
+          <dia:attribute name="comment">
+            <dia:string>#get_object_menu() -&gt; Tuple.  Returns a named list of Menuitem(s).#</dia:string>
+          </dia:attribute>
+          <dia:attribute name="abstract">
+            <dia:boolean val="true"/>
+          </dia:attribute>
+          <dia:attribute name="inheritance_type">
+            <dia:enum val="0"/>
+          </dia:attribute>
+          <dia:attribute name="query">
+            <dia:boolean val="false"/>
+          </dia:attribute>
+          <dia:attribute name="class_scope">
+            <dia:boolean val="false"/>
+          </dia:attribute>
+          <dia:attribute name="parameters"/>
+        </dia:composite>
+        <dia:composite type="umloperation">
+          <dia:attribute name="name">
             <dia:string>#move#</dia:string>
           </dia:attribute>
           <dia:attribute name="stereotype">
@@ -3818,16 +3978,16 @@
     </dia:object>
     <dia:object type="UML - Class" version="0" id="O10">
       <dia:attribute name="obj_pos">
-        <dia:point val="4,17"/>
+        <dia:point val="5,29"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="3.95,16.95;9.66,21.25"/>
+        <dia:rectangle val="4.95,28.95;10.1175,33.25"/>
       </dia:attribute>
       <dia:attribute name="elem_corner">
-        <dia:point val="4,17"/>
+        <dia:point val="5,29"/>
       </dia:attribute>
       <dia:attribute name="elem_width">
-        <dia:real val="5.6100000000000003"/>
+        <dia:real val="5.0674999999999999"/>
       </dia:attribute>
       <dia:attribute name="elem_height">
         <dia:real val="4.2000000000000002"/>
@@ -4012,13 +4172,13 @@
         <dia:point val="37,5"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="36.95,4.95;42.065,10.25"/>
+        <dia:rectangle val="36.95,4.95;41.5725,10.25"/>
       </dia:attribute>
       <dia:attribute name="elem_corner">
         <dia:point val="37,5"/>
       </dia:attribute>
       <dia:attribute name="elem_width">
-        <dia:real val="5.0149999999999997"/>
+        <dia:real val="4.5225"/>
       </dia:attribute>
       <dia:attribute name="elem_height">
         <dia:real val="5.2000000000000011"/>
@@ -4215,17 +4375,17 @@
     </dia:object>
     <dia:object type="UML - Association" version="2" id="O12">
       <dia:attribute name="obj_pos">
-        <dia:point val="35.0388,20.4444"/>
+        <dia:point val="35,19.7"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="26.3794,10.6132;35.0888,21.2844"/>
+        <dia:rectangle val="26.3794,10.6232;35.05,20.58"/>
       </dia:attribute>
       <dia:attribute name="meta">
         <dia:composite type="dict"/>
       </dia:attribute>
       <dia:attribute name="orth_points">
-        <dia:point val="35.0388,20.4444"/>
-        <dia:point val="33,20.4444"/>
+        <dia:point val="35,19.7"/>
+        <dia:point val="33,19.7"/>
         <dia:point val="33,11.3732"/>
         <dia:point val="27.1294,11.3732"/>
       </dia:attribute>
@@ -4298,16 +4458,16 @@
         <dia:point val="22.6444,20.8732"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="20.7876,20.8232;23.4944,26.442"/>
+        <dia:rectangle val="21.1675,20.8232;23.4944,27.05"/>
       </dia:attribute>
       <dia:attribute name="meta">
         <dia:composite type="dict"/>
       </dia:attribute>
       <dia:attribute name="orth_points">
         <dia:point val="22.6444,20.8732"/>
-        <dia:point val="22.6444,24.0326"/>
-        <dia:point val="20.8376,24.0326"/>
-        <dia:point val="20.8376,26.392"/>
+        <dia:point val="22.6444,23"/>
+        <dia:point val="21.2175,23"/>
+        <dia:point val="21.2175,27"/>
       </dia:attribute>
       <dia:attribute name="orth_orient">
         <dia:enum val="1"/>
@@ -4315,7 +4475,7 @@
         <dia:enum val="1"/>
       </dia:attribute>
       <dia:attribute name="orth_autoroute">
-        <dia:boolean val="true"/>
+        <dia:boolean val="false"/>
       </dia:attribute>
       <dia:attribute name="name">
         <dia:string>##</dia:string>
@@ -4345,19 +4505,19 @@
     </dia:object>
     <dia:object type="UML - Association" version="2" id="O14">
       <dia:attribute name="obj_pos">
-        <dia:point val="54.5744,20.3356"/>
+        <dia:point val="55,20.7"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="47.1088,19.5356;54.6244,24.0844"/>
+        <dia:rectangle val="47.07,19.9;55.05,23.38"/>
       </dia:attribute>
       <dia:attribute name="meta">
         <dia:composite type="dict"/>
       </dia:attribute>
       <dia:attribute name="orth_points">
-        <dia:point val="54.5744,20.3356"/>
-        <dia:point val="53.4402,20.3356"/>
-        <dia:point val="53.4402,23.2444"/>
-        <dia:point val="47.8588,23.2444"/>
+        <dia:point val="55,20.7"/>
+        <dia:point val="53.4402,20.7"/>
+        <dia:point val="53.4402,22.5"/>
+        <dia:point val="47.82,22.5"/>
       </dia:attribute>
       <dia:attribute name="orth_orient">
         <dia:enum val="0"/>
@@ -4428,7 +4588,7 @@
         <dia:point val="27.1294,7.37322"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="26.3794,2.9;43.05,8.21322"/>
+        <dia:rectangle val="26.3794,2.9;43.05,8.25322"/>
       </dia:attribute>
       <dia:attribute name="meta">
         <dia:composite type="dict"/>
@@ -4508,7 +4668,7 @@
         <dia:point val="27.1294,8.17322"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="26.3794,4.9;37.05,9.01322"/>
+        <dia:rectangle val="26.3794,4.9;37.05,9.05322"/>
       </dia:attribute>
       <dia:attribute name="meta">
         <dia:composite type="dict"/>
@@ -4585,20 +4745,20 @@
     </dia:object>
     <dia:object type="UML - Association" version="2" id="O17">
       <dia:attribute name="obj_pos">
-        <dia:point val="61.2344,23.9356"/>
+        <dia:point val="62.43,24.3"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="32.8088,23.1756;65.0364,34.8"/>
+        <dia:rectangle val="32.5275,23.55;65.0364,34.8"/>
       </dia:attribute>
       <dia:attribute name="meta">
         <dia:composite type="dict"/>
       </dia:attribute>
       <dia:attribute name="orth_points">
-        <dia:point val="61.2344,23.9356"/>
-        <dia:point val="64.9864,23.9356"/>
+        <dia:point val="62.43,24.3"/>
+        <dia:point val="64.9864,24.3"/>
         <dia:point val="64.9864,32.7761"/>
-        <dia:point val="33.6088,32.7761"/>
-        <dia:point val="33.6088,34"/>
+        <dia:point val="33.3275,32.7761"/>
+        <dia:point val="33.3275,34"/>
       </dia:attribute>
       <dia:attribute name="orth_orient">
         <dia:enum val="0"/>
@@ -4667,18 +4827,18 @@
     </dia:object>
     <dia:object type="UML - Association" version="2" id="O18">
       <dia:attribute name="obj_pos">
-        <dia:point val="42.4475,41.5"/>
+        <dia:point val="41.99,41.5"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="41.6975,40.74;54.0413,44.8"/>
+        <dia:rectangle val="41.24,40.75;53.8275,44.8"/>
       </dia:attribute>
       <dia:attribute name="meta">
         <dia:composite type="dict"/>
       </dia:attribute>
       <dia:attribute name="orth_points">
-        <dia:point val="42.4475,41.5"/>
-        <dia:point val="53.2413,41.5"/>
-        <dia:point val="53.2413,44"/>
+        <dia:point val="41.99,41.5"/>
+        <dia:point val="53.0275,41.5"/>
+        <dia:point val="53.0275,44"/>
       </dia:attribute>
       <dia:attribute name="orth_orient">
         <dia:enum val="0"/>
@@ -4748,13 +4908,13 @@
         <dia:point val="62,44"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="61.95,43.95;65.25,48.45"/>
+        <dia:rectangle val="61.95,43.95;65.245,48.45"/>
       </dia:attribute>
       <dia:attribute name="elem_corner">
         <dia:point val="62,44"/>
       </dia:attribute>
       <dia:attribute name="elem_width">
-        <dia:real val="3.2000000000000002"/>
+        <dia:real val="3.1949999999999998"/>
       </dia:attribute>
       <dia:attribute name="elem_height">
         <dia:real val="4.4000000000000004"/>
@@ -4931,13 +5091,13 @@
         <dia:point val="51,44"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="50.95,43.95;55.5325,49.25"/>
+        <dia:rectangle val="50.95,43.95;55.105,49.25"/>
       </dia:attribute>
       <dia:attribute name="elem_corner">
         <dia:point val="51,44"/>
       </dia:attribute>
       <dia:attribute name="elem_width">
-        <dia:real val="4.4824999999999999"/>
+        <dia:real val="4.0549999999999997"/>
       </dia:attribute>
       <dia:attribute name="elem_height">
         <dia:real val="5.2000000000000011"/>
@@ -5317,13 +5477,13 @@
     </dia:object>
     <dia:object type="UML - Class" version="0" id="O22">
       <dia:attribute name="obj_pos">
-        <dia:point val="72,32"/>
+        <dia:point val="72.1775,32"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="71.95,31.95;76.4,38.85"/>
+        <dia:rectangle val="72.1275,31.95;76.5775,38.85"/>
       </dia:attribute>
       <dia:attribute name="elem_corner">
-        <dia:point val="72,32"/>
+        <dia:point val="72.1775,32"/>
       </dia:attribute>
       <dia:attribute name="elem_width">
         <dia:real val="4.3499999999999996"/>
@@ -5732,13 +5892,13 @@
         <dia:point val="31,34"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="30.95,33.95;36.2675,38.45"/>
+        <dia:rectangle val="30.95,33.95;35.705,38.45"/>
       </dia:attribute>
       <dia:attribute name="elem_corner">
         <dia:point val="31,34"/>
       </dia:attribute>
       <dia:attribute name="elem_width">
-        <dia:real val="5.2174999999999994"/>
+        <dia:real val="4.6549999999999994"/>
       </dia:attribute>
       <dia:attribute name="elem_height">
         <dia:real val="4.4000000000000004"/>
@@ -5936,13 +6096,13 @@
         <dia:point val="38,38"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="37.95,37.95;42.4975,43.25"/>
+        <dia:rectangle val="37.95,37.95;42.04,43.25"/>
       </dia:attribute>
       <dia:attribute name="elem_corner">
         <dia:point val="38,38"/>
       </dia:attribute>
       <dia:attribute name="elem_width">
-        <dia:real val="4.4474999999999998"/>
+        <dia:real val="3.9899999999999998"/>
       </dia:attribute>
       <dia:attribute name="elem_height">
         <dia:real val="5.2000000000000011"/>
@@ -6368,19 +6528,19 @@
     </dia:object>
     <dia:object type="UML - Association" version="2" id="O27">
       <dia:attribute name="obj_pos">
-        <dia:point val="42.4475,41.5"/>
+        <dia:point val="41.99,41.5"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="41.6975,31.9;72.05,42.34"/>
+        <dia:rectangle val="41.24,31.9;72.2275,42.38"/>
       </dia:attribute>
       <dia:attribute name="meta">
         <dia:composite type="dict"/>
       </dia:attribute>
       <dia:attribute name="orth_points">
-        <dia:point val="42.4475,41.5"/>
+        <dia:point val="41.99,41.5"/>
         <dia:point val="66,41.5"/>
         <dia:point val="66,32.7"/>
-        <dia:point val="72,32.7"/>
+        <dia:point val="72.1775,32.7"/>
       </dia:attribute>
       <dia:attribute name="orth_orient">
         <dia:enum val="0"/>
@@ -6448,16 +6608,16 @@
     </dia:object>
     <dia:object type="UML - Association" version="2" id="O28">
       <dia:attribute name="obj_pos">
-        <dia:point val="42.4475,41.5"/>
+        <dia:point val="41.99,41.5"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="41.6975,40.74;47.36,44.8"/>
+        <dia:rectangle val="41.24,40.75;47.36,44.8"/>
       </dia:attribute>
       <dia:attribute name="meta">
         <dia:composite type="dict"/>
       </dia:attribute>
       <dia:attribute name="orth_points">
-        <dia:point val="42.4475,41.5"/>
+        <dia:point val="41.99,41.5"/>
         <dia:point val="46.56,41.5"/>
         <dia:point val="46.56,44"/>
       </dia:attribute>
@@ -6526,16 +6686,16 @@
     </dia:object>
     <dia:object type="UML - Association" version="2" id="O29">
       <dia:attribute name="obj_pos">
-        <dia:point val="42.4475,41.5"/>
+        <dia:point val="41.99,41.5"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="41.6975,40.74;64.4,44.8"/>
+        <dia:rectangle val="41.24,40.75;64.4,44.8"/>
       </dia:attribute>
       <dia:attribute name="meta">
         <dia:composite type="dict"/>
       </dia:attribute>
       <dia:attribute name="orth_points">
-        <dia:point val="42.4475,41.5"/>
+        <dia:point val="41.99,41.5"/>
         <dia:point val="63.6,41.5"/>
         <dia:point val="63.6,44"/>
       </dia:attribute>
@@ -6604,16 +6764,16 @@
     </dia:object>
     <dia:object type="UML - Association" version="2" id="O30">
       <dia:attribute name="obj_pos">
-        <dia:point val="42.4475,41.5"/>
+        <dia:point val="41.99,41.5"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="41.6975,40.74;59.3975,44.8"/>
+        <dia:rectangle val="41.24,40.75;59.3975,44.8"/>
       </dia:attribute>
       <dia:attribute name="meta">
         <dia:composite type="dict"/>
       </dia:attribute>
       <dia:attribute name="orth_points">
-        <dia:point val="42.4475,41.5"/>
+        <dia:point val="41.99,41.5"/>
         <dia:point val="58.5975,41.5"/>
         <dia:point val="58.5975,44"/>
       </dia:attribute>
@@ -6682,16 +6842,16 @@
     </dia:object>
     <dia:object type="UML - Association" version="2" id="O31">
       <dia:attribute name="obj_pos">
-        <dia:point val="42.4475,41.5"/>
+        <dia:point val="41.99,41.5"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="41.6975,40.74;68.05,44.54"/>
+        <dia:rectangle val="41.24,40.75;68.05,44.58"/>
       </dia:attribute>
       <dia:attribute name="meta">
         <dia:composite type="dict"/>
       </dia:attribute>
       <dia:attribute name="orth_points">
-        <dia:point val="42.4475,41.5"/>
+        <dia:point val="41.99,41.5"/>
         <dia:point val="66,41.5"/>
         <dia:point val="66,43.7"/>
         <dia:point val="68,43.7"/>
@@ -6762,18 +6922,18 @@
     </dia:object>
     <dia:object type="UML - Association" version="2" id="O32">
       <dia:attribute name="obj_pos">
-        <dia:point val="36.2175,36.3"/>
+        <dia:point val="35.655,36.3"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="36.1675,35.54;42.9625,38.8"/>
+        <dia:rectangle val="35.605,35.58;42.4,38.8"/>
       </dia:attribute>
       <dia:attribute name="meta">
         <dia:composite type="dict"/>
       </dia:attribute>
       <dia:attribute name="orth_points">
-        <dia:point val="36.2175,36.3"/>
-        <dia:point val="40.2238,36.3"/>
-        <dia:point val="40.2238,38"/>
+        <dia:point val="35.655,36.3"/>
+        <dia:point val="39.995,36.3"/>
+        <dia:point val="39.995,38"/>
       </dia:attribute>
       <dia:attribute name="orth_orient">
         <dia:enum val="0"/>
@@ -6840,19 +7000,19 @@
     </dia:object>
     <dia:object type="UML - Association" version="2" id="O33">
       <dia:attribute name="obj_pos">
-        <dia:point val="27.0551,28.292"/>
+        <dia:point val="27.435,28.9"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="16.3397,4.57322;30.4866,29.132"/>
+        <dia:rectangle val="16.3397,4.57322;30.4866,29.78"/>
       </dia:attribute>
       <dia:attribute name="meta">
         <dia:composite type="dict"/>
       </dia:attribute>
       <dia:attribute name="orth_points">
-        <dia:point val="27.0551,28.292"/>
-        <dia:point val="30.4366,28.292"/>
-        <dia:point val="30.4366,24.887"/>
-        <dia:point val="16.3897,24.887"/>
+        <dia:point val="27.435,28.9"/>
+        <dia:point val="30.4366,28.9"/>
+        <dia:point val="30.4366,24"/>
+        <dia:point val="16.3897,24"/>
         <dia:point val="16.3897,5.37322"/>
         <dia:point val="18.1594,5.37322"/>
       </dia:attribute>
@@ -6927,7 +7087,7 @@
         <dia:point val="10.2,3.3"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="10.15,0.9;52.05,4.14"/>
+        <dia:rectangle val="10.15,0.9;52.05,4.18"/>
       </dia:attribute>
       <dia:attribute name="meta">
         <dia:composite type="dict"/>
@@ -7007,7 +7167,7 @@
         <dia:point val="52,1.7"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="26.3051,0.9;52.05,29.932"/>
+        <dia:rectangle val="26.685,0.9;52.05,30.58"/>
       </dia:attribute>
       <dia:attribute name="meta">
         <dia:composite type="dict"/>
@@ -7015,8 +7175,8 @@
       <dia:attribute name="orth_points">
         <dia:point val="52,1.7"/>
         <dia:point val="32,1.7"/>
-        <dia:point val="32,29.092"/>
-        <dia:point val="27.0551,29.092"/>
+        <dia:point val="32,29.7"/>
+        <dia:point val="27.435,29.7"/>
       </dia:attribute>
       <dia:attribute name="orth_orient">
         <dia:enum val="0"/>
@@ -7087,7 +7247,7 @@
         <dia:point val="10.2,4.9"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="1.85262,4.14;13.067,18.54"/>
+        <dia:rectangle val="1.85262,4.18;13.067,30.58"/>
       </dia:attribute>
       <dia:attribute name="meta">
         <dia:composite type="dict"/>
@@ -7095,10 +7255,10 @@
       <dia:attribute name="orth_points">
         <dia:point val="10.2,4.9"/>
         <dia:point val="13.017,4.9"/>
-        <dia:point val="13.017,15.5356"/>
-        <dia:point val="1.90262,15.5356"/>
-        <dia:point val="1.90262,17.7"/>
-        <dia:point val="4,17.7"/>
+        <dia:point val="13.017,26"/>
+        <dia:point val="1.90262,26"/>
+        <dia:point val="1.90262,29.7"/>
+        <dia:point val="5,29.7"/>
       </dia:attribute>
       <dia:attribute name="orth_orient">
         <dia:enum val="0"/>
@@ -7171,7 +7331,7 @@
         <dia:point val="10.2,4.1"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="1.69932,3.34;14.6701,27.932"/>
+        <dia:rectangle val="4.95,3.38;15.05,28.58"/>
       </dia:attribute>
       <dia:attribute name="meta">
         <dia:composite type="dict"/>
@@ -7179,10 +7339,10 @@
       <dia:attribute name="orth_points">
         <dia:point val="10.2,4.1"/>
         <dia:point val="13.9368,4.1"/>
-        <dia:point val="13.9368,23.9672"/>
-        <dia:point val="1.74932,23.9672"/>
-        <dia:point val="1.74932,27.092"/>
-        <dia:point val="14.6201,27.092"/>
+        <dia:point val="13.9368,27"/>
+        <dia:point val="5,27"/>
+        <dia:point val="5,27.7"/>
+        <dia:point val="15,27.7"/>
       </dia:attribute>
       <dia:attribute name="orth_orient">
         <dia:enum val="0"/>
@@ -7255,7 +7415,7 @@
         <dia:point val="59.045,2.9"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="10.9737,2.14;77.906,50.05"/>
+        <dia:rectangle val="11.95,2.15;77.906,51.08"/>
       </dia:attribute>
       <dia:attribute name="meta">
         <dia:composite type="dict"/>
@@ -7263,10 +7423,10 @@
       <dia:attribute name="orth_points">
         <dia:point val="59.045,2.9"/>
         <dia:point val="77.856,2.9"/>
-        <dia:point val="77.856,50"/>
-        <dia:point val="11.0237,50"/>
-        <dia:point val="11.0237,27.092"/>
-        <dia:point val="14.6201,27.092"/>
+        <dia:point val="77.856,51"/>
+        <dia:point val="12,51"/>
+        <dia:point val="12,27.7"/>
+        <dia:point val="15,27.7"/>
       </dia:attribute>
       <dia:attribute name="orth_orient">
         <dia:enum val="0"/>
@@ -7336,19 +7496,19 @@
     </dia:object>
     <dia:object type="UML - Association" version="2" id="O39">
       <dia:attribute name="obj_pos">
-        <dia:point val="61.2344,22.3356"/>
+        <dia:point val="62.43,22.7"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="60.4844,15.4046;66.7303,23.1756"/>
+        <dia:rectangle val="61.68,10.9;69.4325,23.58"/>
       </dia:attribute>
       <dia:attribute name="meta">
         <dia:composite type="dict"/>
       </dia:attribute>
       <dia:attribute name="orth_points">
-        <dia:point val="61.2344,22.3356"/>
-        <dia:point val="65.042,22.3356"/>
-        <dia:point val="65.042,16.2046"/>
-        <dia:point val="66.6803,16.2046"/>
+        <dia:point val="62.43,22.7"/>
+        <dia:point val="65.042,22.7"/>
+        <dia:point val="65.042,11.7"/>
+        <dia:point val="69.3825,11.7"/>
       </dia:attribute>
       <dia:attribute name="orth_orient">
         <dia:enum val="0"/>
@@ -7416,19 +7576,19 @@
     </dia:object>
     <dia:object type="UML - Association" version="2" id="O40">
       <dia:attribute name="obj_pos">
-        <dia:point val="61.2344,23.1356"/>
+        <dia:point val="62.43,23.5"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="60.4844,22.3356;68.2766,23.9756"/>
+        <dia:rectangle val="61.68,17.831;71.0725,24.38"/>
       </dia:attribute>
       <dia:attribute name="meta">
         <dia:composite type="dict"/>
       </dia:attribute>
       <dia:attribute name="orth_points">
-        <dia:point val="61.2344,23.1356"/>
-        <dia:point val="66.5493,23.1356"/>
-        <dia:point val="66.5493,23.1356"/>
-        <dia:point val="68.2266,23.1356"/>
+        <dia:point val="62.43,23.5"/>
+        <dia:point val="66.5493,23.5"/>
+        <dia:point val="66.5493,18.631"/>
+        <dia:point val="71.0225,18.631"/>
       </dia:attribute>
       <dia:attribute name="orth_orient">
         <dia:enum val="0"/>
@@ -7499,15 +7659,15 @@
         <dia:point val="27.1294,17.1732"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="27.0794,16.4132;58.7044,20.4356"/>
+        <dia:rectangle val="27.0794,16.4532;59.515,20.8"/>
       </dia:attribute>
       <dia:attribute name="meta">
         <dia:composite type="dict"/>
       </dia:attribute>
       <dia:attribute name="orth_points">
         <dia:point val="27.1294,17.1732"/>
-        <dia:point val="57.9044,17.1732"/>
-        <dia:point val="57.9044,19.6356"/>
+        <dia:point val="58.715,17.1732"/>
+        <dia:point val="58.715,20"/>
       </dia:attribute>
       <dia:attribute name="orth_orient">
         <dia:enum val="0"/>
@@ -7574,23 +7734,23 @@
     </dia:object>
     <dia:object type="UML - Association" version="2" id="O42">
       <dia:attribute name="obj_pos">
-        <dia:point val="61.2344,24.7356"/>
+        <dia:point val="62.43,25.1"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="0.634475,16.9;64.2093,49.05"/>
+        <dia:rectangle val="2.95,24.35;64.2093,50.05"/>
       </dia:attribute>
       <dia:attribute name="meta">
         <dia:composite type="dict"/>
       </dia:attribute>
       <dia:attribute name="orth_points">
-        <dia:point val="61.2344,24.7356"/>
-        <dia:point val="64.1593,24.7356"/>
+        <dia:point val="62.43,25.1"/>
+        <dia:point val="64.1593,25.1"/>
         <dia:point val="64.1593,31.9992"/>
-        <dia:point val="30.4407,31.9992"/>
-        <dia:point val="30.4407,49"/>
-        <dia:point val="0.684475,49"/>
-        <dia:point val="0.684475,17.7"/>
-        <dia:point val="4,17.7"/>
+        <dia:point val="30,31.9992"/>
+        <dia:point val="30,50"/>
+        <dia:point val="3,50"/>
+        <dia:point val="3,29.7"/>
+        <dia:point val="5,29.7"/>
       </dia:attribute>
       <dia:attribute name="orth_orient">
         <dia:enum val="0"/>
@@ -7665,7 +7825,7 @@
         <dia:point val="2,1"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="1.95,0.95;10.25,14.25"/>
+        <dia:rectangle val="1.95,0.95;10.25,15.05"/>
       </dia:attribute>
       <dia:attribute name="elem_corner">
         <dia:point val="2,1"/>
@@ -7674,7 +7834,7 @@
         <dia:real val="8.1999999999999993"/>
       </dia:attribute>
       <dia:attribute name="elem_height">
-        <dia:real val="13.200000000000003"/>
+        <dia:real val="14.000000000000004"/>
       </dia:attribute>
       <dia:attribute name="name">
         <dia:string>#dia#</dia:string>
@@ -8136,6 +8296,36 @@ For stand-alone Python bindings to Dia see http://mail.gnome.org/archives/dia-li
         </dia:composite>
         <dia:composite type="umloperation">
           <dia:attribute name="name">
+            <dia:string>#registered_sheets#</dia:string>
+          </dia:attribute>
+          <dia:attribute name="stereotype">
+            <dia:string>##</dia:string>
+          </dia:attribute>
+          <dia:attribute name="type">
+            <dia:string>##</dia:string>
+          </dia:attribute>
+          <dia:attribute name="visibility">
+            <dia:enum val="0"/>
+          </dia:attribute>
+          <dia:attribute name="comment">
+            <dia:string>#registered_sheets() -&gt; List of registered sheets.  A list of all registered 
sheets.#</dia:string>
+          </dia:attribute>
+          <dia:attribute name="abstract">
+            <dia:boolean val="true"/>
+          </dia:attribute>
+          <dia:attribute name="inheritance_type">
+            <dia:enum val="0"/>
+          </dia:attribute>
+          <dia:attribute name="query">
+            <dia:boolean val="false"/>
+          </dia:attribute>
+          <dia:attribute name="class_scope">
+            <dia:boolean val="true"/>
+          </dia:attribute>
+          <dia:attribute name="parameters"/>
+        </dia:composite>
+        <dia:composite type="umloperation">
+          <dia:attribute name="name">
             <dia:string>#registered_types#</dia:string>
           </dia:attribute>
           <dia:attribute name="stereotype">
@@ -8434,7 +8624,7 @@ For stand-alone Python bindings to Dia see http://mail.gnome.org/archives/dia-li
         <dia:point val="27.1294,12.1732"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="26.3794,8.9;45.05,13.0132"/>
+        <dia:rectangle val="26.3794,8.9;45.05,13.0532"/>
       </dia:attribute>
       <dia:attribute name="meta">
         <dia:composite type="dict"/>
@@ -8511,16 +8701,16 @@ For stand-alone Python bindings to Dia see http://mail.gnome.org/archives/dia-li
     </dia:object>
     <dia:object type="UML - Class" version="0" id="O46">
       <dia:attribute name="obj_pos">
-        <dia:point val="73,40"/>
+        <dia:point val="73.42,40"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="72.95,39.95;76.4525,46.85"/>
+        <dia:rectangle val="73.37,39.95;76.5775,46.85"/>
       </dia:attribute>
       <dia:attribute name="elem_corner">
-        <dia:point val="73,40"/>
+        <dia:point val="73.42,40"/>
       </dia:attribute>
       <dia:attribute name="elem_width">
-        <dia:real val="3.4024999999999999"/>
+        <dia:real val="3.1074999999999999"/>
       </dia:attribute>
       <dia:attribute name="elem_height">
         <dia:real val="6.8000000000000007"/>
@@ -8763,19 +8953,19 @@ For stand-alone Python bindings to Dia see http://mail.gnome.org/archives/dia-li
     </dia:object>
     <dia:object type="UML - Association" version="2" id="O47">
       <dia:attribute name="obj_pos">
-        <dia:point val="42.4475,41.5"/>
+        <dia:point val="41.99,41.5"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="41.6975,39.9;73.05,42.34"/>
+        <dia:rectangle val="41.24,39.9;73.47,42.38"/>
       </dia:attribute>
       <dia:attribute name="meta">
         <dia:composite type="dict"/>
       </dia:attribute>
       <dia:attribute name="orth_points">
-        <dia:point val="42.4475,41.5"/>
+        <dia:point val="41.99,41.5"/>
         <dia:point val="66,41.5"/>
         <dia:point val="66,40.7"/>
-        <dia:point val="73,40.7"/>
+        <dia:point val="73.42,40.7"/>
       </dia:attribute>
       <dia:attribute name="orth_orient">
         <dia:enum val="0"/>
@@ -8841,5 +9031,673 @@ For stand-alone Python bindings to Dia see http://mail.gnome.org/archives/dia-li
         <dia:connection handle="1" to="O46" connection="3"/>
       </dia:connections>
     </dia:object>
+    <dia:object type="UML - Class" version="0" id="O48">
+      <dia:attribute name="obj_pos">
+        <dia:point val="72,26"/>
+      </dia:attribute>
+      <dia:attribute name="obj_bb">
+        <dia:rectangle val="71.95,25.95;76.5775,30.25"/>
+      </dia:attribute>
+      <dia:attribute name="elem_corner">
+        <dia:point val="72,26"/>
+      </dia:attribute>
+      <dia:attribute name="elem_width">
+        <dia:real val="4.5274999999999999"/>
+      </dia:attribute>
+      <dia:attribute name="elem_height">
+        <dia:real val="4.2000000000000002"/>
+      </dia:attribute>
+      <dia:attribute name="name">
+        <dia:string>#Menuitem#</dia:string>
+      </dia:attribute>
+      <dia:attribute name="stereotype">
+        <dia:string>##</dia:string>
+      </dia:attribute>
+      <dia:attribute name="comment">
+        <dia:string>#dia.Menuitem is holding menu functions for dia.Object#</dia:string>
+      </dia:attribute>
+      <dia:attribute name="abstract">
+        <dia:boolean val="false"/>
+      </dia:attribute>
+      <dia:attribute name="suppress_attributes">
+        <dia:boolean val="false"/>
+      </dia:attribute>
+      <dia:attribute name="suppress_operations">
+        <dia:boolean val="false"/>
+      </dia:attribute>
+      <dia:attribute name="visible_attributes">
+        <dia:boolean val="true"/>
+      </dia:attribute>
+      <dia:attribute name="visible_operations">
+        <dia:boolean val="true"/>
+      </dia:attribute>
+      <dia:attribute name="visible_comments">
+        <dia:boolean val="false"/>
+      </dia:attribute>
+      <dia:attribute name="wrap_operations">
+        <dia:boolean val="true"/>
+      </dia:attribute>
+      <dia:attribute name="wrap_after_char">
+        <dia:int val="40"/>
+      </dia:attribute>
+      <dia:attribute name="comment_line_length">
+        <dia:int val="120"/>
+      </dia:attribute>
+      <dia:attribute name="comment_tagging">
+        <dia:boolean val="false"/>
+      </dia:attribute>
+      <dia:attribute name="allow_resizing">
+        <dia:boolean val="false"/>
+      </dia:attribute>
+      <dia:attribute name="line_width">
+        <dia:real val="0.10000000000000001"/>
+      </dia:attribute>
+      <dia:attribute name="line_color">
+        <dia:color val="#000000ff"/>
+      </dia:attribute>
+      <dia:attribute name="fill_color">
+        <dia:color val="#ffffffff"/>
+      </dia:attribute>
+      <dia:attribute name="text_color">
+        <dia:color val="#000000ff"/>
+      </dia:attribute>
+      <dia:attribute name="normal_font">
+        <dia:font family="monospace" style="0" name="Courier"/>
+      </dia:attribute>
+      <dia:attribute name="abstract_font">
+        <dia:font family="monospace" style="88" name="Courier-BoldOblique"/>
+      </dia:attribute>
+      <dia:attribute name="polymorphic_font">
+        <dia:font family="monospace" style="8" name="Courier-Oblique"/>
+      </dia:attribute>
+      <dia:attribute name="classname_font">
+        <dia:font family="sans" style="80" name="Helvetica-Bold"/>
+      </dia:attribute>
+      <dia:attribute name="abstract_classname_font">
+        <dia:font family="sans" style="88" name="Helvetica-BoldOblique"/>
+      </dia:attribute>
+      <dia:attribute name="comment_font">
+        <dia:font family="sans" style="8" name="Helvetica-Oblique"/>
+      </dia:attribute>
+      <dia:attribute name="normal_font_height">
+        <dia:real val="0.80000000000000004"/>
+      </dia:attribute>
+      <dia:attribute name="polymorphic_font_height">
+        <dia:real val="0.80000000000000004"/>
+      </dia:attribute>
+      <dia:attribute name="abstract_font_height">
+        <dia:real val="0.80000000000000004"/>
+      </dia:attribute>
+      <dia:attribute name="classname_font_height">
+        <dia:real val="1"/>
+      </dia:attribute>
+      <dia:attribute name="abstract_classname_font_height">
+        <dia:real val="1"/>
+      </dia:attribute>
+      <dia:attribute name="comment_font_height">
+        <dia:real val="0.69999999999999996"/>
+      </dia:attribute>
+      <dia:attribute name="attributes">
+        <dia:composite type="umlattribute">
+          <dia:attribute name="name">
+            <dia:string>#active#</dia:string>
+          </dia:attribute>
+          <dia:attribute name="type">
+            <dia:string>##</dia:string>
+          </dia:attribute>
+          <dia:attribute name="value">
+            <dia:string>##</dia:string>
+          </dia:attribute>
+          <dia:attribute name="comment">
+            <dia:string>#boolean: if it is callable#</dia:string>
+          </dia:attribute>
+          <dia:attribute name="visibility">
+            <dia:enum val="0"/>
+          </dia:attribute>
+          <dia:attribute name="abstract">
+            <dia:boolean val="false"/>
+          </dia:attribute>
+          <dia:attribute name="class_scope">
+            <dia:boolean val="false"/>
+          </dia:attribute>
+        </dia:composite>
+        <dia:composite type="umlattribute">
+          <dia:attribute name="name">
+            <dia:string>#text#</dia:string>
+          </dia:attribute>
+          <dia:attribute name="type">
+            <dia:string>##</dia:string>
+          </dia:attribute>
+          <dia:attribute name="value">
+            <dia:string>##</dia:string>
+          </dia:attribute>
+          <dia:attribute name="comment">
+            <dia:string>#string: what would be written in the menu#</dia:string>
+          </dia:attribute>
+          <dia:attribute name="visibility">
+            <dia:enum val="0"/>
+          </dia:attribute>
+          <dia:attribute name="abstract">
+            <dia:boolean val="false"/>
+          </dia:attribute>
+          <dia:attribute name="class_scope">
+            <dia:boolean val="false"/>
+          </dia:attribute>
+        </dia:composite>
+      </dia:attribute>
+      <dia:attribute name="operations">
+        <dia:composite type="umloperation">
+          <dia:attribute name="name">
+            <dia:string>#call#</dia:string>
+          </dia:attribute>
+          <dia:attribute name="stereotype">
+            <dia:string>##</dia:string>
+          </dia:attribute>
+          <dia:attribute name="type">
+            <dia:string>##</dia:string>
+          </dia:attribute>
+          <dia:attribute name="visibility">
+            <dia:enum val="0"/>
+          </dia:attribute>
+          <dia:attribute name="comment">
+            <dia:string>#call() -&gt; None.  Invoke the menuitem callback on object.#</dia:string>
+          </dia:attribute>
+          <dia:attribute name="abstract">
+            <dia:boolean val="true"/>
+          </dia:attribute>
+          <dia:attribute name="inheritance_type">
+            <dia:enum val="0"/>
+          </dia:attribute>
+          <dia:attribute name="query">
+            <dia:boolean val="false"/>
+          </dia:attribute>
+          <dia:attribute name="class_scope">
+            <dia:boolean val="false"/>
+          </dia:attribute>
+          <dia:attribute name="parameters"/>
+        </dia:composite>
+      </dia:attribute>
+      <dia:attribute name="template">
+        <dia:boolean val="false"/>
+      </dia:attribute>
+      <dia:attribute name="templates"/>
+    </dia:object>
+    <dia:object type="UML - Class" version="0" id="O49">
+      <dia:attribute name="obj_pos">
+        <dia:point val="4,17"/>
+      </dia:attribute>
+      <dia:attribute name="obj_bb">
+        <dia:rectangle val="3.95,16.95;9.555,23.85"/>
+      </dia:attribute>
+      <dia:attribute name="elem_corner">
+        <dia:point val="4,17"/>
+      </dia:attribute>
+      <dia:attribute name="elem_width">
+        <dia:real val="5.5049999999999999"/>
+      </dia:attribute>
+      <dia:attribute name="elem_height">
+        <dia:real val="6.8000000000000007"/>
+      </dia:attribute>
+      <dia:attribute name="name">
+        <dia:string>#Sheet#</dia:string>
+      </dia:attribute>
+      <dia:attribute name="stereotype">
+        <dia:string>#read-only#</dia:string>
+      </dia:attribute>
+      <dia:attribute name="comment">
+        <dia:string>#returned by dia.register_export() but not used otherwise yet.#</dia:string>
+      </dia:attribute>
+      <dia:attribute name="abstract">
+        <dia:boolean val="false"/>
+      </dia:attribute>
+      <dia:attribute name="suppress_attributes">
+        <dia:boolean val="false"/>
+      </dia:attribute>
+      <dia:attribute name="suppress_operations">
+        <dia:boolean val="false"/>
+      </dia:attribute>
+      <dia:attribute name="visible_attributes">
+        <dia:boolean val="true"/>
+      </dia:attribute>
+      <dia:attribute name="visible_operations">
+        <dia:boolean val="true"/>
+      </dia:attribute>
+      <dia:attribute name="visible_comments">
+        <dia:boolean val="false"/>
+      </dia:attribute>
+      <dia:attribute name="wrap_operations">
+        <dia:boolean val="true"/>
+      </dia:attribute>
+      <dia:attribute name="wrap_after_char">
+        <dia:int val="40"/>
+      </dia:attribute>
+      <dia:attribute name="comment_line_length">
+        <dia:int val="120"/>
+      </dia:attribute>
+      <dia:attribute name="comment_tagging">
+        <dia:boolean val="false"/>
+      </dia:attribute>
+      <dia:attribute name="allow_resizing">
+        <dia:boolean val="false"/>
+      </dia:attribute>
+      <dia:attribute name="line_width">
+        <dia:real val="0.10000000000000001"/>
+      </dia:attribute>
+      <dia:attribute name="line_color">
+        <dia:color val="#000000ff"/>
+      </dia:attribute>
+      <dia:attribute name="fill_color">
+        <dia:color val="#ffffffff"/>
+      </dia:attribute>
+      <dia:attribute name="text_color">
+        <dia:color val="#000000ff"/>
+      </dia:attribute>
+      <dia:attribute name="normal_font">
+        <dia:font family="monospace" style="0" name="Courier"/>
+      </dia:attribute>
+      <dia:attribute name="abstract_font">
+        <dia:font family="monospace" style="0" name="Courier"/>
+      </dia:attribute>
+      <dia:attribute name="polymorphic_font">
+        <dia:font family="monospace" style="0" name="Courier"/>
+      </dia:attribute>
+      <dia:attribute name="classname_font">
+        <dia:font family="sans" style="80" name="Helvetica-Bold"/>
+      </dia:attribute>
+      <dia:attribute name="abstract_classname_font">
+        <dia:font family="sans" style="0" name="Helvetica"/>
+      </dia:attribute>
+      <dia:attribute name="comment_font">
+        <dia:font family="sans" style="0" name="Helvetica"/>
+      </dia:attribute>
+      <dia:attribute name="normal_font_height">
+        <dia:real val="0.80000000000000004"/>
+      </dia:attribute>
+      <dia:attribute name="polymorphic_font_height">
+        <dia:real val="0.80000000000000004"/>
+      </dia:attribute>
+      <dia:attribute name="abstract_font_height">
+        <dia:real val="0.80000000000000004"/>
+      </dia:attribute>
+      <dia:attribute name="classname_font_height">
+        <dia:real val="1"/>
+      </dia:attribute>
+      <dia:attribute name="abstract_classname_font_height">
+        <dia:real val="1"/>
+      </dia:attribute>
+      <dia:attribute name="comment_font_height">
+        <dia:real val="0.69999999999999996"/>
+      </dia:attribute>
+      <dia:attribute name="attributes">
+        <dia:composite type="umlattribute">
+          <dia:attribute name="name">
+            <dia:string>#description#</dia:string>
+          </dia:attribute>
+          <dia:attribute name="type">
+            <dia:string>##</dia:string>
+          </dia:attribute>
+          <dia:attribute name="value">
+            <dia:string>##</dia:string>
+          </dia:attribute>
+          <dia:attribute name="comment">
+            <dia:string>#The description for the sheet.#</dia:string>
+          </dia:attribute>
+          <dia:attribute name="visibility">
+            <dia:enum val="0"/>
+          </dia:attribute>
+          <dia:attribute name="abstract">
+            <dia:boolean val="false"/>
+          </dia:attribute>
+          <dia:attribute name="class_scope">
+            <dia:boolean val="false"/>
+          </dia:attribute>
+        </dia:composite>
+        <dia:composite type="umlattribute">
+          <dia:attribute name="name">
+            <dia:string>#filename#</dia:string>
+          </dia:attribute>
+          <dia:attribute name="type">
+            <dia:string>##</dia:string>
+          </dia:attribute>
+          <dia:attribute name="value">
+            <dia:string>##</dia:string>
+          </dia:attribute>
+          <dia:attribute name="comment">
+            <dia:string>#The filename for the sheet.#</dia:string>
+          </dia:attribute>
+          <dia:attribute name="visibility">
+            <dia:enum val="0"/>
+          </dia:attribute>
+          <dia:attribute name="abstract">
+            <dia:boolean val="false"/>
+          </dia:attribute>
+          <dia:attribute name="class_scope">
+            <dia:boolean val="false"/>
+          </dia:attribute>
+        </dia:composite>
+        <dia:composite type="umlattribute">
+          <dia:attribute name="name">
+            <dia:string>#name#</dia:string>
+          </dia:attribute>
+          <dia:attribute name="type">
+            <dia:string>##</dia:string>
+          </dia:attribute>
+          <dia:attribute name="value">
+            <dia:string>##</dia:string>
+          </dia:attribute>
+          <dia:attribute name="comment">
+            <dia:string>#The name for the sheet.#</dia:string>
+          </dia:attribute>
+          <dia:attribute name="visibility">
+            <dia:enum val="0"/>
+          </dia:attribute>
+          <dia:attribute name="abstract">
+            <dia:boolean val="false"/>
+          </dia:attribute>
+          <dia:attribute name="class_scope">
+            <dia:boolean val="false"/>
+          </dia:attribute>
+        </dia:composite>
+        <dia:composite type="umlattribute">
+          <dia:attribute name="name">
+            <dia:string>#objects#</dia:string>
+          </dia:attribute>
+          <dia:attribute name="type">
+            <dia:string>##</dia:string>
+          </dia:attribute>
+          <dia:attribute name="value">
+            <dia:string>##</dia:string>
+          </dia:attribute>
+          <dia:attribute name="comment">
+            <dia:string>#The list of sheet objects referenced by the sheet.#</dia:string>
+          </dia:attribute>
+          <dia:attribute name="visibility">
+            <dia:enum val="0"/>
+          </dia:attribute>
+          <dia:attribute name="abstract">
+            <dia:boolean val="false"/>
+          </dia:attribute>
+          <dia:attribute name="class_scope">
+            <dia:boolean val="false"/>
+          </dia:attribute>
+        </dia:composite>
+        <dia:composite type="umlattribute">
+          <dia:attribute name="name">
+            <dia:string>#user#</dia:string>
+          </dia:attribute>
+          <dia:attribute name="type">
+            <dia:string>##</dia:string>
+          </dia:attribute>
+          <dia:attribute name="value">
+            <dia:string>##</dia:string>
+          </dia:attribute>
+          <dia:attribute name="comment">
+            <dia:string>#The sheet scope is user provided, not system.#</dia:string>
+          </dia:attribute>
+          <dia:attribute name="visibility">
+            <dia:enum val="0"/>
+          </dia:attribute>
+          <dia:attribute name="abstract">
+            <dia:boolean val="false"/>
+          </dia:attribute>
+          <dia:attribute name="class_scope">
+            <dia:boolean val="false"/>
+          </dia:attribute>
+        </dia:composite>
+      </dia:attribute>
+      <dia:attribute name="operations"/>
+      <dia:attribute name="template">
+        <dia:boolean val="false"/>
+      </dia:attribute>
+      <dia:attribute name="templates"/>
+    </dia:object>
+    <dia:object type="UML - Association" version="2" id="O50">
+      <dia:attribute name="obj_pos">
+        <dia:point val="62.43,29.3"/>
+      </dia:attribute>
+      <dia:attribute name="obj_bb">
+        <dia:rectangle val="62.38,25.98;72.05,30.18"/>
+      </dia:attribute>
+      <dia:attribute name="meta">
+        <dia:composite type="dict"/>
+      </dia:attribute>
+      <dia:attribute name="orth_points">
+        <dia:point val="62.43,29.3"/>
+        <dia:point val="67.215,29.3"/>
+        <dia:point val="67.215,26.7"/>
+        <dia:point val="72,26.7"/>
+      </dia:attribute>
+      <dia:attribute name="orth_orient">
+        <dia:enum val="0"/>
+        <dia:enum val="1"/>
+        <dia:enum val="0"/>
+      </dia:attribute>
+      <dia:attribute name="orth_autoroute">
+        <dia:boolean val="true"/>
+      </dia:attribute>
+      <dia:attribute name="name">
+        <dia:string>#returns#</dia:string>
+      </dia:attribute>
+      <dia:attribute name="direction">
+        <dia:enum val="1"/>
+      </dia:attribute>
+      <dia:attribute name="show_direction">
+        <dia:boolean val="true"/>
+      </dia:attribute>
+      <dia:attribute name="assoc_type">
+        <dia:enum val="0"/>
+      </dia:attribute>
+      <dia:attribute name="role_a">
+        <dia:string>##</dia:string>
+      </dia:attribute>
+      <dia:attribute name="multipicity_a">
+        <dia:string>##</dia:string>
+      </dia:attribute>
+      <dia:attribute name="visibility_a">
+        <dia:enum val="3"/>
+      </dia:attribute>
+      <dia:attribute name="show_arrow_a">
+        <dia:boolean val="false"/>
+      </dia:attribute>
+      <dia:attribute name="role_b">
+        <dia:string>##</dia:string>
+      </dia:attribute>
+      <dia:attribute name="multipicity_b">
+        <dia:string>##</dia:string>
+      </dia:attribute>
+      <dia:attribute name="visibility_b">
+        <dia:enum val="3"/>
+      </dia:attribute>
+      <dia:attribute name="show_arrow_b">
+        <dia:boolean val="false"/>
+      </dia:attribute>
+      <dia:attribute name="text_font">
+        <dia:font family="monospace" style="0" name="Courier"/>
+      </dia:attribute>
+      <dia:attribute name="text_height">
+        <dia:real val="0.80000000000000004"/>
+      </dia:attribute>
+      <dia:attribute name="text_colour">
+        <dia:color val="#000000ff"/>
+      </dia:attribute>
+      <dia:attribute name="line_width">
+        <dia:real val="0.10000000000000001"/>
+      </dia:attribute>
+      <dia:attribute name="line_colour">
+        <dia:color val="#000000ff"/>
+      </dia:attribute>
+      <dia:connections>
+        <dia:connection handle="0" to="O9" connection="27"/>
+        <dia:connection handle="1" to="O48" connection="3"/>
+      </dia:connections>
+    </dia:object>
+    <dia:object type="UML - Association" version="2" id="O51">
+      <dia:attribute name="obj_pos">
+        <dia:point val="10.2,12.9"/>
+      </dia:attribute>
+      <dia:attribute name="obj_bb">
+        <dia:rectangle val="1.65262,12.18;12.05,18.98"/>
+      </dia:attribute>
+      <dia:attribute name="meta">
+        <dia:composite type="dict"/>
+      </dia:attribute>
+      <dia:attribute name="orth_points">
+        <dia:point val="10.2,12.9"/>
+        <dia:point val="12,12.9"/>
+        <dia:point val="12,16"/>
+        <dia:point val="1.70262,16"/>
+        <dia:point val="1.70262,18.1"/>
+        <dia:point val="4,18.1"/>
+      </dia:attribute>
+      <dia:attribute name="orth_orient">
+        <dia:enum val="0"/>
+        <dia:enum val="1"/>
+        <dia:enum val="0"/>
+        <dia:enum val="1"/>
+        <dia:enum val="0"/>
+      </dia:attribute>
+      <dia:attribute name="orth_autoroute">
+        <dia:boolean val="false"/>
+      </dia:attribute>
+      <dia:attribute name="name">
+        <dia:string>#list of sheets#</dia:string>
+      </dia:attribute>
+      <dia:attribute name="direction">
+        <dia:enum val="0"/>
+      </dia:attribute>
+      <dia:attribute name="show_direction">
+        <dia:boolean val="false"/>
+      </dia:attribute>
+      <dia:attribute name="assoc_type">
+        <dia:enum val="0"/>
+      </dia:attribute>
+      <dia:attribute name="role_a">
+        <dia:string>##</dia:string>
+      </dia:attribute>
+      <dia:attribute name="multipicity_a">
+        <dia:string>##</dia:string>
+      </dia:attribute>
+      <dia:attribute name="visibility_a">
+        <dia:enum val="3"/>
+      </dia:attribute>
+      <dia:attribute name="show_arrow_a">
+        <dia:boolean val="false"/>
+      </dia:attribute>
+      <dia:attribute name="role_b">
+        <dia:string>##</dia:string>
+      </dia:attribute>
+      <dia:attribute name="multipicity_b">
+        <dia:string>##</dia:string>
+      </dia:attribute>
+      <dia:attribute name="visibility_b">
+        <dia:enum val="0"/>
+      </dia:attribute>
+      <dia:attribute name="show_arrow_b">
+        <dia:boolean val="true"/>
+      </dia:attribute>
+      <dia:attribute name="text_font">
+        <dia:font family="monospace" style="0" name="Courier"/>
+      </dia:attribute>
+      <dia:attribute name="text_height">
+        <dia:real val="0.80000000000000004"/>
+      </dia:attribute>
+      <dia:attribute name="text_colour">
+        <dia:color val="#000000ff"/>
+      </dia:attribute>
+      <dia:attribute name="line_width">
+        <dia:real val="0.10000000000000001"/>
+      </dia:attribute>
+      <dia:attribute name="line_colour">
+        <dia:color val="#000000ff"/>
+      </dia:attribute>
+      <dia:connections>
+        <dia:connection handle="0" to="O43" connection="33"/>
+        <dia:connection handle="1" to="O49" connection="3"/>
+      </dia:connections>
+    </dia:object>
+    <dia:object type="UML - Association" version="2" id="O52">
+      <dia:attribute name="obj_pos">
+        <dia:point val="9.505,22.1"/>
+      </dia:attribute>
+      <dia:attribute name="obj_bb">
+        <dia:rectangle val="0.95,21.38;10.85,30.58"/>
+      </dia:attribute>
+      <dia:attribute name="meta">
+        <dia:composite type="dict"/>
+      </dia:attribute>
+      <dia:attribute name="orth_points">
+        <dia:point val="9.505,22.1"/>
+        <dia:point val="10.8,22.1"/>
+        <dia:point val="10.8,25"/>
+        <dia:point val="1,25"/>
+        <dia:point val="1,29.7"/>
+        <dia:point val="5,29.7"/>
+      </dia:attribute>
+      <dia:attribute name="orth_orient">
+        <dia:enum val="0"/>
+        <dia:enum val="1"/>
+        <dia:enum val="0"/>
+        <dia:enum val="1"/>
+        <dia:enum val="0"/>
+      </dia:attribute>
+      <dia:attribute name="orth_autoroute">
+        <dia:boolean val="false"/>
+      </dia:attribute>
+      <dia:attribute name="name">
+        <dia:string>#list of object types#</dia:string>
+      </dia:attribute>
+      <dia:attribute name="direction">
+        <dia:enum val="0"/>
+      </dia:attribute>
+      <dia:attribute name="show_direction">
+        <dia:boolean val="false"/>
+      </dia:attribute>
+      <dia:attribute name="assoc_type">
+        <dia:enum val="0"/>
+      </dia:attribute>
+      <dia:attribute name="role_a">
+        <dia:string>##</dia:string>
+      </dia:attribute>
+      <dia:attribute name="multipicity_a">
+        <dia:string>##</dia:string>
+      </dia:attribute>
+      <dia:attribute name="visibility_a">
+        <dia:enum val="3"/>
+      </dia:attribute>
+      <dia:attribute name="show_arrow_a">
+        <dia:boolean val="false"/>
+      </dia:attribute>
+      <dia:attribute name="role_b">
+        <dia:string>##</dia:string>
+      </dia:attribute>
+      <dia:attribute name="multipicity_b">
+        <dia:string>##</dia:string>
+      </dia:attribute>
+      <dia:attribute name="visibility_b">
+        <dia:enum val="0"/>
+      </dia:attribute>
+      <dia:attribute name="show_arrow_b">
+        <dia:boolean val="true"/>
+      </dia:attribute>
+      <dia:attribute name="text_font">
+        <dia:font family="monospace" style="0" name="Courier"/>
+      </dia:attribute>
+      <dia:attribute name="text_height">
+        <dia:real val="0.80000000000000004"/>
+      </dia:attribute>
+      <dia:attribute name="text_colour">
+        <dia:color val="#000000ff"/>
+      </dia:attribute>
+      <dia:attribute name="line_width">
+        <dia:real val="0.10000000000000001"/>
+      </dia:attribute>
+      <dia:attribute name="line_colour">
+        <dia:color val="#000000ff"/>
+      </dia:attribute>
+      <dia:connections>
+        <dia:connection handle="0" to="O49" connection="15"/>
+        <dia:connection handle="1" to="O10" connection="3"/>
+      </dia:connections>
+    </dia:object>
   </dia:layer>
 </dia:diagram>


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]