Octivate - GUI in Mono/C#

Matthew C Ruschmann <[email protected]> Fri, 16 Jul 2004 16:38:21 -0500
Newsgroups gmane.comp.gnu.octave.graphics
Message-ID <[email protected]>
I recently embarked on a journey to familiarize myself with C# and Mono. 
  As a learning experience, I designed a GUI to the GNU Octave engine. 
The project, called Octivate, has fostered my interest over the past 
week and has grown consequently.  The project has become more than a 
simple learning experience.  Hence, I have created a place for it on 
Source Forge (http://octivate.sf.net) and plan to pursue further 
development during my spare time.

The project, for the most part, consists of a C library (liboctivate), a 
C# class library (octave-sharp), and the main assembly (octivate).

liboctivate – a library written in C/C++ (based on Paul Kienzle's 
octave_embed).
The focus of this library is to handle the relatively complex set of 
functions, variables, and streams.  This could possibly be implemented 
directly through octave-sharp, but (as this was only a learning 
experience) this method was quicker and dealt with simpler P/Invokes. 
I'm not sure if C# (and P/Invoke) is compatible with C++ streams or 
capable of managing classes and variable in a C library.
With a few improvements, this library could be easily integrated into 
other applications wishing to interface the Octave engine.

octave-sharp – a C# class library.  This library manages an Octave 
session through liboctivate.  It's currently a rather small and simple 
library, but allows for a separate layer of abstraction and availability 
to other C# assemblies.

octivate – The actual GUI written using Mono, gtk, and glade.  It 
behaves nicely, but still has a few bugs interacting with the Octave 
engine.  (These are problems in octave-sharp but don't seem to appear 
accessing liboctivate from C++)

If anyone is interested in using the code, feel free.  It is licensed 
under the GPL.  If you are interested in contributing, feel free to 
contact me.  Hopefully, I will have free time to further mature this 
project over the next few weeks.

Thank you for you time,
Matthew C. Ruschmann