This is the new version of the code, which uses a completely different architecture than the previous one.
The code is designed using a standard object-oriented 'Model-View-Presenter' architecture, with strong separation between the data input and management, and the visualisation. This allows for easy development of both new input file-types (see section \ref{sec:structure:input}) and pre-processing options, and alternative GUI front-ends and settings (see section \ref{sec:improvements} for suggested development building on top of this flexibility). A generic 'Presenter' controls the logic of the program, and feeds data from the data models to the selected GUI view, and requests from the GUI for changes to the data models. Either the 'View' or 'Model' can be easily interchanged as long as they conform to the API expected by the 'Presenter'.
This is the new version of the code, which uses a completely different architecture than the previous one. The code is designed using a standard object-oriented 'Model-View-Presenter' architecture, with strong separation between the data input and management, and the visualisation. This allows for easy development of both new input file-types (see section \ref{sec:structure:input}) and pre-processing options, and alternative GUI front-ends and settings (see section \ref{sec:improvements} for suggested development building on top of this flexibility). A generic 'Presenter' controls the logic of the program, and feeds data from the data models to the selected GUI view, and requests from the GUI for changes to the data models. Either the 'View' or 'Model' can be easily interchanged as long as they conform to the API expected by the 'Presenter'.