From SCIRun Documentation Wiki
Jump to navigation Jump to search

SCIRun Qt Migration Project

Git Help

Deployment Help


OS X Bundles


User Suggestions


Basic GUI Redesign

  1. Determine overall look and feel.
    • Background color of network editor
    • Placement of main window widgets--match current design at first?
  2. Redesigning major parts of the main window.
    • Menu bar
    • Context menus
    • Toolbars
    • Status bar
    • Configuration panel
    • Module Search
    • Module progress indicators
    • Module general settings: port caching, info on ports, general info: available in "drawer" subwidget
    • Tooltips
    • Command window
  3. CIBC:Documentation:SCIRun:DevTasks:SCIRunGuiFeatureList

Major Development Milestones

  • Can add/delete module widgets
  • Can connect ports with connections in the GUI
  • Can execute dummy network (modules do nothing, stubbed with an execution time)
  • Can load/save srn file (using dummy module descriptions)
  • → All menu options/preferences work
  • Can load/save srn file (using real module descriptions)
  • Can execute a basic network (file i/o, matrix math, no graphics)
    • Question: to achieve this, do we need to hook up all current network plumbing, or just have a minimal set of code to get this working? Perhaps the latter can be step A, while the former is step B.
  • Can execute basic multithreaded network
  • Volume rendering == ViewScene module.
  • Can execute network with graphical output
  • Can walk through entire SCIRun tutorial!
  • At this point, all essential modules should be converted. Can begin converting other individual modules.


  • Discuss memory model for Matrix/Arrays/etc.
  • Move namespace SCIRunAlgo into SCIRun::Algo to remove need for using directives in headers.
  • Replace Thread library with Boost.


  • is there a way we can display a brief blurb describing file importer and exporter plugin information (i.e. show a short description of the file types supported, file extensions etc.)?
  • change file importer and exporter plugin function pointer table to functors


  • Execute all button in network editor: triggers execution even if network is currently executing. Queue (or block?) request for execution until current execution is done.

Graphics and Visualization

  • Be able to select or click on objects in renderer and get information i.e. node index, position etc.


  • move all OpenGL code into Core (and intermediate layer as needed)


  • is GLEW still needed for OpenGL support, and if so, which version? - handled through Spire
  • verify that libpng and zlib are still needed, if so, update
  • better XML parsing library (libxml2 is overly complex and buggy)


  • Boost is an external project in the CMake build
  • In case Boost needs to be built outside of SCIRun: Boost build notes


  • merge all generated headers into a single generated header file


  • Add regression testing feature to diff numerical output, either through text files or of matrix objects directly.


  • Isosurface algorithm is very slow and should be rewritten

Error Handling and Exceptions

  • SCIRun exceptions could use an overhaul.
  • SCIRun assertions could also use an overhaul.
  • The same kind of assertions need to be used throughout the code. Currently, we're using:
    • assert from cassert
    • SCIRun's custom ASSERT macros
    • Boost static assert (perhaps it would be best to replace all other asserts with Boost assert utilities?)


Possible Problem Modules

  • ShowMatrix: this module should be completely rewritten
  • CreateMatrix: bug #327
  • GeneratePointSamplesFromFieldOrWidget: spinner boxes in both tabs are not editable. This is really annoying if one wants to generate a large number of samples.
  • GeneratePointSamplesFromField: The execution pattern for this module should be improved. Also, SCIRun test networks are using GeneratePointSamplesFromFieldOrWidget, so there are no tests for this module.
  • CreateAndEditColorMap: the GUI is not very usable and can be difficult to navigate.

Module Improvements

  • See if it's possible to encapsulate common functionality in Matlab Importer modules in a parent class. Same with Exporter modules.

Modules To Deprecate