CASA Extensible Plot Server
The CASA Extensible Plot Server is a DBus
service which provide Qt
base plotting functionality. It is extensible because XML documents (discribing dock widgets) created with Qt Designer
can be passed in to customize the plotting interface. The GUI callbacks from the widgets which compose each dock widget are mapped to asynchronous DBus signals.
This method of button feedback will work only in blocking-mode, which, for the current Flagger requirements, is enough.
But, one of the things on the Imager to-do list is to be able to tell a running Imager to pause at the nearest opportunity, and use a new set of parameters from that point onwards. This will require the GUI event loop to stay active, and send a signal to Imager.....
The issue of how to have an event loop running at the same time that something else is going on is largely an issue for the user of the casaplotserver because its implementation will depend on how the client code is written, e.g. does it have a GUI eventloop already, is it multi-threaded, etc. The most obvious approach would be to introduce a second thread which controls the event loop and passes information to the imager via memory protected with a semaphore.
- register callbacks (using functor?)
Minor bugs :
Right-click on a raster "unzooms" to a hard-coded default x/y range of 1000x1000. Also, the choice of blc/trc or brc/tlc for zooming has different behaviour.... not sure if this is intentional.
* scatter plots
* axis labeling using coordinates & time
* shared memory (for very large arrays?)
* more controls on raster plots ( ## choice of colormap, optional min/max, optional colorwedge display)
* ## change font size on setlabel()
* optionally control axes tick labels (e.g. channel indices map to frequencies, with the usual controls on spacing and string rotation.
* ## cursor tracking (send blc/trc info to a callback). Option to disable tool-tip-text, so that longer messages can be sent to a predetermined 'label' area constructed via qtdesigner. (eg : "12:15:30.0 , 1430MHz , 0.34Jy").
* ## rubber-band box drawing and return of blc/trc, with the programmer choosing to connect this to zooming or 'return-region-info-to-the-Flagger' (for example).The default is currently zoom. This may already be possible, but I have not tried changing the callback (please delete if already possible).
* pan on a plot (mouse dragging), after having zoomed.
* add tabs for control buttons/options, to give the same look'n'feel as plotms.
* switch between panel-layouts without destroying the window (Darrell, if this is just not feasible, please delete this line.)
* ## reduce the amount of empty-space around all the plots (this is related to controlling label font-size).
## items desired for the current flagger display, to improve usability.