Skip to content

GUI in an Instrument via Trigger Callback #2

@rstoneback

Description

@rstoneback

The origin of pysat was a GUI written in IDL. Written specifically for C/NOFS, it worked well with IVM, adding VEFI was tough, and it wasn't going to scale for further. Thus I started down the path that lead to here. Adding trigger callbacks at then end of the main load function gets us 90% of the way to a GUI, fully contained within the Instrument object. The graphical interface is missing, but a Trigger Callback enables plotting that automatically updates with a load call.

Plan:

  • Create Trigger class that subclasses Custom. First change is the add function is replaced with a partial call to existing add function with kind set to 'pass'.
  • Trigger functions must be generators
  • Only accept the actual generator, not the function that creates the generator
  • At the end of load, invoke the _apply_all method
  • To get an equivalent trigger on orbits, put trigger call in the to be created output function
  • Need a way for the orbit call to disable the trigger on main load in favor of orbit (can do this in orbit print function, set a flag or something)
  • Instruments will be required to have a summary plot routine designed for the Trigger
  • pysat.Instrument needs a summary_plot routine to allow user to invoke the process from terminal, as well as a flag upon instantiation to do the same call

Feature:

  • Include summary_plot functions with each instrument
  • The function returns a generator, creates the plot window, axes, etc, then in a loop clears the current data, plots new data, then returns a generator
  • This generator is hooked up to the Instrument trigger
  • Every time data is loaded into Instrument, the plot generator is triggered
  • summary plot clears the axes, then plots the newly loaded data
  • works at the terminal

GUI Feature:

  • All GUI foundation is in the Instrument object
  • Create the GUI with buttons that map to Instrument calls
  • The main feature is the self updating window into the data, but relies upon all the data handling within the Instrument object
  • Users could provide their own plotting routine for their own custom view
  • Users could hook in custom routines, to view their own custom parameters

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions