Linker - Links Multiple Products
This user interface has been created to facilitate the Linking of two products so that they may share common data.
The intention of this was to simplify an otherwise tedious manual procedure where there was lots of scope for user error.
I started this project to simplify a workflow that "linked" several different applications together. The workflow in place was meant to be a simplification and improvement on existing practices. This tool removes much of the manual user interaction required for the users to complete the workflow.
This project has been implemented using Python3 and more specifically PyQt5.
Because there are potentially multiple QT environments on the system I have created a Python virtual env and installed the modules as required into this virtual environment. I have used the lxml module to parse and update XML files when required.
I have used a Python package (QDarkStyle) to help with the styling to give the application a dark style and I have used some opensource icons to help improve the user experience. Once the main application is loaded, the views are updated based on the system state and user selection. Each view has its own class, I would consider this as the controller for the view. this simplifies the application significantly as this class controller is then responsible for its own actions.
When the application starts up, on initialisation a dictionary stores the application settings, this includes the version, and the locations on the file system to find certain files etc. This settings object is passed to other classes that are defined so they all have access to a common set of parameters.
Once launched the application checks to see if there is a configuration file present for the current environment, if there is then it presents a view that tells the user that the system is already linked, if there is no entry in the configuration then the user is presented with an initial view where they can choose which Orca Survey and which PandA project to link with.
Once linked there are some process control buttons, the signals from these buttons have been connected to corresponding actions, I have used a QProcess instance for running these processes which are wrapped in a task controller module. The task controller can be imported by any of the other modules and provides a simple way to launch a system command to retrieve data.
The application has been created within a short time frame and has been delivered to users after some local testing. The feedback has been very positive so far and I believe this has simplified an otherwise complex configuration process.
Linker Survey Progress
Linker Survey Progress
Linker Survey Progress