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.
Wrote Simon van Mourik about his missing libiconv-2.dll.
Added a Q3FileDialog in canvas.cpp:Main::exportCellData(void) to choose where to write the exported cell data.
Added new parameters to control perodic cell exprt data.
Added code to relize perodic cell export.
Tried several alternatives for Mercurial's pretxnchangegroup.forbid_2heads hook.
Tried to install Rhode Code from: http://packages.python.org/RhodeCode.
All goes tolerably until you tick in the url; at which point RhodeCode complains that:
Exception happened during processing of request from ('127.0.0.1', 35803) Traceback (most recent call last): File "/ufs/guravage/.archive/mas/mr/rhodecode/lib/python2.6/site-packages/Paste-1.7.5.1-py2.6.egg/paste/httpserver.py", line 1068, in process_request_in_thread self.finish_request(request, client_address) File "/ufs/guravage/opt/Python-2.6.2/lib/python2.6/SocketServer.py", line 320, in finish_request self.RequestHandlerClass(request, client_address, self) File "/ufs/guravage/opt/Python-2.6.2/lib/python2.6/SocketServer.py", line 615, in __init__ self.handle() File "/ufs/guravage/.archive/mas/mr/rhodecode/lib/python2.6/site-packages/Paste-1.7.5.1-py2.6.egg/paste/httpserver.py", line 442, in handle BaseHTTPRequestHandler.handle(self) File "/ufs/guravage/opt/Python-2.6.2/lib/python2.6/BaseHTTPServer.py", line 329, in handle self.handle_one_request() File "/ufs/guravage/.archive/mas/mr/rhodecode/lib/python2.6/site-packages/Paste-1.7.5.1-py2.6.egg/paste/httpserver.py", line 437, in handle_one_request self.wsgi_execute() File "/ufs/guravage/.archive/mas/mr/rhodecode/lib/python2.6/site-packages/Paste-1.7.5.1-py2.6.egg/paste/httpserver.py", line 287, in wsgi_execute self.wsgi_start_response) File "/ufs/guravage/.archive/mas/mr/rhodecode/lib/python2.6/site-packages/Paste-1.7.5.1-py2.6.egg/paste/cascade.py", line 130, in __call__ return self.apps[-1](environ, start_response) File "/ufs/guravage/.archive/mas/mr/rhodecode/lib/python2.6/site-packages/Paste-1.7.5.1-py2.6.egg/paste/registry.py", line 379, in __call__ app_iter = self.application(environ, start_response) File "/ufs/guravage/.archive/mas/mr/rhodecode/lib/python2.6/site-packages/RhodeCode-1.0.0rc1-py2.6.egg/rhodecode/lib/middleware/https_fixup.py", line 33, in __call__ return self.application(environ, start_response) File "/ufs/guravage/.archive/mas/mr/rhodecode/lib/python2.6/site-packages/Pylons-1.0-py2.6.egg/pylons/middleware.py", line 163, in __call__ self.app, new_environ, catch_exc_info=True) File "/ufs/guravage/.archive/mas/mr/rhodecode/lib/python2.6/site-packages/Pylons-1.0-py2.6.egg/pylons/util.py", line 48, in call_wsgi_application app_iter = application(environ, start_response) File "/ufs/guravage/.archive/mas/mr/rhodecode/lib/python2.6/site-packages/WebError-0.10.2-py2.6.egg/weberror/errormiddleware.py", line 156, in __call__ return self.application(environ, start_response) File "/ufs/guravage/.archive/mas/mr/rhodecode/lib/python2.6/site-packages/RhodeCode-1.0.0rc1-py2.6.egg/rhodecode/lib/middleware/simplehg.py", line 55, in __call__ return self.application(environ, start_response) File "/ufs/guravage/.archive/mas/mr/rhodecode/lib/python2.6/site-packages/Beaker-1.5.4-py2.6.egg/beaker/middleware.py", line 152, in __call__ return self.wrap_app(environ, session_start_response) File "/ufs/guravage/.archive/mas/mr/rhodecode/lib/python2.6/site-packages/Routes-1.12.3-py2.6.egg/routes/middleware.py", line 131, in __call__ response = self.app(environ, start_response) File "/ufs/guravage/.archive/mas/mr/rhodecode/lib/python2.6/site-packages/Pylons-1.0-py2.6.egg/pylons/wsgiapp.py", line 98, in __call__ self.setup_app_env(environ, start_response) File "/ufs/guravage/.archive/mas/mr/rhodecode/lib/python2.6/site-packages/Pylons-1.0-py2.6.egg/pylons/wsgiapp.py", line 203, in setup_app_env pylons_obj.translator = _get_translator(lang, pylons_config=self.config) File "/ufs/guravage/.archive/mas/mr/rhodecode/lib/python2.6/site-packages/Pylons-1.0-py2.6.egg/pylons/i18n/translation.py", line 165, in _get_translator raise LanguageError('IOError: %s' % ioe) LanguageError: IOError: [Errno 2] No translation file found for domain: 'rhodecode'
- easy_install mercurial
- mkdir src
- cd src
- hg clone http://www.riverbankcomputing.com/hg/sip
- cd sip
- python build.py prepare
- python configure.py
- make
- make install
22. cd .. 21. easy_install rhodecode, http://pypi.python.org/pypi/RhodeCode/1.0.0rc2
This procedure fails as before.
However, upon inspection I saw that the i18n directory was missing from my build but present in the rhodecode clone from bitbucket. While I think that the easy_install rhodecode invocation is necessary to install the various subsidiary packages, moving the cloned rhodecode into the site-packages directory seems to have made most functionality work. e.g. graphical logs and diff highlighting.
I think that if Chris can install RhodeCode, I can serve individual instance from my home directory.
Walking through the new SED-ML schema I see that they've dropped the generic simulation class and added AddXML and RemoveXML model change classes. Adding several more SED-ML examples for the symposium might still be justified - though they become obsolete the moment I introduce the new schema changes.