ROADMAP 3.83 KB
Newer Older
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
ROADMAP for hyperviewer

Here's a sketch of the component architecture.

    GUI *1  <- -  - ->	Client methods *2 <- -	ssh to xmlrpc
    wxGlade		SWIG/HyperViewer *3	  < Experiment topology from DB
    wxPython		|			ssh to portstats/slothd
    SWIG/wxWidgets	|			  < Dynamic link/node info
    wxGLCanvas		|
    X/OpenGL <- - - - - '

Files, by area in the diagram above:

*1 - Control panel GUI, created and modified graphically in the wxGlade designer.

	hvgui.wxg - XML saved form of the GUI.  Edit with wxGlade in this directory.

	hvFrameUI.py - Generated by clicking "Generate code" on the properties page
		of the top-level Application object.

*2 - Python client methods to glue everything together, read experiments from the database
     and drive the SWIG'ed HyperViewer API.

	hvApp.py - Application classes including hvframe, initialization and event bindings.

	exptToHv.py - Get experiment topology via XML-RPC, write a HyperViewer .hyp file.

	sshxmlrpc.py, emulabclient.py - Copied here for use by exptToHv.py .
		(There must be a better way to package these files from testbed/xmlrpc.)

*3 - SWIG'ed HypView class which encapsulates the API to the HyperViewer library.

	hvmain.cpp - Top level HyperViewer code, based on hypviewer/examples/*/main.cpp .
	hv.mod - SWIG code appended to make hv.i, below.

	hv.i - Input for SWIG, made from hypviewer/include/HypView.h + hv.mod .
	hv.py - Python wrappers, generated by SWIG from hv.i, imported by hvApp.py .
	_hv.cpp - C++ wrappers, generated by SWIG from hv.i .
	_hv.so - Shared library, linked with libhyperviewer.a, imported by hv.py .

	hypviewer - Tamara Munzner's HyperViewer library from Stanford.
	    (See http://graphics.stanford.edu/~munzner/software.html)

	    To compile, do "make clean", then "make".
	. Makefile.main - This chooses which version is made, including Makefile.freeglut .
	. Makefile.freeglut - The Makefile for FreeBSD with the GLUT library.
	    A proper SWIG binding needs to be ifdeff'ed in.  Meanwhile this app is based
	    on the FreeBSD GLUT library API with all of the GLUT code ifdeffed out,
	    hence compile flags -DPyHack -DFONTHACK -DHYPGLUT -DHYPFREE.

	. doc - HTML API documentation, see HypView.html .
	. include - C++ Header files.
	. src - C++ Library sources.
	  - src/freeglut - Where the .o files and libhypviewerfreeglut.a library are built.
	. examples - C++ Test programs. 
	  - examples/glut/freeglut/gluttest - Currently broken due to the -DPyHack ifdeffing.

	    Choose Makefile.freext in Makefile.main to get the following:
	  - examples/xtsimple/freext/xtsimple ../BigLan.hyp - Simple user interface.
	  - examples/vkxt/freext/vktest ../BigLan.hyp - UI with _many_ keystroke commands.
		See /hypviewer/examples/vkxt/viewer.README for a description.

	    Choose Makefile.linuxxt in Makefile.main for Linux versions.

================================================================
Package dependencies:

 . wxGlade-0.3.1_1     GUI builder for wxPython/wxWindows written in Python
   wxgtk-common-2.4.2_1 The wxWidgets GUI toolkit (common files)
   wxgtk2-2.4.2_3      The wxWidgets GUI toolkit (GTK2 version)
   py23-wxPython-2.4.2.4_2 Python bindings for the wxWidgets/GTK GUI toolkit

   - Documentation:
	wxGlade tutorial - file:///usr/local/share/doc/wxGlade/tutorial.html
	wxWindows 2.4.2	 - http://www.wxwindows.org/manuals/2.4.2/wx.htm
	PyOpenGL -- The Python OpenGL Binding - http://pyopengl.sourceforge.net/
	wxGLCanvas - http://www.wxwindows.org/manuals/2.4.2/wx170.htm#wxglcanvas

 . swig-1.3.21         Simplified Wrapper and Interface Generator
   swig-doc-1.3.16     Simplified Wrapper and Interface Generator - Documentation

   - Documentation:
	Simplified Wrapper and Interface Generator - http://www.swig.org/
	SWIG1.3 Documentation - file:///usr/local/share/doc/swig/Doc/Manual/index.html
	Wrapping STL - http://www.geocities.com/foetsch/python/extending_python.htm#stl