1 <!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Transitional//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
6 <link rel=
"stylesheet" media=
"screen" type=
"text/css" href=
"./style.css" />
7 <link rel=
"stylesheet" media=
"screen" type=
"text/css" href=
"./design.css" />
8 <link rel=
"stylesheet" media=
"print" type=
"text/css" href=
"./print.css" />
10 <meta http-equiv=
"Content-Type" content=
"text/html; charset=utf-8" />
15 <h3 class=
"sectionedit1563"><a name=
"gwave_--_analog_waveform_viewer" id=
"gwave_--_analog_waveform_viewer">Gwave -- analog waveform viewer
</a></h3>
20 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.
25 <h5><a name=
"geda_integration" id=
"geda_integration">gEDA integration
</a></h5>
30 This project involves improving the integration of gwave into the
31 interprocess-communication to and from the other tools, especialy gschem
32 and gnucap. While gwave has an X11-based remote mechanism, Dbus is now the
33 standard, and should probably be used instead.
38 <h5><a name=
"developing_unit_tests_for_gtk_-20" id=
"developing_unit_tests_for_gtk_-20">Developing unit tests for GTK+-
2.0</a></h5>
43 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.
48 <h5><a name=
"user_interface" id=
"user_interface">User Interface
</a></h5>
51 <li class=
"level1"><div class=
"li"> 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.
</div>
53 <li class=
"level1"><div class=
"li"> Add icons to the toolbar elements
</div>
55 <li class=
"level1"><div class=
"li"> Enhance use of Gtk2.0 file chooser: wildcards for selecting particular types of files,
</div>
57 <li class=
"level1"><div class=
"li"> Accept drag-and-drop from a file manager to add files, run scripts
</div>
59 <li class=
"level1"><div class=
"li"> Allow drag-and-drop from one wavepanel to another to move wave
</div>
61 <li class=
"level1"><div class=
"li"> Remember/restore the position of the windows, both most-recent-session, and also save it in the scripts.
</div>
63 <li class=
"level1"><div class=
"li"> Add keybinding mechanism
</div>
65 <li class=
"level1"><div class=
"li"> An undo stack for operations that change the view
</div>
67 <li class=
"level1"><div class=
"li"> Add a guile console window, where expressions can be typed to query/manipulate/debug gwave objects and variable data.
</div>
73 <h5><a name=
"data_visualization_and_analysis" id=
"data_visualization_and_analysis">Data visualization and analysis
</a></h5>
76 <li class=
"level1"><div class=
"li"> Draw a real graticule in wave panels, including a grid of faint/dotted lines and numeric scales
</div>
78 <li class=
"level1"><div class=
"li"> Add ability to customize measurements
</div>
80 <li class=
"level1"><div class=
"li"> Add additional drawing styles: dotted/dashed lines, symbols showing actual datapoints,
</div>
82 <li class=
"level1"><div class=
"li"> Add user-configurable colors
</div>
84 <li class=
"level1"><div class=
"li"> waveform calculations (Requires some of the infrastructure work below)
</div>
86 <li class=
"level2"><div class=
"li"> display-functions of a single wavevar and scalars
</div>
88 <li class=
"level2"><div class=
"li"> display-functions of wavevars sharing the same independent var
</div>
90 <li class=
"level2"><div class=
"li"> more general stuff that computes a new wavevar
</div>
94 <li class=
"level1"><div class=
"li"> 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)
</div>
100 <h5><a name=
"datafile_variable_infrastructure" id=
"datafile_variable_infrastructure">Datafile/Variable Infrastructure
</a></h5>
103 <li class=
"level1"><div class=
"li"> Readers for additional file-formats: wdf, sst2, psf have been mentioned
</div>
107 <li class=
"level1"><div class=
"li"> Convert from ad-hoc data structures to a glib/GObject class heirarchy
</div>
111 <li class=
"level1"><div class=
"li"> 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
</div>
115 <li class=
"level1"><div class=
"li"> Deferred read: initialy read only the independent variable from a datafile, then read the others when they are first displayed.
</div>
119 <li class=
"level1"><div class=
"li"> Add a new class of variable, which is a function of other variables and constants to computed on the fly as it is displayed
</div>
123 <li class=
"level1"><div class=
"li"> New class of variable for digital data; reader and display capability for verilog vcd
</div>
127 <li class=
"level1"><div class=
"li"> Ability to create new datafile-like constructs programaticly, to hold the result of computations involving variables in two or more exisiting files.
</div>
131 <li class=
"level1"><div class=
"li"> Handle creation of the independent-variable intelligently.
</div>
137 <h5><a name=
"other_infrastructure" id=
"other_infrastructure">Other infrastructure
</a></h5>
140 <li class=
"level1"><div class=
"li"> convert other data structure from ad-hoc structures wrapped as custom SMOBs to GObject wrapped with guile-gobject.
</div>
144 <li class=
"level1"><div class=
"li"> Convert the wavepanel drawing-area code into a new Gtk widget type
</div>