The project-structure branch is a major re-write of the previous gravity project hierarchy code. It became apparent working with the transform functionality that the first iteration code was far too tightly coupled with the UI code, and dependent on Python's builtin pickle functionality for loading/saving project state - which had its own issues, making it particularly difficult to introduce new attributes to any of the project objects.
This feature branch has re-written and decoupled the project models (containing only state data for Flights, DataSets etc.) and their respective controllers - which provide the public interface and GUI presentation layer.
As a consequence of this, it was possible to change the serialization method from relying on Python's pickle, to using a custom JSON Encoder/Decoder. Using JSON is preferable to pickle as the JSON file stores only the actual data associated with the project state - pickle often caused interesting errors or incompatibilities when project code was changed and an old project file was loaded - as pickle actually serializes entire Python objects (logic and all).
GUI Improvements
Many dialogs (Add Flight, Import Data, Add Sensor) have been significantly or completely re-written
Add Sensor Dialog has been added which allows for creation of a Gravimeter, and import/parsing of an ini configuration (only for DgS AT1A sensors at the moment)
Dialogs support a better input validation scheme
Dialogs support more intuitive/linked functionality - e.g. a new flight can be created directly from the Data Import dialog without losing input, while the new flight becomes immediately available as an import target.
Better use of Qt's model/view architecture to manage GUI interaction - this makes it much easier to share data between widgets and ensure that any state changes are immediately reflected globally.
Build Improvements
AppVeyor CI has been added to the project. AppVeyor
Coverage has been enabled using pytest-cov/coverage modules
Deleted pre-compiled .py UI files from git, these are built before each test with the build_uic script
Transform Graph Integration
This was the secondary goal of this branch, though re-working of the project-structure took precedence, and much work is still to be done on the transformation interface (see the TransformTab within a Flight).
The state of the Transform Tab Interface is essentially a preview currently, some basic functionality is available:
Compute corrections based on the Airborne Post transform-graph
Plot any/all channels of the correction, and switch between time/latitude/longitude on the x-axis
Highly experimental 'stack lines' function, splits the transformation DataFrame based on flight segment markers and then plots the result. e.g. can show FAC for each selected flight line stacked in the plot. The GUI logic needs a lot of work, this was just to see that it could be done.
Documentation Updates
Documentation (sphinx) source has been updated, primarily adding content for the new project structure (dgp.core packages/moduels).
The structure has also been updated, and a skeleton for a forthcoming 'User Guide' has been added.
The requirements-specification document has been linked into the docs as well.
See the built version for this branch here: project-structure docs
Build status badges have been added to the README for AppVeyor, Coveralls, readthedocs
ToDo
Some features have been broken or not yet fully re-implemented but this branch was getting large enough as it was - I'll tackle some of these individually after the merge.
Line segments are not re-plotted when loading project/flight (easy fix)
Line segments can't be deleted from the Project Tree (again fairly easy fix)
Line select plot doesn't have support for dual y-scales (shared x-axis). This will be slightly more complex to implement.
Still no great way to choose which plot channels are plotted on in the line select tab. The method in this iteration allows the user to right click the channel in the list then select the plot number - this works OK, but I think it could be improved.
Sorry for the massive PR here, things have a way of running away from themselves.
Merge feature/project-structure into develop.
The project-structure branch is a major re-write of the previous gravity project hierarchy code. It became apparent working with the transform functionality that the first iteration code was far too tightly coupled with the UI code, and dependent on Python's builtin pickle functionality for loading/saving project state - which had its own issues, making it particularly difficult to introduce new attributes to any of the project objects.
This feature branch has re-written and decoupled the project models (containing only state data for Flights, DataSets etc.) and their respective controllers - which provide the public interface and GUI presentation layer.
As a consequence of this, it was possible to change the serialization method from relying on Python's pickle, to using a custom JSON Encoder/Decoder. Using JSON is preferable to pickle as the JSON file stores only the actual data associated with the project state - pickle often caused interesting errors or incompatibilities when project code was changed and an old project file was loaded - as pickle actually serializes entire Python objects (logic and all).
GUI Improvements
Build Improvements
Transform Graph Integration
This was the secondary goal of this branch, though re-working of the project-structure took precedence, and much work is still to be done on the transformation interface (see the TransformTab within a Flight).
The state of the Transform Tab Interface is essentially a preview currently, some basic functionality is available:
Documentation Updates
ToDo
Some features have been broken or not yet fully re-implemented but this branch was getting large enough as it was - I'll tackle some of these individually after the merge.
Sorry for the massive PR here, things have a way of running away from themselves.