User Tools

Site Tools


Gwave -- analog waveform viewer

Gwave is an analog waveform viewer which is used to view the output files produced by ngspice or gnucap. Here are some feature suggestions. You might choose a large handful of features to implement as your GSoC project.

gEDA integration

This project involves improving the integration of gwave into the interprocess-communication to and from the other tools, especialy gschem and gnucap. While gwave has an X11-based remote mechanism, Dbus is now the standard, and should probably be used instead.

Developing unit tests for GTK+-2.0

Gwave has been ported to Gtk2. As part of this effort, developing a battery of unit tests for gwave would be useful. The idea is to create a variety of different input files which exercise gwave's ability to import and display waveforms. An important feature for testing will be to compare the displayed waveform against a “golden” waveform to verify rendering correctness.

User Interface
  • Replace the existing variable-list with a tree-style variable-selector. allow multiple ways of organizing the tree: file/sweep/variable vs. file/variable/sweep, extract circuit heirarchy from variable names, etc. Perhaps a two-pane tree browser, with the internal nodes of the tree in one pane, and the leaf nodes (variables that can be displayed) in another.
  • Add icons to the toolbar elements
  • Enhance use of Gtk2.0 file chooser: wildcards for selecting particular types of files,
  • Accept drag-and-drop from a file manager to add files, run scripts
  • Allow drag-and-drop from one wavepanel to another to move wave
  • Remember/restore the position of the windows, both most-recent-session, and also save it in the scripts.
  • Add keybinding mechanism
  • An undo stack for operations that change the view
  • Add a guile console window, where expressions can be typed to query/manipulate/debug gwave objects and variable data.
Data visualization and analysis
  • Draw a real graticule in wave panels, including a grid of faint/dotted lines and numeric scales
  • Add ability to customize measurements
  • Add additional drawing styles: dotted/dashed lines, symbols showing actual datapoints,
  • Add user-configurable colors
  • waveform calculations (Requires some of the infrastructure work below)
    • display-functions of a single wavevar and scalars
    • display-functions of wavevars sharing the same independent var
    • more general stuff that computes a new wavevar
  • Additional types of wavepanels for different types of viewing/analsis. (best done after refactoring the wavepanel UI elements into a class heirarchy of proper Gtk widgets)
Datafile/Variable Infrastructure
  • Readers for additional file-formats: wdf, sst2, psf have been mentioned
  • Convert from ad-hoc data structures to a glib/GObject class heirarchy
  • Ability to add a variable to a file after it is read in, to support computing a new variable as a function of existing ones
  • Deferred read: initialy read only the independent variable from a datafile, then read the others when they are first displayed.
  • Add a new class of variable, which is a function of other variables and constants to computed on the fly as it is displayed
  • New class of variable for digital data; reader and display capability for verilog vcd
  • Ability to create new datafile-like constructs programaticly, to hold the result of computations involving variables in two or more exisiting files.
  • Handle creation of the independent-variable intelligently.
Other infrastructure
  • convert other data structure from ad-hoc structures wrapped as custom SMOBs to GObject wrapped with guile-gobject.
  • Convert the wavepanel drawing-area code into a new Gtk widget type
gwave-projects.txt · Last modified: 2012/02/20 15:14 (external edit)