Difference between revisions of "CalicoDevelopment"

From IPRE Wiki
Jump to: navigation, search
(Getting Source Code)
(TODO)
Line 73: Line 73:
  
 
# Add proper opensource license information to all files
 
# Add proper opensource license information to all files
# Serial Connection to Fluke and Scribbler (C#, modules/Myro/Myro.cs)
+
# Missing shapes: Circle, Rect, Oval, Text (C#, modules/Graphics/Graphics.cs)
# Pixel manipulation, (C#, modules/Graphics/Graphics.cs; see Pixbuf)
+
# Missing shapes: Point, Circle, Rect, Oval, Circle, Text (C#, modules/Graphics/Graphics.cs)
+
 
# Doesn't ask to save files on Quit
 
# Doesn't ask to save files on Quit
 
# Add Escape button, keypress handler to stop processing (and robot?)
 
# Add Escape button, keypress handler to stop processing (and robot?)
Line 82: Line 80:
 
# Get Dinah working
 
# Get Dinah working
 
## read classes, methods, params and return values from DLL
 
## read classes, methods, params and return values from DLL
## drag and drop
 
 
## save/read file format
 
## save/read file format
 
## execute file
 
## execute file
Line 89: Line 86:
 
# Log student time/events for analysis
 
# Log student time/events for analysis
 
# Find Libraries for text-to-speech, gamepad, 3D graphics, music, etc
 
# Find Libraries for text-to-speech, gamepad, 3D graphics, music, etc
# Can we write a C# wrapper to run top-level pyjama (so as not to use ipy.exe)?
+
# Write a C# wrapper to run top-level pyjama (so as not to use ipy.exe)
 
# Can we run chiron and have our code run in web browser through Silverlight/Moonlight?
 
# Can we run chiron and have our code run in web browser through Silverlight/Moonlight?
 
+
# Command-line history
== BUGS ==
+
## don't add empty entries
 
+
## sometimes doesn't add entries
 +
## don't repeat items
 +
# Toolbar doesn't work
 +
# Console (tty) mode
 +
# Edit menu (search, find, select, redo, undo)
 +
# Read compressed JPG from fluke camera
 +
# multi-point line using cairo
 +
# remember dir on open
 
# Most menu items missing (Python, src/editor.py, src/shell.py)
 
# Most menu items missing (Python, src/editor.py, src/shell.py)
# Toolbar buttons don't do anything ?!
 
 
# Write do_together
 
# Write do_together
# Undo and dirty indicator (asterisks next to filename of notebook tab) need to start fresh on file open
 
 
# Need move_to_top, move_to_bottom (for Shape objects in modules/Graphics/Graphics.cs)
 
# Need move_to_top, move_to_bottom (for Shape objects in modules/Graphics/Graphics.cs)
 
# Unify graphics move/rotate (use Cairo rotate/translate or adjust our own points)
 
# Unify graphics move/rotate (use Cairo rotate/translate or adjust our own points)

Revision as of 12:26, 6 January 2011

This page describes the planning of Pyjama Editor and Shell. The Pyjama IDE is a cross-platform environment for learning about computing. This is part of the Pyjama Project.

Development

Getting Source Code

For those with write permissions to the SVN Bryn Mawr College source code repository:

svn co https://svn.cs.brynmawr.edu/Pyjama/trunk Pyjama

You can browse the source code here:

You will also need:

  • mono
  • gtk (and libgtk2.0-cil-dev, for package-config files)
  • gtk-sourceview (libgtksourceview2-2.0-cil package on Ubuntu)

Building

To build everything, run "make" in the root:

cd Pyjama
make

That will build platform independent modules/Myro.dll, modules/Graphics.dll, and languages/Scheme.dll.

To run code:

cd Pyjama
make

Overview

There are 5 directories in the Pyjama folder:

  1. bin - contains the startup files, and language files for Python and Ruby
    1. bin/Lib - contains the standard Python libraries
  2. languages - contains the language definition files for Python, Ruby, Scheme, and Dinah
  3. modules - Cross-language modules that can be used by all Pyjama languages
  4. examples - sample code (currently just Python)
  5. src - the code to run 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 4 languages, in various states of completeness:

  1. Python (finished)
  2. Ruby (nearly finished)
  3. Scheme (somewhat working)
  4. Dinah (drag and drop language, just started)

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.

TODO

  1. Add proper opensource license information to all files
  2. Missing shapes: Circle, Rect, Oval, Text (C#, modules/Graphics/Graphics.cs)
  3. Doesn't ask to save files on Quit
  4. Add Escape button, keypress handler to stop processing (and robot?)
  5. Need search/replace in editor
  6. Printing
  7. Get Dinah working
    1. read classes, methods, params and return values from DLL
    2. save/read file format
    3. execute file
  8. Allow Scheme to access DLR classes/modules
  9. Provide "Hint" links to wiki page on error
  10. Log student time/events for analysis
  11. Find Libraries for text-to-speech, gamepad, 3D graphics, music, etc
  12. Write a C# wrapper to run top-level pyjama (so as not to use ipy.exe)
  13. Can we run chiron and have our code run in web browser through Silverlight/Moonlight?
  14. Command-line history
    1. don't add empty entries
    2. sometimes doesn't add entries
    3. don't repeat items
  15. Toolbar doesn't work
  16. Console (tty) mode
  17. Edit menu (search, find, select, redo, undo)
  18. Read compressed JPG from fluke camera
  19. multi-point line using cairo
  20. remember dir on open
  21. Most menu items missing (Python, src/editor.py, src/shell.py)
  22. Write do_together
  23. Need move_to_top, move_to_bottom (for Shape objects in modules/Graphics/Graphics.cs)
  24. Unify graphics move/rotate (use Cairo rotate/translate or adjust our own points)
  25. Dinah left and right panes should be scrolled independently
  26. the Invoked code using the evt (in src/utils.py) seems flakey (use locks?)
  27. alpha doesn't apply to Pictures yet

Screen Shots

Pyjama-010.gif

For more, see PyjamaScreenShots

Troubleshooting

If you have any trouble, find bugs, or want to make a feature request, please do that at:

pyjama.codeplex.com/WorkItem/