1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<link rel="stylesheet" media="screen" type="text/css" href="./style.css" />
<link rel="stylesheet" media="screen" type="text/css" href="./design.css" />
<link rel="stylesheet" media="print" type="text/css" href="./print.css" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<div class="dokuwiki export">
<h3 class="sectionedit1"><a name="gwave_--_analog_waveform_viewer" id="gwave_--_analog_waveform_viewer">Gwave -- analog waveform viewer</a></h3>
<div class="level3">
<p>
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.
</p>
</div>
<h5><a name="geda_integration" id="geda_integration">gEDA integration</a></h5>
<div class="level5">
<p>
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.
</p>
</div>
<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>
<div class="level5">
<p>
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.
</p>
</div>
<h5><a name="user_interface" id="user_interface">User Interface</a></h5>
<div class="level5">
<ul>
<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>
</li>
<li class="level1"><div class="li"> Add icons to the toolbar elements</div>
</li>
<li class="level1"><div class="li"> Enhance use of Gtk2.0 file chooser: wildcards for selecting particular types of files,</div>
</li>
<li class="level1"><div class="li"> Accept drag-and-drop from a file manager to add files, run scripts </div>
</li>
<li class="level1"><div class="li"> Allow drag-and-drop from one wavepanel to another to move wave</div>
</li>
<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>
</li>
<li class="level1"><div class="li"> Add keybinding mechanism</div>
</li>
<li class="level1"><div class="li"> An undo stack for operations that change the view</div>
</li>
<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>
</li>
</ul>
</div>
<h5><a name="data_visualization_and_analysis" id="data_visualization_and_analysis">Data visualization and analysis</a></h5>
<div class="level5">
<ul>
<li class="level1"><div class="li"> Draw a real graticule in wave panels, including a grid of faint/dotted lines and numeric scales</div>
</li>
<li class="level1"><div class="li"> Add ability to customize measurements</div>
</li>
<li class="level1"><div class="li"> Add additional drawing styles: dotted/dashed lines, symbols showing actual datapoints, </div>
</li>
<li class="level1"><div class="li"> Add user-configurable colors</div>
</li>
<li class="level1"><div class="li"> waveform calculations (Requires some of the infrastructure work below)</div>
<ul>
<li class="level2"><div class="li"> display-functions of a single wavevar and scalars</div>
</li>
<li class="level2"><div class="li"> display-functions of wavevars sharing the same independent var</div>
</li>
<li class="level2"><div class="li"> more general stuff that computes a new wavevar</div>
</li>
</ul>
</li>
<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>
</li>
</ul>
</div>
<h5><a name="datafile_variable_infrastructure" id="datafile_variable_infrastructure">Datafile/Variable Infrastructure</a></h5>
<div class="level5">
<ul>
<li class="level1"><div class="li"> Readers for additional file-formats: wdf, sst2, psf have been mentioned</div>
</li>
</ul>
<ul>
<li class="level1"><div class="li"> Convert from ad-hoc data structures to a glib/GObject class heirarchy</div>
</li>
</ul>
<ul>
<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>
</li>
</ul>
<ul>
<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>
</li>
</ul>
<ul>
<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>
</li>
</ul>
<ul>
<li class="level1"><div class="li"> New class of variable for digital data; reader and display capability for verilog vcd</div>
</li>
</ul>
<ul>
<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>
</li>
</ul>
<ul>
<li class="level1"><div class="li"> Handle creation of the independent-variable intelligently.</div>
</li>
</ul>
</div>
<h5><a name="other_infrastructure" id="other_infrastructure">Other infrastructure</a></h5>
<div class="level5">
<ul>
<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>
</li>
</ul>
<ul>
<li class="level1"><div class="li"> Convert the wavepanel drawing-area code into a new Gtk widget type</div>
</li>
</ul>
</div>
</div>
</body>
</html>
|