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)
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.
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.
Added simplugin.h to list of header files. NB: this is the only tutorial in which simplugin.h appears.
Declared, and defined, a virtual function named DefaultLeafML() which merely returns a QString naming a LeafML filename sans path.
Moved Cell::SetMagnification() and Cell::SetOffset() from main() to MainBase::Init().
Declare exportCellData().
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(); } }
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);
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().
In InstallModel(), find and load the default LeafML file.
Declare DefaultLeafML():
// Default LeafML-file to be read after model startup virtual QString DefaultLeafML(void);
Define DefaultLeafML(). Returns an empty QString:
QString SimPluginInterface::DefaultLeafML(void) { return QString(); }
In Mesh::XMLReadCells() - Delete the boundary_ploygon only if its pointer has been assigned.