User Tools

Site Tools


gwave-projects

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
gwave-projects [2009/01/24 08:41]
sdb
gwave-projects [2012/02/20 15:14] (current)
Line 1: Line 1:
 +==== 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
 +
 +
 +