GUI Layers

Generic GUI Overview

The appmanager.AppManager manages connections between a model and a UI view. It is purposely lightweight, relying on window manager support for most windowing functions. The refresh_gui() function provides a means of synchronizing model changes across all UI views associated with that model.

The AppManager supports multiple open models at the same time. The model attribute corresponds to the model for the active UI view.

Matplotlib Support

Many forms of graphics can be supported portably by using the matplotlib package.

  • 2D lens layout graphics
  • Aberration plots for transverse ray aberrations and wavefront aberrations
  • Wavefront maps
  • Interactive \(y-\overline{y}\) and \(\omega-\overline{\omega}\) diagrams

Qt application

Qt5 app version of rayoptics

The qtgui subpackage provides a desktop app, rayopticsapp. It provides an integration of rayoptics with the Qt GUI toolkit. Capabilities include:

  • an interface that hosts matplotlib graphics
  • a table grid for numeric model displays (template-based)
  • docking panel support for python objects
  • iPython console window (desktop app only)

Running the app

A desktop application is installed as part of rayoptics. It is invoked by running rayoptics at the command line.

> rayoptics

On a Windows machine, the rayoptics command will be located in a Scripts directory underneath the install directory. For example, if using a virtual environment named optics, the command would be

> \optics\Scripts\rayoptics