From graphics-request at octave dot org Fri Jul 16 18:35:58 2004 Subject: Octivate - GUI in Mono/C# From: Matthew C Ruschmann To: graphics at octave dot org Date: Fri, 16 Jul 2004 16:38:21 -0500 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