Hello mono-list; hope this is appropriate place to post! After some initial prototypes, we are heading in a general direction with our cross-platform IDE incorporating Mono, Gtk#, the DLR, and associated languages for education.
I'm looking for some feedback on current implementation, so if you have the inclination, your feedback is appreciated! The project is called Pyjama, and has a homepage here: http://PyjamaProject.org/ Overview videos: http://pyjamaproject.org/PyjamaScreenShots#Prototype_3 Quickstart instructions: You can download the current packaged Pyjama (7MB) from: http://myro.roboteducation.org/~dblank/download/ and unzip. You'll need a current installation of Mono, Gtk, and optionally Gtk-SourceView (for nice source code highlighting and line numbering). Start with Pyjama/pyjama and try loading some of the Pyjama/examples/ (Windows has a hardcoded path to Mono in src/pyjama.py). Additional information available on the website. Briefly: There are 5 directories in the Pyjama folder: bin - contains the startup files, and language dll files for languages bin/Lib - contains the standard language (ie, Python) libraries languages - contains the language definition files for Python, Ruby, Scheme, and Dinah modules - Cross-language modules that can be used by all Pyjama languages examples - sample code src - the source code for the Pyjama Project Pyjama is written in IronPython, using the Gtk# graphical user interface. The Python files for the Pyjama Project are in Pyjama/src/*.py. They are: document.py - base classes for Document interface editor.py - the Editor Window engine.py - base classes for the Engine interface pyjama.py - setup and startup code reflection.py - code to read DLL data shell.py - the Shell Window utils.py - utility functions and classes window.py - base class for Shell and Editor Pyjama is an editor and executor of code from a Language. Languages are defined in Pyjama/languages and define two items: editor document, and an executor engine. Pyjama has 5 languages, in various states of completeness: Python (finished) Ruby (nearly finished) Scheme (somewhat working) Sympl (example language in Python) Dinah (drag and drop language, just started) You can switch between languages in the shell with Ctrl+1 through Ctrl+4. A Language file in Pyjama/languages/*.py defines the editing document, and the shell executor API. Documents can do things like open, save, and display data for editing. Engines can do things like execute, execute_file, and parse files. Engines also allow for the languages to share data and functionality. There is a long list of items to be completed just to be functional, and I'll be working on this full time this semester. If anyone would like to join this open source project, please let me know. There are a couple of hacky seeming spots that I'd like to clean up: 1. Is the background executing code appropriately done? See Pyjama/src/shell.py 2. In a couple of places I'm using ManualResetEvent, Gtk.Application.Invoke, and WaitOne; is that the best way to accomplish syncing between threads? See grep ManualResetEvent src/*.py 3. The error display code doesn't always work. See grep EXCEPTION */*.py Any feedback appreciated! -Doug _______________________________________________ Mono-list maillist - Mono-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-list