diff --git a/doc/Makefile b/doc/Makefile
new file mode 100644
--- /dev/null
+++ b/doc/Makefile
@@ -0,0 +1,18 @@
+.SUFFIXES : .rst .html .pdf
+
+.rst.pdf :
+ rst2pdf -s stylesheet.json $< -o $@
+
+.rst.html :
+ rst2html.py $< $@
+
+all: v1.pdf v1.html
+
+v1.pdf : v1.rst
+
+v1.html : v1.rst
+
+clean:
+ /bin/rm -f v1.pdf v1.html
+
+#finis
\ No newline at end of file
diff --git a/doc/stylesheet.json b/doc/stylesheet.json
new file mode 100644
--- /dev/null
+++ b/doc/stylesheet.json
@@ -0,0 +1,557 @@
+{
+ "embeddedFonts" : [ ],
+ "pageSetup" : {
+ "size": "A4",
+ "width": null,
+ "height": null,
+ "margin-top": "2cm",
+ "margin-bottom": "2cm",
+ "margin-left": "2cm",
+ "margin-right": "2cm",
+ "margin-gutter": "0cm",
+ "spacing-header": "5mm",
+ "spacing-footer": "5mm",
+ "firstTemplate": "oneColumn"
+ },
+ "pageTemplates" : {
+ "coverPage": {
+ "frames": [
+ ["0cm", "0cm", "100%", "100%"]
+ ],
+ "showHeader" : false,
+ "showFooter" : false
+ },
+ "oneColumn": {
+ "frames": [
+ ["0cm", "0cm", "100%", "100%"]
+ ],
+ "showHeader" : true,
+ "showFooter" : true
+ },
+ "twoColumn": {
+ "frames": [
+ ["0cm", "0cm", "49%", "100%"],
+ ["51%", "0cm", "49%", "100%"]
+ ],
+ "showHeader" : true,
+ "showFooter" : true
+ },
+ "threeColumn": {
+ "frames": [
+ ["2%", "0cm", "29.333%", "100%"],
+ ["35.333%", "0cm", "29.333%", "100%"],
+ ["68.666%", "0cm", "29.333%", "100%"]
+ ],
+ "showHeader" : true,
+ "showFooter" : true
+ },
+ "cutePage": {
+ "frames": [
+ ["0%", "0%", "100%", "100%"]
+ ],
+ "showHeader" : true,
+ "showFooter" : true,
+ "defaultFooter" : "###Page###",
+ "defaultHeader" : "###Section###"
+ }
+ },
+ "fontsAlias" : {
+ "stdFont": "Helvetica",
+ "stdBold": "Helvetica-Bold",
+ "stdItalic": "Helvetica-Oblique",
+ "stdBoldItalic": "Helvetica-BoldOblique",
+ "stdSans": "Helvetica",
+ "stdSansBold": "Helvetica-Bold",
+ "stdSansItalic": "Helvetica-Oblique",
+ "stdSansBoldItalic": "Helvetica-BoldOblique",
+ "stdMono": "Courier",
+ "stdMonoItalic": "Courier-Oblique",
+ "stdMonoBold": "Courier-Bold",
+ "stdMonoBoldItalic": "Courier-BoldOblique",
+ "stdSerif": "Times-Roman"
+ },
+ "linkColor" : "navy",
+ "styles" : [
+ [ "base" , {
+ "parent": null,
+ "fontName": "stdFont",
+ "fontSize":10,
+ "leading":12,
+ "leftIndent":0,
+ "rightIndent":0,
+ "firstLineIndent":0,
+ "alignment":"TA_LEFT",
+ "spaceBefore":0,
+ "spaceAfter":0,
+ "bulletFontName":"stdFont",
+ "bulletFontSize":10,
+ "bulletIndent":0,
+ "textColor": "black",
+ "backColor": null,
+ "wordWrap": null,
+ "borderWidth": 0,
+ "borderPadding": 0,
+ "borderColor": null,
+ "borderRadius": null,
+ "allowWidows": false,
+ "allowOrphans": false,
+ "hyphenation": false,
+ "kerning": false
+ }] ,
+ ["normal" , {
+ "parent": "base"
+ }],
+ ["title_reference" , {
+ "parent": "normal",
+ "fontName": "stdItalic"
+ }],
+ ["bodytext" , {
+ "parent": "normal",
+ "spaceBefore":6,
+ "alignment": "TA_JUSTIFY",
+ "hyphenation": true
+ }],
+ ["toc" , {
+ "parent": "normal"
+ }],
+ ["blockquote" , {
+ "parent": "bodytext",
+ "leftIndent": 20
+ }],
+ ["lineblock" , {
+ "parent": "bodytext"
+ }],
+ ["toc1" , {
+ "parent": "toc",
+ "fontName": "stdBold"
+ }],
+ ["toc2" , {
+ "parent": "toc",
+ "leftIndent": 20
+ }],
+ ["toc3" , {
+ "parent": "toc",
+ "leftIndent": 40
+ }],
+ ["toc4" , {
+ "parent": "toc",
+ "leftIndent": 60
+ }],
+ ["toc5" , {
+ "parent": "toc",
+ "leftIndent": 80
+ }],
+ ["toc6" , {
+ "parent": "toc",
+ "leftIndent": 100
+ }],
+ ["toc7" , {
+ "parent": "toc",
+ "leftIndent": 100
+ }],
+ ["toc8" , {
+ "parent": "toc",
+ "leftIndent": 100
+ }],
+ ["toc9" , {
+ "parent": "toc",
+ "leftIndent": 100
+ }],
+ ["toc10" , {
+ "parent": "toc",
+ "leftIndent": 100
+ }],
+ ["toc11" , {
+ "parent": "toc",
+ "leftIndent": 100
+ }],
+ ["toc12" , {
+ "parent": "toc",
+ "leftIndent": 100
+ }],
+ ["toc13" , {
+ "parent": "toc",
+ "leftIndent": 100
+ }],
+ ["toc14" , {
+ "parent": "toc",
+ "leftIndent": 100
+ }],
+ ["toc15" , {
+ "parent": "toc",
+ "leftIndent": 100
+ }],
+ ["footer" , {
+ "parent": "normal",
+ "alignment": "TA_CENTER"
+ }],
+ ["header" , {
+ "parent": "normal",
+ "alignment": "TA_CENTER"
+ }],
+ ["attribution" , {
+ "parent": "bodytext",
+ "alignment": "TA_RIGHT"
+ }],
+ ["figure" , {
+ "parent": "bodytext",
+ "alignment": "TA_CENTER"
+ }],
+ ["figure-caption" , {
+ "parent": "bodytext",
+ "fontName": "stdItalic",
+ "alignment": "TA_CENTER"
+ }],
+ ["figure-legend" , {
+ "parent": "bodytext",
+ "alignment": "TA_CENTER"
+ }],
+ ["bullet_list_item" , {
+ "parent": "bodytext",
+ "spaceBefore":-3
+ }],
+ ["item_list_item" , {
+ "parent": "bodytext",
+ "spaceBefore":-3
+ }],
+ ["enumerated_list" , {
+ "parent": "bodytext",
+ "spaceBefore": 0
+ }],
+ ["enumerated_list_item" , {
+ "parent": "bodytext"
+ }],
+ ["definition_list_term" , {
+ "parent": "normal",
+ "fontName": "stdBold",
+ "spaceBefore": 4,
+ "spaceAfter": 0,
+ "keepWithNext": true
+ }],
+ ["definition_list_classifier" , {
+ "parent": "normal",
+ "fontName": "stdItalic"
+ }],
+ ["definition" , {
+ "parent": "bodytext",
+ "firstLineIndent": 0,
+ "bulletIndent": 0,
+ "spaceBefore": 0
+ }],
+ ["fieldname" , {
+ "parent": "bodytext",
+ "alignment": "TA_RIGHT",
+ "fontName": "stdBold"
+ }],
+ ["fieldvalue" , {
+ "parent": "bodytext"
+ }],
+ ["rubric" , {
+ "parent": "bodytext",
+ "textColor": "darkred",
+ "alignment": "TA_CENTER"
+ }],
+ ["italic" , {
+ "parent": "bodytext",
+ "fontName": "stdItalic"
+ }],
+ ["heading" , {
+ "parent": "normal",
+ "keepWithNext": true,
+ "spaceBefore": 12,
+ "spaceAfter": 6
+ }],
+ ["title" , {
+ "parent": "heading",
+ "fontName": "stdBold",
+ "fontSize": "200%",
+ "alignment": "TA_LEFT",
+ "keepWithNext": false,
+ "spaceAfter": 10
+ }],
+ ["subtitle" , {
+ "parent": "title",
+ "spaceBefore": 12,
+ "fontSize": "75%"
+ }],
+ ["heading1" , {
+ "parent": "heading",
+ "fontName": "stdBold",
+ "fontSize": "175%"
+ }],
+ ["heading2" , {
+ "parent": "heading",
+ "fontName": "stdBold",
+ "fontSize": "150%"
+ }],
+ ["heading3" , {
+ "parent": "heading",
+ "fontName": "stdBoldItalic",
+ "fontSize": "125%"
+ }],
+ ["heading4" , {
+ "parent": "heading",
+ "fontName": "stdBoldItalic"
+ }],
+ ["heading5" , {
+ "parent": "heading",
+ "fontName": "stdBoldItalic"
+ }],
+ ["heading6" , {
+ "parent": "heading",
+ "fontName": "stdBoldItalic"
+ }],
+ ["topic-title" , {
+ "parent": "heading3"
+ }],
+ ["sidebar-title" , {
+ "parent": "heading3"
+ }],
+ ["sidebar-subtitle" , {
+ "parent": "heading4"
+ }],
+ ["sidebar" , {
+ "float": "none",
+ "width": "100%",
+ "parent": "normal",
+ "backColor": "beige",
+ "borderColor": "darkgray",
+ "borderPadding": 8,
+ "borderWidth": 0.5
+ }],
+ ["admonition" , {
+ "parent": "normal",
+ "spaceBefore": 12,
+ "spaceAfter": 6,
+ "borderPadding": [16,16,16,16],
+ "backColor": "beige",
+ "borderColor": "darkgray",
+ "borderWidth": 0.5,
+ "commands":[
+ [ "VALIGN", [ 0, 0 ], [ -1, -1 ], "TOP" ]
+ ]
+ }],
+ ["attention" , {
+ "parent": "admonition"
+ }],
+ ["caution" , {
+ "parent": "admonition"
+ }],
+ ["danger" , {
+ "parent": "admonition"
+ }],
+ ["error" , {
+ "parent": "admonition"
+ }],
+ ["hint" , {
+ "parent": "admonition"
+ }],
+ ["important" , {
+ "parent": "admonition"
+ }],
+ ["note" , {
+ "parent": "admonition"
+ }],
+ ["tip" , {
+ "parent": "admonition"
+ }],
+ ["warning" , {
+ "parent": "admonition"
+ }],
+ ["admonition-title" , {
+ "parent": "heading3"
+ }],
+ ["admonition-heading" , {
+ "parent": "heading3"
+ }],
+ ["attention-heading" , {
+ "parent": "admonition-heading"
+ }],
+ ["caution-heading" , {
+ "parent": "admonition-heading"
+ }],
+ ["danger-heading" , {
+ "parent": "admonition-heading"
+ }],
+ ["error-heading" , {
+ "parent": "admonition-heading"
+ }],
+ ["hint-heading" , {
+ "parent": "admonition-heading"
+ }],
+ ["important-heading" , {
+ "parent": "admonition-heading"
+ }],
+ ["note-heading" , {
+ "parent": "admonition-heading"
+ }],
+ ["tip-heading" , {
+ "parent": "admonition-heading"
+ }],
+ ["warning-heading" , {
+ "parent": "admonition-heading"
+ }],
+ ["literal" , {
+ "parent": "normal",
+ "fontName": "stdMono",
+ "firstLineIndent": 0,
+ "hyphenation": false
+ }],
+ ["aafigure" , {
+ "parent": "literal"
+ }],
+ ["table" , {
+ "spaceBefore":6,
+ "spaceAfter":0,
+ "commands": [
+ [ "VALIGN", [ 0, 0 ], [ -1, -1 ], "TOP" ],
+ [ "INNERGRID", [ 0, 0 ], [ -1, -1 ], 0.25, "black" ],
+ [ "ROWBACKGROUNDS", [0, 0], [-1, -1], ["white","#E0E0E0"]],
+ [ "BOX", [ 0, 0 ], [ -1, -1 ], 0.25, "black" ]
+ ]
+ }],
+ ["table-title" , {
+ "parent" : "heading4",
+ "alignment" : "TA_CENTER"
+ }],
+ ["table-heading" , {
+ "parent" : "heading",
+ "backColor" : "beige",
+ "alignment" : "TA_CENTER",
+ "valign" : "BOTTOM",
+ "borderPadding" : 0
+ }],
+ ["dedication" , {
+ "parent" : "normal"
+ }],
+ ["abstract" , {
+ "parent" : "normal"
+ }],
+ ["contents" , {
+ "parent" : "normal"
+ }],
+ ["tableofcontents" , {
+ "parent" : "normal"
+ }],
+ ["code" , {
+ "parent": "literal",
+ "leftIndent": 0,
+ "spaceBefore": 8,
+ "spaceAfter": 8,
+ "backColor": "beige",
+ "borderColor": "darkgray",
+ "borderWidth": 0.5,
+ "borderPadding": 6
+ }],
+ ["pygments-n" , {"parent": "code"}],
+ ["pygments-nx" , {"parent": "code"}],
+ ["pygments-p" , {"parent": "code"}],
+ ["pygments-hll", {"parent": "code", "backColor": "#ffffcc"}],
+ ["pygments-c", {"textColor": "#008800", "parent": "code"}],
+ ["pygments-err", {"parent": "code"}],
+ ["pygments-k", {"textColor": "#AA22FF", "parent": "code"}],
+ ["pygments-o", {"textColor": "#666666", "parent": "code"}],
+ ["pygments-cm", {"textColor": "#008800", "parent": "code"}],
+ ["pygments-cp", {"textColor": "#008800", "parent": "code"}],
+ ["pygments-c1", {"textColor": "#008800", "parent": "code"}],
+ ["pygments-cs", {"textColor": "#008800", "parent": "code"}],
+ ["pygments-gd", {"textColor": "#A00000", "parent": "code"}],
+ ["pygments-ge", {"parent": "code"}],
+ ["pygments-gr", {"textColor": "#FF0000", "parent": "code"}],
+ ["pygments-gh", {"textColor": "#000080", "parent": "code"}],
+ ["pygments-gi", {"textColor": "#00A000", "parent": "code"}],
+ ["pygments-go", {"textColor": "#808080", "parent": "code"}],
+ ["pygments-gp", {"textColor": "#000080", "parent": "code"}],
+ ["pygments-gs", {"parent": "code"}],
+ ["pygments-gu", {"textColor": "#800080", "parent": "code"}],
+ ["pygments-gt", {"textColor": "#0040D0", "parent": "code"}],
+ ["pygments-kc", {"textColor": "#AA22FF", "parent": "code"}],
+ ["pygments-kd", {"textColor": "#AA22FF", "parent": "code"}],
+ ["pygments-kn", {"textColor": "#AA22FF", "parent": "code"}],
+ ["pygments-kp", {"textColor": "#AA22FF", "parent": "code"}],
+ ["pygments-kr", {"textColor": "#AA22FF", "parent": "code"}],
+ ["pygments-kt", {"textColor": "#00BB00", "parent": "code"}],
+ ["pygments-m", {"textColor": "#666666", "parent": "code"}],
+ ["pygments-s", {"textColor": "#BB4444", "parent": "code"}],
+ ["pygments-na", {"textColor": "#BB4444", "parent": "code"}],
+ ["pygments-nb", {"textColor": "#AA22FF", "parent": "code"}],
+ ["pygments-nc", {"textColor": "#0000FF", "parent": "code"}],
+ ["pygments-no", {"textColor": "#880000", "parent": "code"}],
+ ["pygments-nd", {"textColor": "#AA22FF", "parent": "code"}],
+ ["pygments-ni", {"textColor": "#999999", "parent": "code"}],
+ ["pygments-ne", {"textColor": "#D2413A", "parent": "code"}],
+ ["pygments-nf", {"textColor": "#00A000", "parent": "code"}],
+ ["pygments-nl", {"textColor": "#A0A000", "parent": "code"}],
+ ["pygments-nn", {"textColor": "#0000FF", "parent": "code"}],
+ ["pygments-nt", {"textColor": "#008000", "parent": "code"}],
+ ["pygments-nv", {"textColor": "#B8860B", "parent": "code"}],
+ ["pygments-ow", {"textColor": "#AA22FF", "parent": "code"}],
+ ["pygments-w", {"textColor": "#bbbbbb", "parent": "code"}],
+ ["pygments-mf", {"textColor": "#666666", "parent": "code"}],
+ ["pygments-mh", {"textColor": "#666666", "parent": "code"}],
+ ["pygments-mi", {"textColor": "#666666", "parent": "code"}],
+ ["pygments-mo", {"textColor": "#666666", "parent": "code"}],
+ ["pygments-sb", {"textColor": "#BB4444", "parent": "code"}],
+ ["pygments-sc", {"textColor": "#BB4444", "parent": "code"}],
+ ["pygments-sd", {"textColor": "#BB4444", "parent": "code"}],
+ ["pygments-s2", {"textColor": "#BB4444", "parent": "code"}],
+ ["pygments-se", {"textColor": "#BB6622", "parent": "code"}],
+ ["pygments-sh", {"textColor": "#BB4444", "parent": "code"}],
+ ["pygments-si", {"textColor": "#BB6688", "parent": "code"}],
+ ["pygments-sx", {"textColor": "#008000", "parent": "code"}],
+ ["pygments-sr", {"textColor": "#BB6688", "parent": "code"}],
+ ["pygments-s1", {"textColor": "#BB4444", "parent": "code"}],
+ ["pygments-ss", {"textColor": "#B8860B", "parent": "code"}],
+ ["pygments-bp", {"textColor": "#AA22FF", "parent": "code"}],
+ ["pygments-vc", {"textColor": "#B8860B", "parent": "code"}],
+ ["pygments-vg", {"textColor": "#B8860B", "parent": "code"}],
+ ["pygments-vi", {"textColor": "#B8860B", "parent": "code"}],
+ ["pygments-il", {"textColor": "#666666", "parent": "code"}],
+
+ ["item_list", {
+ "parent": "bodytext",
+ "spaceBefore": 0,
+ "commands": [
+ [ "VALIGN", [ 0, 0 ], [ -1, -1 ], "TOP" ],
+ [ "RIGHTPADDING", [ 0, 0 ], [ 1, -1 ], 0 ]
+ ],
+ "colWidths": ["20pt",null]
+ }],
+ ["bullet_list", {
+ "parent": "bodytext",
+ "spaceBefore": 0,
+ "commands": [
+ [ "VALIGN", [ 0, 0 ], [ -1, -1 ], "TOP" ],
+ [ "RIGHTPADDING", [ 0, 0 ], [ 1, -1 ], 0 ]
+ ],
+ "colWidths": ["20",null]
+ }],
+ [ "endnote", {
+ "parent": "bodytext",
+ "commands": [
+ [ "VALIGN", [ 0, 0 ], [ -1, -1 ], "TOP" ],
+ [ "TOPPADDING", [ 0, 0 ], [ -1, -1 ], 0 ],
+ [ "BOTTOMPADDING", [ 0, 0 ], [ -1, -1 ], 0 ],
+ [ "RIGHTPADDING", [ 0, 0 ], [ 1, -1 ], 0 ]
+ ],
+ "colWidths": ["3cm",null]
+ }],
+ [ "field_list", {
+ "parent": "bodytext",
+ "commands": [
+ [ "VALIGN", [ 0, 0 ], [ -1, -1 ], "TOP" ],
+ [ "TOPPADDING", [ 0, 0 ], [ -1, -1 ], 0 ]
+ ],
+ "colWidths": ["3cm",null],
+ "spaceBefore": 6
+ }],
+ [ "option_list", {
+ "commands": [
+ [ "VALIGN", [ 0, 0 ], [ -1, -1 ], "TOP" ],
+ [ "TOPPADDING", [ 0, 0 ], [ -1, -1 ], 0 ]
+ ],
+ "colWidths": [null,null]
+ }]
+ ]
+}
+
diff --git a/doc/v1.html b/doc/v1.html
new file mode 100644
--- /dev/null
+++ b/doc/v1.html
@@ -0,0 +1,469 @@
+
+
+
+
+
+
+The Virtual Leaf
+
+
+
+
+
+
The Virtual Leaf
+
+
+
Friday 11 June 2010
+
Issues:
+
+
+Every class that has an association or composition eventually will
+need its own custom view page template, e.g. sed_view. For the moment
+I have set the default view for these classes to dev_view ( a copy of
+base_view ).
+
+An association in UML is cast as a ReferenceField in the resulting
+class schema. Open the association and add the widget:label tag to
+the class that is being associated.
+
+The default description text for a class should be a informative
+description of the class, not the instance, derived from the
+SED-ML manual.
+
+Apply 'searchable' tags to the appropriate class attributes.
+
+I choose 'isTidyHtmlWithCleanup' as the MathML validator. Will
+this work?
+
+What should be added to our implementation of SED-ML to make it
+more than merely a mirror image of the SED-ML XML format?
+
+
+- The ability to attach files at various points, e.g. parameter files.
+- Additional output types, e.g. animations.
+- Custom page templates
+- Custom search form
+- Custom catalog indexes
+- Custom portlet(s)
+- Custom viewlet(s)
+
+
+
+
+
+
+
+
Friday 24 September 2010
+
+- To Do:
+
+- Publish our mercurial repositories (Chris/Martin). This may mesh with deploying Plone.
+- Create a vleaf mailing list (Henk).
+
+
+
+
Found an article on SBRML - a markup language for associating systems
+biology data with models. At a glance the schema seems bigger than
+SED-ML's, but SBRML appears to be SBML specific.
+
+
+
Monday 27 September 2010
+
Spoke with Chris about publishing the Mercurial repositories and
+deploying Plone. Both can be accomplished in their own project space
+on a server in the DMZ. Chris said he would supply me with login
+credentials for both accounts. I will install Plone and Chris (or
+Maarten) will help me configure Apache/nginx and Varnish. Chris will
+install the required Mercurial packages; after which I can clone the
+repositories to their new home.
+
+
+
Tuesday 5 October 20010
+
+
tutorial0.pro
+
Added simplugin.h to list of header files. NB: this is the only
+tutorial in which simplugin.h appears.
+
+
+
auxingrowthplugin.h
+
Declared, and defined, a virtual function named DefaultLeafML()
+which merely returns a QString naming a LeafML filename sans path.
+
+
+
VirtualLeaf.cpp
+
Moved Cell::SetMagnification() and Cell::SetOffset() from
+main() to MainBase::Init().
+
+
+
canvas.h
+
Declare exportCellData().
+
+
+
canvas.cpp
+
Add an 'Export cell areas' to the file dropdown menu which invokes - surprise - Main::exportCellData():
+
+void Main::exportCellData(void) {
+ QFile file("areas.csv");
+ if ( file.open( IO_WriteOnly ) ) {
+ QTextStream stream( &file );
+ mesh.CSVExportCellData(stream);
+ mesh.CSVExportMeshData(stream);
+ file.close();
+ }
+}
+
+
+
+
mesh.h
+
Include <QTextStream>
+
Set the boundary_poloygon pointer to zero in the class constructor,
+and delete it, if it exists, in the class destructor.
+
Declare Compactness(), CSVExportCellData() and CSVExportMeshData():
+
+double Compactness(double *res_compactness=0, double *res_area=0, double *res_cell_area=0);
+void CSVExportCellData(QTextStream &csv_stream) const;
+void CSVExportMeshData(QTextStream &csv_stream);
+
+
+
+
mesh.cpp
+
In mesh::clear(), delete the boundary_polygon only if the pointer hasn't been assigned:
+
+if (boundary_polygon) {
+ delete boundary_polygon;
+ boundary_polygon=0;
+ }
+
+
Ditto for mesh::clean().
+
Define the code for Compactness(), CSVExportCellData() and CSVExportMeshData().
+
+
+
modelcatalogue.cpp
+
In InstallModel(), find and load the default LeafML file.
+
+
+
simplugin.h
+
Declare DefaultLeafML():
+
+// Default LeafML-file to be read after model startup
+virtual QString DefaultLeafML(void);
+
+
+
+
simplugin.cpp
+
Define DefaultLeafML(). Returns an empty QString:
+
+QString SimPluginInterface::DefaultLeafML(void) { return QString(); }
+
+
+
+
xmlwrite.cpp
+
In Mesh::XMLReadCells() - Delete the boundary_ploygon only if its
+pointer has been assigned.
+
+
+
+
+
+
diff --git a/doc/v1.pdf b/doc/v1.pdf
new file mode 100644
--- /dev/null
+++ b/doc/v1.pdf
@@ -0,0 +1,1229 @@
+%PDF-1.3
+%“Œ‹ž ReportLab Generated PDF document http://www.reportlab.com
+% 'BasicFonts': class PDFDictionary
+1 0 obj
+% The standard fonts dictionary
+<< /F1 2 0 R
+ /F2 3 0 R
+ /F3 5 0 R >>
+endobj
+% 'F1': class PDFType1Font
+2 0 obj
+% Font Helvetica
+<< /BaseFont /Helvetica
+ /Encoding /WinAnsiEncoding
+ /Name /F1
+ /Subtype /Type1
+ /Type /Font >>
+endobj
+% 'F2': class PDFType1Font
+3 0 obj
+% Font Helvetica-Bold
+<< /BaseFont /Helvetica-Bold
+ /Encoding /WinAnsiEncoding
+ /Name /F2
+ /Subtype /Type1
+ /Type /Font >>
+endobj
+% 'Page1': class PDFPage
+4 0 obj
+% Page dictionary
+<< /Contents 27 0 R
+ /MediaBox [ 0
+ 0
+ 595.2756
+ 841.8898 ]
+ /Parent 26 0 R
+ /Resources << /Font 1 0 R
+ /ProcSet [ /PDF
+ /Text
+ /ImageB
+ /ImageC
+ /ImageI ] >>
+ /Rotate 0
+ /Trans << >>
+ /Type /Page >>
+endobj
+% 'F3': class PDFType1Font
+5 0 obj
+% Font Courier
+<< /BaseFont /Courier
+ /Encoding /WinAnsiEncoding
+ /Name /F3
+ /Subtype /Type1
+ /Type /Font >>
+endobj
+% 'Page2': class PDFPage
+6 0 obj
+% Page dictionary
+<< /Contents 28 0 R
+ /MediaBox [ 0
+ 0
+ 595.2756
+ 841.8898 ]
+ /Parent 26 0 R
+ /Resources << /Font 1 0 R
+ /ProcSet [ /PDF
+ /Text
+ /ImageB
+ /ImageC
+ /ImageI ] >>
+ /Rotate 0
+ /Trans << >>
+ /Type /Page >>
+endobj
+% 'Page3': class PDFPage
+7 0 obj
+% Page dictionary
+<< /Contents 29 0 R
+ /MediaBox [ 0
+ 0
+ 595.2756
+ 841.8898 ]
+ /Parent 26 0 R
+ /Resources << /Font 1 0 R
+ /ProcSet [ /PDF
+ /Text
+ /ImageB
+ /ImageC
+ /ImageI ] >>
+ /Rotate 0
+ /Trans << >>
+ /Type /Page >>
+endobj
+% 'R8': class PDFCatalog
+8 0 obj
+% Document Root
+<< /Outlines 10 0 R
+ /PageLabels 30 0 R
+ /PageMode /UseNone
+ /Pages 26 0 R
+ /Type /Catalog >>
+endobj
+% 'R9': class PDFInfo
+9 0 obj
+<< /Author ()
+ /CreationDate (D:20101005155533-01'00')
+ /Keywords ()
+ /Producer (ReportLab http://www.reportlab.com)
+ /Subject (\(unspecified\))
+ /Title (The Virtual Leaf) >>
+endobj
+% 'R10': class PDFOutlines
+10 0 obj
+<< /Count 16
+ /First 11 0 R
+ /Last 14 0 R
+ /Type /Outlines >>
+endobj
+% 'Outline.0': class OutlineEntryObject
+11 0 obj
+<< /Dest [ 4 0 R
+ /XYZ
+ 62.69291
+ 717.0236
+ 0 ]
+ /Next 12 0 R
+ /Parent 10 0 R
+ /Title (Friday 11 June 2010) >>
+endobj
+% 'Outline.1': class OutlineEntryObject
+12 0 obj
+<< /Dest [ 4 0 R
+ /XYZ
+ 62.69291
+ 393.0236
+ 0 ]
+ /Next 13 0 R
+ /Parent 10 0 R
+ /Prev 11 0 R
+ /Title (Friday 24 September 2010) >>
+endobj
+% 'Outline.2': class OutlineEntryObject
+13 0 obj
+<< /Dest [ 4 0 R
+ /XYZ
+ 62.69291
+ 273.0236
+ 0 ]
+ /Next 14 0 R
+ /Parent 10 0 R
+ /Prev 12 0 R
+ /Title (Monday 27 September 2010) >>
+endobj
+% 'Outline.3': class OutlineEntryObject
+14 0 obj
+<< /Count 11
+ /Dest [ 4 0 R
+ /XYZ
+ 62.69291
+ 174.0236
+ 0 ]
+ /First 15 0 R
+ /Last 25 0 R
+ /Parent 10 0 R
+ /Prev 13 0 R
+ /Title (Tuesday 5 October 20010) >>
+endobj
+% 'Outline.16.0': class OutlineEntryObject
+15 0 obj
+<< /Dest [ 4 0 R
+ /XYZ
+ 62.69291
+ 141.0236
+ 0 ]
+ /Next 16 0 R
+ /Parent 14 0 R
+ /Title (tutorial0.pro) >>
+endobj
+% 'Outline.16.1': class OutlineEntryObject
+16 0 obj
+<< /Dest [ 6 0 R
+ /XYZ
+ 62.69291
+ 753.0236
+ 0 ]
+ /Next 17 0 R
+ /Parent 14 0 R
+ /Prev 15 0 R
+ /Title (auxingrowthplugin.h) >>
+endobj
+% 'Outline.16.2': class OutlineEntryObject
+17 0 obj
+<< /Dest [ 6 0 R
+ /XYZ
+ 62.69291
+ 693.0236
+ 0 ]
+ /Next 18 0 R
+ /Parent 14 0 R
+ /Prev 16 0 R
+ /Title (VirtualLeaf.cpp) >>
+endobj
+% 'Outline.16.3': class OutlineEntryObject
+18 0 obj
+<< /Dest [ 6 0 R
+ /XYZ
+ 62.69291
+ 633.0236
+ 0 ]
+ /Next 19 0 R
+ /Parent 14 0 R
+ /Prev 17 0 R
+ /Title (canvas.h) >>
+endobj
+% 'Outline.16.4': class OutlineEntryObject
+19 0 obj
+<< /Dest [ 6 0 R
+ /XYZ
+ 62.69291
+ 585.0236
+ 0 ]
+ /Next 20 0 R
+ /Parent 14 0 R
+ /Prev 18 0 R
+ /Title (canvas.cpp) >>
+endobj
+% 'Outline.16.5': class OutlineEntryObject
+20 0 obj
+<< /Dest [ 6 0 R
+ /XYZ
+ 62.69291
+ 395.8236
+ 0 ]
+ /Next 21 0 R
+ /Parent 14 0 R
+ /Prev 19 0 R
+ /Title (mesh.h) >>
+endobj
+% 'Outline.16.6': class OutlineEntryObject
+21 0 obj
+<< /Dest [ 6 0 R
+ /XYZ
+ 62.69291
+ 250.4814
+ 0 ]
+ /Next 22 0 R
+ /Parent 14 0 R
+ /Prev 20 0 R
+ /Title (mesh.cpp) >>
+endobj
+% 'Outline.16.7': class OutlineEntryObject
+22 0 obj
+<< /Dest [ 7 0 R
+ /XYZ
+ 62.69291
+ 753.0236
+ 0 ]
+ /Next 23 0 R
+ /Parent 14 0 R
+ /Prev 21 0 R
+ /Title (modelcatalogue.cpp) >>
+endobj
+% 'Outline.16.8': class OutlineEntryObject
+23 0 obj
+<< /Dest [ 7 0 R
+ /XYZ
+ 62.69291
+ 705.0236
+ 0 ]
+ /Next 24 0 R
+ /Parent 14 0 R
+ /Prev 22 0 R
+ /Title (simplugin.h) >>
+endobj
+% 'Outline.16.9': class OutlineEntryObject
+24 0 obj
+<< /Dest [ 7 0 R
+ /XYZ
+ 62.69291
+ 611.8236
+ 0 ]
+ /Next 25 0 R
+ /Parent 14 0 R
+ /Prev 23 0 R
+ /Title (simplugin.cpp) >>
+endobj
+% 'Outline.16.10': class OutlineEntryObject
+25 0 obj
+<< /Dest [ 7 0 R
+ /XYZ
+ 62.69291
+ 530.6236
+ 0 ]
+ /Parent 14 0 R
+ /Prev 24 0 R
+ /Title (xmlwrite.cpp) >>
+endobj
+% 'R26': class PDFPages
+26 0 obj
+% page tree
+<< /Count 3
+ /Kids [ 4 0 R
+ 6 0 R
+ 7 0 R ]
+ /Type /Pages >>
+endobj
+% 'R27': class PDFStream
+27 0 obj
+% page stream
+<< /Length 8892 >>
+stream
+1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET
+q
+1 0 0 1 62.69291 729.0236 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 9.64 Tm /F2 20 Tf 24 TL (The Virtual Leaf) Tj T* ET
+Q
+Q
+q
+1 0 0 1 62.69291 696.0236 cm
+q
+BT 1 0 0 1 0 8.435 Tm 21 TL /F2 17.5 Tf 0 0 0 rg (Friday 11 June 2010) Tj T* ET
+Q
+Q
+q
+1 0 0 1 62.69291 678.0236 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Issues:) Tj T* ET
+Q
+Q
+q
+1 0 0 1 62.69291 672.0236 cm
+Q
+q
+1 0 0 1 62.69291 405.0236 cm
+0 0 0 rg
+BT /F1 10 Tf 12 TL ET
+BT 1 0 0 1 0 2 Tm T* ET
+q
+1 0 0 1 20 267 cm
+Q
+q
+1 0 0 1 20 267 cm
+Q
+q
+1 0 0 1 20 225 cm
+0 0 0 rg
+BT /F1 10 Tf 12 TL ET
+q
+1 0 0 1 6 27 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 5.66 0 Td (1.) Tj T* -5.66 0 Td ET
+Q
+Q
+q
+1 0 0 1 23 3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 28.82 Tm /F1 10 Tf 12 TL 1.55284 Tw (Every class that has an association or composition eventually will need its own custom view) Tj T* 0 Tw .83436 Tw (page template, e.g. sed_view. For the moment I have set the default view for these classes to) Tj T* 0 Tw (dev_view \( a copy of base_view \).) Tj T* ET
+Q
+Q
+q
+Q
+Q
+q
+1 0 0 1 20 225 cm
+Q
+q
+1 0 0 1 20 228 cm
+Q
+q
+1 0 0 1 20 198 cm
+0 0 0 rg
+BT /F1 10 Tf 12 TL ET
+q
+1 0 0 1 6 15 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 5.66 0 Td (2.) Tj T* -5.66 0 Td ET
+Q
+Q
+q
+1 0 0 1 23 3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 16.82 Tm /F1 10 Tf 12 TL 1.744651 Tw (An association in UML is cast as a ReferenceField in the resulting class schema. Open the) Tj T* 0 Tw (association and add the widget:label tag to the class that is being associated.) Tj T* ET
+Q
+Q
+q
+Q
+Q
+q
+1 0 0 1 20 198 cm
+Q
+q
+1 0 0 1 20 201 cm
+Q
+q
+1 0 0 1 20 171 cm
+0 0 0 rg
+BT /F1 10 Tf 12 TL ET
+q
+1 0 0 1 6 15 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 5.66 0 Td (3.) Tj T* -5.66 0 Td ET
+Q
+Q
+q
+1 0 0 1 23 3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 16.82 Tm /F1 10 Tf 12 TL .73061 Tw (The default description text for a class should be a informative description of the class, not the) Tj T* 0 Tw (instance, derived from the SED-ML manual.) Tj T* ET
+Q
+Q
+q
+Q
+Q
+q
+1 0 0 1 20 171 cm
+Q
+q
+1 0 0 1 20 174 cm
+Q
+q
+1 0 0 1 20 156 cm
+0 0 0 rg
+BT /F1 10 Tf 12 TL ET
+q
+1 0 0 1 6 3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 5.66 0 Td (4.) Tj T* -5.66 0 Td ET
+Q
+Q
+q
+1 0 0 1 23 3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Apply 'searchable' tags to the appropriate class attributes.) Tj T* ET
+Q
+Q
+q
+Q
+Q
+q
+1 0 0 1 20 156 cm
+Q
+q
+1 0 0 1 20 159 cm
+Q
+q
+1 0 0 1 20 141 cm
+0 0 0 rg
+BT /F1 10 Tf 12 TL ET
+q
+1 0 0 1 6 3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 5.66 0 Td (5.) Tj T* -5.66 0 Td ET
+Q
+Q
+q
+1 0 0 1 23 3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (I choose 'isTidyHtmlWithCleanup' as the MathML validator. Will this work?) Tj T* ET
+Q
+Q
+q
+Q
+Q
+q
+1 0 0 1 20 141 cm
+Q
+q
+1 0 0 1 20 144 cm
+Q
+q
+1 0 0 1 20 0 cm
+0 0 0 rg
+BT /F1 10 Tf 12 TL ET
+q
+1 0 0 1 6 129 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 5.66 0 Td (6.) Tj T* -5.66 0 Td ET
+Q
+Q
+q
+1 0 0 1 23 117 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 16.82 Tm /F1 10 Tf 12 TL .76811 Tw (What should be added to our implementation of SED-ML to make it more than merely a mirror) Tj T* 0 Tw (image of the SED-ML XML format?) Tj T* ET
+Q
+Q
+q
+1 0 0 1 23 111 cm
+Q
+q
+1 0 0 1 23 3 cm
+0 0 0 rg
+BT /F1 10 Tf 12 TL ET
+BT 1 0 0 1 0 2 Tm T* ET
+q
+1 0 0 1 20 108 cm
+Q
+q
+1 0 0 1 20 108 cm
+Q
+q
+1 0 0 1 20 90 cm
+0 0 0 rg
+BT /F1 10 Tf 12 TL ET
+q
+1 0 0 1 6 3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 5.66 0 Td (a.) Tj T* -5.66 0 Td ET
+Q
+Q
+q
+1 0 0 1 23 3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (The ability to attach files at various points, e.g. parameter files.) Tj T* ET
+Q
+Q
+q
+Q
+Q
+q
+1 0 0 1 20 90 cm
+Q
+q
+1 0 0 1 20 93 cm
+Q
+q
+1 0 0 1 20 75 cm
+0 0 0 rg
+BT /F1 10 Tf 12 TL ET
+q
+1 0 0 1 6 3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 5.66 0 Td (b.) Tj T* -5.66 0 Td ET
+Q
+Q
+q
+1 0 0 1 23 3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Additional output types, e.g. animations.) Tj T* ET
+Q
+Q
+q
+Q
+Q
+q
+1 0 0 1 20 75 cm
+Q
+q
+1 0 0 1 20 78 cm
+Q
+q
+1 0 0 1 20 60 cm
+0 0 0 rg
+BT /F1 10 Tf 12 TL ET
+q
+1 0 0 1 6 3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 6.22 0 Td (c.) Tj T* -6.22 0 Td ET
+Q
+Q
+q
+1 0 0 1 23 3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Custom page templates) Tj T* ET
+Q
+Q
+q
+Q
+Q
+q
+1 0 0 1 20 60 cm
+Q
+q
+1 0 0 1 20 63 cm
+Q
+q
+1 0 0 1 20 45 cm
+0 0 0 rg
+BT /F1 10 Tf 12 TL ET
+q
+1 0 0 1 6 3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 5.66 0 Td (d.) Tj T* -5.66 0 Td ET
+Q
+Q
+q
+1 0 0 1 23 3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Custom search form) Tj T* ET
+Q
+Q
+q
+Q
+Q
+q
+1 0 0 1 20 45 cm
+Q
+q
+1 0 0 1 20 48 cm
+Q
+q
+1 0 0 1 20 30 cm
+0 0 0 rg
+BT /F1 10 Tf 12 TL ET
+q
+1 0 0 1 6 3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 5.66 0 Td (e.) Tj T* -5.66 0 Td ET
+Q
+Q
+q
+1 0 0 1 23 3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Custom catalog indexes) Tj T* ET
+Q
+Q
+q
+Q
+Q
+q
+1 0 0 1 20 30 cm
+Q
+q
+1 0 0 1 20 33 cm
+Q
+q
+1 0 0 1 20 15 cm
+0 0 0 rg
+BT /F1 10 Tf 12 TL ET
+q
+1 0 0 1 6 3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 8.44 0 Td (f.) Tj T* -8.44 0 Td ET
+Q
+Q
+q
+1 0 0 1 23 3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Custom portlet\(s\)) Tj T* ET
+Q
+Q
+q
+Q
+Q
+q
+1 0 0 1 20 15 cm
+Q
+q
+1 0 0 1 20 18 cm
+Q
+q
+1 0 0 1 20 0 cm
+0 0 0 rg
+BT /F1 10 Tf 12 TL ET
+q
+1 0 0 1 6 3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 5.66 0 Td (g.) Tj T* -5.66 0 Td ET
+Q
+Q
+q
+1 0 0 1 23 3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Custom viewlet\(s\)) Tj T* ET
+Q
+Q
+q
+Q
+Q
+q
+1 0 0 1 20 0 cm
+Q
+q
+1 0 0 1 20 0 cm
+Q
+q
+Q
+Q
+q
+1 0 0 1 23 3 cm
+Q
+q
+Q
+Q
+q
+1 0 0 1 20 0 cm
+Q
+q
+1 0 0 1 20 0 cm
+Q
+q
+Q
+Q
+q
+1 0 0 1 62.69291 405.0236 cm
+Q
+q
+1 0 0 1 62.69291 372.0236 cm
+q
+BT 1 0 0 1 0 8.435 Tm 21 TL /F2 17.5 Tf 0 0 0 rg (Friday 24 September 2010) Tj T* ET
+Q
+Q
+q
+1 0 0 1 62.69291 315.0236 cm
+0 0 0 rg
+BT /F1 10 Tf 12 TL ET
+q
+1 0 0 1 0 36 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4.82 Tm /F2 10 Tf 12 TL (To Do:) Tj T* ET
+Q
+Q
+BT 1 0 0 1 0 23 Tm T* ET
+q
+1 0 0 1 10 33 cm
+Q
+q
+1 0 0 1 10 33 cm
+Q
+q
+1 0 0 1 10 15 cm
+0 0 0 rg
+BT /F1 10 Tf 12 TL ET
+q
+1 0 0 1 6 3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 5.66 0 Td (1.) Tj T* -5.66 0 Td ET
+Q
+Q
+q
+1 0 0 1 23 3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Publish our mercurial repositories \(Chris/Martin\). This may mesh with deploying Plone.) Tj T* ET
+Q
+Q
+q
+Q
+Q
+q
+1 0 0 1 10 15 cm
+Q
+q
+1 0 0 1 10 18 cm
+Q
+q
+1 0 0 1 10 0 cm
+0 0 0 rg
+BT /F1 10 Tf 12 TL ET
+q
+1 0 0 1 6 3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 5.66 0 Td (2.) Tj T* -5.66 0 Td ET
+Q
+Q
+q
+1 0 0 1 23 3 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Create a vleaf mailing list \(Henk\).) Tj T* ET
+Q
+Q
+q
+Q
+Q
+q
+1 0 0 1 10 0 cm
+Q
+q
+1 0 0 1 10 0 cm
+Q
+q
+Q
+Q
+q
+1 0 0 1 62.69291 285.0236 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 16.82 Tm /F1 10 Tf 12 TL .602927 Tw (Found an article on SBRML - a markup language for associating systems biology data with models. At a) Tj T* 0 Tw (glance the schema seems bigger than SED-ML's, but SBRML appears to be SBML specific.) Tj T* ET
+Q
+Q
+q
+1 0 0 1 62.69291 252.0236 cm
+q
+BT 1 0 0 1 0 8.435 Tm 21 TL /F2 17.5 Tf 0 0 0 rg (Monday 27 September 2010) Tj T* ET
+Q
+Q
+q
+1 0 0 1 62.69291 186.0236 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 52.82 Tm /F1 10 Tf 12 TL 3.993828 Tw (Spoke with Chris about publishing the Mercurial repositories and deploying Plone. Both can be) Tj T* 0 Tw .131567 Tw (accomplished in their own project space on a server in the DMZ. Chris said he would supply me with login) Tj T* 0 Tw 3.871984 Tw (credentials for both accounts. I will install Plone and Chris \(or Maarten\) will help me configure) Tj T* 0 Tw .795318 Tw (Apache/nginx and Varnish. Chris will install the required Mercurial packages; after which I can clone the) Tj T* 0 Tw (repositories to their new home.) Tj T* ET
+Q
+Q
+q
+1 0 0 1 62.69291 153.0236 cm
+q
+BT 1 0 0 1 0 8.435 Tm 21 TL /F2 17.5 Tf 0 0 0 rg (Tuesday 5 October 20010) Tj T* ET
+Q
+Q
+q
+1 0 0 1 62.69291 123.0236 cm
+q
+BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (tutorial0.pro) Tj T* ET
+Q
+Q
+q
+1 0 0 1 62.69291 105.0236 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Added simplugin.h to list of header files. NB: this is the only tutorial in which simplugin.h appears.) Tj T* ET
+Q
+Q
+q
+1 0 0 1 56.69291 773.1969 cm
+q
+BT 1 0 0 1 0 4.82 Tm 205.6499 0 Td 12 TL /F1 10 Tf 0 0 0 rg (The Virtual Leaf) Tj T* -205.6499 0 Td ET
+Q
+Q
+q
+1 0 0 1 56.69291 56.69291 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 238.1649 0 Td (1) Tj T* -238.1649 0 Td ET
+Q
+Q
+
+endstream
+
+endobj
+% 'R28': class PDFStream
+28 0 obj
+% page stream
+<< /Length 4804 >>
+stream
+1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET
+q
+1 0 0 1 62.69291 735.0236 cm
+q
+BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (auxingrowthplugin.h) Tj T* ET
+Q
+Q
+q
+1 0 0 1 62.69291 705.0236 cm
+q
+BT 1 0 0 1 0 16.82 Tm 2.02498 Tw 12 TL /F1 10 Tf 0 0 0 rg (Declared, and defined, a virtual function named ) Tj /F3 10 Tf (DefaultLeafML\(\) ) Tj /F1 10 Tf (which merely returns a QString) Tj T* 0 Tw (naming a LeafML filename sans path.) Tj T* ET
+Q
+Q
+q
+1 0 0 1 62.69291 675.0236 cm
+q
+BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (VirtualLeaf.cpp) Tj T* ET
+Q
+Q
+q
+1 0 0 1 62.69291 645.0236 cm
+q
+BT 1 0 0 1 0 16.82 Tm 14.41996 Tw 12 TL /F1 10 Tf 0 0 0 rg (Moved ) Tj /F3 10 Tf (Cell::SetMagnification\(\) ) Tj /F1 10 Tf (and ) Tj /F3 10 Tf (Cell::SetOffset\(\) ) Tj /F1 10 Tf (from ) Tj /F3 10 Tf (main\(\) ) Tj /F1 10 Tf (to) Tj T* 0 Tw /F3 10 Tf (MainBase::Init\(\)) Tj /F1 10 Tf (.) Tj T* ET
+Q
+Q
+q
+1 0 0 1 62.69291 615.0236 cm
+q
+BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (canvas.h) Tj T* ET
+Q
+Q
+q
+1 0 0 1 62.69291 597.0236 cm
+q
+BT 1 0 0 1 0 4.82 Tm 12 TL /F1 10 Tf 0 0 0 rg (Declare ) Tj /F3 10 Tf (exportCellData\(\)) Tj /F1 10 Tf (.) Tj T* ET
+Q
+Q
+q
+1 0 0 1 62.69291 567.0236 cm
+q
+BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (canvas.cpp) Tj T* ET
+Q
+Q
+q
+1 0 0 1 62.69291 537.0236 cm
+q
+BT 1 0 0 1 0 16.82 Tm 8.836412 Tw 12 TL /F1 10 Tf 0 0 0 rg (Add an 'Export cell areas' to the file dropdown menu which invokes - surprise -) Tj T* 0 Tw /F3 10 Tf (Main::exportCellData\(\)) Tj /F1 10 Tf (:) Tj T* ET
+Q
+Q
+q
+1 0 0 1 62.69291 407.8236 cm
+q
+q
+1 0 0 1 0 0 cm
+q
+1 0 0 1 6.6 6.6 cm
+q
+.662745 .662745 .662745 RG
+.5 w
+.960784 .960784 .862745 rg
+n -6 -6 468.6898 120 re B*
+Q
+q
+BT 1 0 0 1 0 101.71 Tm 12 TL /F3 10 Tf 0 0 0 rg (void Main::exportCellData\(void\) {) Tj T* ( QFile file\("areas.csv"\);) Tj T* ( if \( file.open\( IO_WriteOnly \) \) {) Tj T* ( QTextStream stream\( ) Tj (&) Tj (file \);) Tj T* ( mesh.CSVExportCellData\(stream\);) Tj T* ( mesh.CSVExportMeshData\(stream\);) Tj T* ( file.close\(\);) Tj T* ( }) Tj T* (}) Tj T* ET
+Q
+Q
+Q
+Q
+Q
+q
+1 0 0 1 62.69291 377.8236 cm
+q
+BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (mesh.h) Tj T* ET
+Q
+Q
+q
+1 0 0 1 62.69291 359.8236 cm
+q
+BT 1 0 0 1 0 4.82 Tm 12 TL /F1 10 Tf 0 0 0 rg (Include ) Tj /F3 10 Tf (<) Tj (QTextStream) Tj (>) Tj T* ET
+Q
+Q
+q
+1 0 0 1 62.69291 329.8236 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 16.82 Tm /F1 10 Tf 12 TL .752765 Tw (Set the boundary_poloygon pointer to zero in the class constructor, and delete it, if it exists, in the class) Tj T* 0 Tw (destructor.) Tj T* ET
+Q
+Q
+q
+1 0 0 1 62.69291 311.8236 cm
+q
+BT 1 0 0 1 0 4.82 Tm 12 TL /F1 10 Tf 0 0 0 rg (Declare ) Tj /F3 10 Tf (Compactness\(\)) Tj /F1 10 Tf (, ) Tj /F3 10 Tf (CSVExportCellData\(\) ) Tj /F1 10 Tf (and ) Tj /F3 10 Tf (CSVExportMeshData\(\)) Tj /F1 10 Tf (:) Tj T* ET
+Q
+Q
+q
+1 0 0 1 62.69291 262.4814 cm
+q
+q
+.840289 0 0 .840289 0 0 cm
+q
+1 0 0 1 6.6 7.854438 cm
+q
+.662745 .662745 .662745 RG
+.5 w
+.960784 .960784 .862745 rg
+n -6 -6 558 48 re B*
+Q
+q
+BT 1 0 0 1 0 29.71 Tm 12 TL /F3 10 Tf 0 0 0 rg (double Compactness\(double *res_compactness=0, double *res_area=0, double *res_cell_area=0\);) Tj T* (void CSVExportCellData\(QTextStream ) Tj (&) Tj (csv_stream\) const;) Tj T* (void CSVExportMeshData\(QTextStream ) Tj (&) Tj (csv_stream\);) Tj T* ET
+Q
+Q
+Q
+Q
+Q
+q
+1 0 0 1 62.69291 232.4814 cm
+q
+BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (mesh.cpp) Tj T* ET
+Q
+Q
+q
+1 0 0 1 62.69291 214.4814 cm
+q
+BT 1 0 0 1 0 4.82 Tm 12 TL /F1 10 Tf 0 0 0 rg (In ) Tj /F3 10 Tf (mesh::clear\(\)) Tj /F1 10 Tf (, delete the boundary_polygon only if the pointer hasn't been assigned:) Tj T* ET
+Q
+Q
+q
+1 0 0 1 62.69291 145.2814 cm
+q
+q
+1 0 0 1 0 0 cm
+q
+1 0 0 1 6.6 6.6 cm
+q
+.662745 .662745 .662745 RG
+.5 w
+.960784 .960784 .862745 rg
+n -6 -6 468.6898 60 re B*
+Q
+q
+0 0 0 rg
+BT 1 0 0 1 0 41.71 Tm /F3 10 Tf 12 TL (if \(boundary_polygon\) {) Tj T* ( delete boundary_polygon;) Tj T* ( boundary_polygon=0;) Tj T* ( }) Tj T* ET
+Q
+Q
+Q
+Q
+Q
+q
+1 0 0 1 62.69291 125.2814 cm
+q
+BT 1 0 0 1 0 4.82 Tm 12 TL /F1 10 Tf 0 0 0 rg (Ditto for ) Tj /F3 10 Tf (mesh::clean\(\)) Tj /F1 10 Tf (.) Tj T* ET
+Q
+Q
+q
+1 0 0 1 62.69291 107.2814 cm
+q
+BT 1 0 0 1 0 4.82 Tm 12 TL /F1 10 Tf 0 0 0 rg (Define the code for ) Tj /F3 10 Tf (Compactness\(\)) Tj /F1 10 Tf (, ) Tj /F3 10 Tf (CSVExportCellData\(\) ) Tj /F1 10 Tf (and ) Tj /F3 10 Tf (CSVExportMeshData\(\)) Tj /F1 10 Tf (.) Tj T* ET
+Q
+Q
+q
+1 0 0 1 56.69291 773.1969 cm
+q
+BT 1 0 0 1 0 4.82 Tm 205.6499 0 Td 12 TL /F1 10 Tf 0 0 0 rg (The Virtual Leaf) Tj T* -205.6499 0 Td ET
+Q
+Q
+q
+1 0 0 1 56.69291 56.69291 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 238.1649 0 Td (2) Tj T* -238.1649 0 Td ET
+Q
+Q
+
+endstream
+
+endobj
+% 'R29': class PDFStream
+29 0 obj
+% page stream
+<< /Length 2249 >>
+stream
+1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET
+q
+1 0 0 1 62.69291 735.0236 cm
+q
+BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (modelcatalogue.cpp) Tj T* ET
+Q
+Q
+q
+1 0 0 1 62.69291 717.0236 cm
+q
+BT 1 0 0 1 0 4.82 Tm 12 TL /F1 10 Tf 0 0 0 rg (In ) Tj /F3 10 Tf (InstallModel\(\)) Tj /F1 10 Tf (, find and load the default LeafML file.) Tj T* ET
+Q
+Q
+q
+1 0 0 1 62.69291 687.0236 cm
+q
+BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (simplugin.h) Tj T* ET
+Q
+Q
+q
+1 0 0 1 62.69291 669.0236 cm
+q
+BT 1 0 0 1 0 4.82 Tm 12 TL /F1 10 Tf 0 0 0 rg (Declare ) Tj /F3 10 Tf (DefaultLeafML\(\)) Tj /F1 10 Tf (:) Tj T* ET
+Q
+Q
+q
+1 0 0 1 62.69291 623.8236 cm
+q
+q
+1 0 0 1 0 0 cm
+q
+1 0 0 1 6.6 6.6 cm
+q
+.662745 .662745 .662745 RG
+.5 w
+.960784 .960784 .862745 rg
+n -6 -6 468.6898 36 re B*
+Q
+q
+0 0 0 rg
+BT 1 0 0 1 0 17.71 Tm /F3 10 Tf 12 TL (// Default LeafML-file to be read after model startup) Tj T* (virtual QString DefaultLeafML\(void\);) Tj T* ET
+Q
+Q
+Q
+Q
+Q
+q
+1 0 0 1 62.69291 593.8236 cm
+q
+BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (simplugin.cpp) Tj T* ET
+Q
+Q
+q
+1 0 0 1 62.69291 575.8236 cm
+q
+BT 1 0 0 1 0 4.82 Tm 12 TL /F1 10 Tf 0 0 0 rg (Define ) Tj /F3 10 Tf (DefaultLeafML\(\)) Tj /F1 10 Tf (. Returns an empty ) Tj /F3 10 Tf (QString) Tj /F1 10 Tf (:) Tj T* ET
+Q
+Q
+q
+1 0 0 1 62.69291 542.6236 cm
+q
+q
+1 0 0 1 0 0 cm
+q
+1 0 0 1 6.6 6.6 cm
+q
+.662745 .662745 .662745 RG
+.5 w
+.960784 .960784 .862745 rg
+n -6 -6 468.6898 24 re B*
+Q
+q
+0 0 0 rg
+BT 1 0 0 1 0 5.71 Tm /F3 10 Tf 12 TL (QString SimPluginInterface::DefaultLeafML\(void\) { return QString\(\); }) Tj T* ET
+Q
+Q
+Q
+Q
+Q
+q
+1 0 0 1 62.69291 512.6236 cm
+q
+BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (xmlwrite.cpp) Tj T* ET
+Q
+Q
+q
+1 0 0 1 62.69291 494.6236 cm
+q
+BT 1 0 0 1 0 4.82 Tm 12 TL /F1 10 Tf 0 0 0 rg (In ) Tj /F3 10 Tf (Mesh::XMLReadCells\(\) ) Tj /F1 10 Tf (- Delete the boundary_ploygon only if its pointer has been assigned.) Tj T* ET
+Q
+Q
+q
+1 0 0 1 56.69291 773.1969 cm
+q
+BT 1 0 0 1 0 4.82 Tm 205.6499 0 Td 12 TL /F1 10 Tf 0 0 0 rg (The Virtual Leaf) Tj T* -205.6499 0 Td ET
+Q
+Q
+q
+1 0 0 1 56.69291 56.69291 cm
+q
+0 0 0 rg
+BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 238.1649 0 Td (3) Tj T* -238.1649 0 Td ET
+Q
+Q
+
+endstream
+
+endobj
+% 'R30': class PDFPageLabels
+30 0 obj
+% Document Root
+<< /Nums [ 0
+ 31 0 R
+ 1
+ 32 0 R
+ 2
+ 33 0 R ] >>
+endobj
+% 'R31': class PDFPageLabel
+31 0 obj
+% None
+<< /S /D
+ /St 1 >>
+endobj
+% 'R32': class PDFPageLabel
+32 0 obj
+% None
+<< /S /D
+ /St 2 >>
+endobj
+% 'R33': class PDFPageLabel
+33 0 obj
+% None
+<< /S /D
+ /St 3 >>
+endobj
+xref
+0 34
+0000000000 65535 f
+0000000113 00000 n
+0000000233 00000 n
+0000000398 00000 n
+0000000571 00000 n
+0000000852 00000 n
+0000001011 00000 n
+0000001290 00000 n
+0000001569 00000 n
+0000001726 00000 n
+0000001953 00000 n
+0000002079 00000 n
+0000002258 00000 n
+0000002457 00000 n
+0000002656 00000 n
+0000002885 00000 n
+0000003061 00000 n
+0000003258 00000 n
+0000003451 00000 n
+0000003637 00000 n
+0000003825 00000 n
+0000004009 00000 n
+0000004195 00000 n
+0000004391 00000 n
+0000004580 00000 n
+0000004772 00000 n
+0000004928 00000 n
+0000005051 00000 n
+0000014044 00000 n
+0000018949 00000 n
+0000021303 00000 n
+0000021422 00000 n
+0000021499 00000 n
+0000021576 00000 n
+trailer
+<< /ID
+ % ReportLab generated PDF document -- digest (http://www.reportlab.com)
+ [(\024,\377\262\237\332\204L\232\207%\364ho\271\264) (\024,\377\262\237\332\204L\232\207%\364ho\271\264)]
+
+ /Info 9 0 R
+ /Root 8 0 R
+ /Size 34 >>
+startxref
+21623
+%%EOF
diff --git a/doc/v1.rst b/doc/v1.rst
new file mode 100644
--- /dev/null
+++ b/doc/v1.rst
@@ -0,0 +1,200 @@
+.. header::
+ ###Title###
+
+.. footer::
+ ###Page###
+
+
+================
+The Virtual Leaf
+================
+
+
+Friday 11 June 2010
+-------------------
+
+Issues:
+
+ 1. Every class that has an association or composition eventually will
+ need its own custom view page template, e.g. sed_view. For the moment
+ I have set the default view for these classes to dev_view ( a copy of
+ base_view ).
+
+ 2. An association in UML is cast as a ReferenceField in the resulting
+ class schema. Open the association and add the widget:label tag to
+ the class that is being associated.
+
+ 3. The default description text for a class should be a informative
+ description of the class, not the instance, derived from the
+ SED-ML manual.
+
+ 4. Apply 'searchable' tags to the appropriate class attributes.
+
+ 5. I choose 'isTidyHtmlWithCleanup' as the MathML validator. Will
+ this work?
+
+ 6. What should be added to our implementation of SED-ML to make it
+ more than merely a mirror image of the SED-ML XML format?
+
+ a. The ability to attach files at various points, e.g. parameter files.
+
+ b. Additional output types, e.g. animations.
+
+ c. Custom page templates
+
+ d. Custom search form
+
+ e. Custom catalog indexes
+
+ f. Custom portlet(s)
+
+ g. Custom viewlet(s)
+
+
+Friday 24 September 2010
+------------------------
+
+To Do:
+ 1. Publish our mercurial repositories (Chris/Martin). This may mesh with deploying Plone.
+
+ 2. Create a vleaf mailing list (Henk).
+
+Found an article on SBRML - a markup language for associating systems
+biology data with models. At a glance the schema seems bigger than
+SED-ML's, but SBRML appears to be SBML specific.
+
+
+
+Monday 27 September 2010
+------------------------
+
+Spoke with Chris about publishing the Mercurial repositories and
+deploying Plone. Both can be accomplished in their own project space
+on a server in the DMZ. Chris said he would supply me with login
+credentials for both accounts. I will install Plone and Chris (or
+Maarten) will help me configure Apache/nginx and Varnish. Chris will
+install the required Mercurial packages; after which I can clone the
+repositories to their new home.
+
+
+
+Tuesday 5 October 20010
+-----------------------
+
+
+tutorial0.pro
++++++++++++++
+
+Added simplugin.h to list of header files. NB: this is the only
+tutorial in which simplugin.h appears.
+
+
+auxingrowthplugin.h
++++++++++++++++++++
+
+Declared, and defined, a virtual function named ``DefaultLeafML()``
+which merely returns a QString naming a LeafML filename sans path.
+
+
+
+VirtualLeaf.cpp
++++++++++++++++
+
+Moved ``Cell::SetMagnification()`` and ``Cell::SetOffset()`` from
+``main()`` to ``MainBase::Init()``.
+
+
+canvas.h
+++++++++
+
+Declare ``exportCellData()``.
+
+
+canvas.cpp
+++++++++++
+
+Add an 'Export cell areas' to the file dropdown menu which invokes - surprise - ``Main::exportCellData()``::
+
+ void Main::exportCellData(void) {
+ QFile file("areas.csv");
+ if ( file.open( IO_WriteOnly ) ) {
+ QTextStream stream( &file );
+ mesh.CSVExportCellData(stream);
+ mesh.CSVExportMeshData(stream);
+ file.close();
+ }
+ }
+
+
+mesh.h
+++++++
+
+Include ````
+
+Set the boundary_poloygon pointer to zero in the class constructor,
+and delete it, if it exists, in the class destructor.
+
+Declare ``Compactness()``, ``CSVExportCellData()`` and ``CSVExportMeshData()``::
+
+ double Compactness(double *res_compactness=0, double *res_area=0, double *res_cell_area=0);
+ void CSVExportCellData(QTextStream &csv_stream) const;
+ void CSVExportMeshData(QTextStream &csv_stream);
+
+
+mesh.cpp
+++++++++
+
+In ``mesh::clear()``, delete the boundary_polygon only if the pointer hasn't been assigned::
+
+ if (boundary_polygon) {
+ delete boundary_polygon;
+ boundary_polygon=0;
+ }
+
+Ditto for ``mesh::clean()``.
+
+Define the code for ``Compactness()``, ``CSVExportCellData()`` and ``CSVExportMeshData()``.
+
+
+
+modelcatalogue.cpp
+++++++++++++++++++
+
+In ``InstallModel()``, find and load the default LeafML file.
+
+simplugin.h
++++++++++++
+
+Declare ``DefaultLeafML()``::
+
+ // Default LeafML-file to be read after model startup
+ virtual QString DefaultLeafML(void);
+
+
+simplugin.cpp
++++++++++++++
+
+Define ``DefaultLeafML()``. Returns an empty ``QString``::
+
+ QString SimPluginInterface::DefaultLeafML(void) { return QString(); }
+
+
+xmlwrite.cpp
+++++++++++++
+
+In ``Mesh::XMLReadCells()`` - Delete the boundary_ploygon only if its
+pointer has been assigned.
+
+
+
+Wednesday 6 October 2010
+------------------------
+
+Wrote Simon van Mourik about his missing libiconv-2.dll.
+
+
+Thursday 7 October 2010
+-----------------------
+
+Added a Q3FileDialog in ``canvas.cpp:Main::exportCellData(void)`` to
+choose where to write the exported cell data.
diff --git a/src/ChangeLog b/src/ChangeLog
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,8 @@
+2010-10-07
+
+ * canvas.cpp (exportCellData): Added a Q3FileDialog to inquire
+ where to write the exportCellData.
+
2010-06-28
diff --git a/src/canvas.cpp b/src/canvas.cpp
--- a/src/canvas.cpp
+++ b/src/canvas.cpp
@@ -1367,17 +1367,32 @@ xmlNode *Main::XMLSettingsTree(void)
}
void Main::exportCellData(void) {
+ Q3FileDialog *fd = new Q3FileDialog( this, "file dialog", TRUE );
+ QString fileName;
+
+ stopSimulation();
+ fd->setMode( Q3FileDialog::AnyFile );
+
+ if ( fd->exec() == QDialog::Accepted ) {
+ fileName = fd->selectedFile();
+
+#ifdef QDEBUG
+ qDebug() << "exportCellData filename: " << fileName << endl;
+#endif
// perhaps make this more general: a popup window were user selects data he wants to export
// can go to "settings" section of XML file as well so this can also be measured off-line
// mesh.CSVExport would take an QMap or so to record all options
// first line gives legenda
- QFile file("areas.csv");
- if ( file.open( IO_WriteOnly ) ) {
- QTextStream stream( &file );
- mesh.CSVExportCellData(stream);
- mesh.CSVExportMeshData(stream);
- file.close();
+
+ QFile file(fileName);
+ if ( file.open( IO_WriteOnly ) ) {
+ QTextStream stream( &file );
+ mesh.CSVExportCellData(stream);
+ mesh.CSVExportMeshData(stream);
+ file.close();
+ }
}
}
+
/* finis */
diff --git a/src/leaficon.png b/src/leaficon.png
new file mode 100644
index 0000000000000000000000000000000000000000..2888ad4b61a96a5360bc03aec6d22bd92a3fb7d0
GIT binary patch
literal 30860
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
UFpD@3z5_s{#O1_*BKrRS1I?DOYybcN