Open Propeller Project #3: Propeller IDE V0.1 Package Available
jazzed
Posts: 11,803
See posts #820 and #826.
08-06-2014: Uploaded PropellerIDE Version 0.19 ........ for Linux, MacOSX, and Windows.
This version has several important enhancements.
Please see this post: http://forums.parallax.com/showthread.php/153921-Open-Propeller-Project-3-Propeller-IDE-V0.1-Package-Available?p=1283880&viewfull=1#post1283880
For source builders, the repository is here: PropellerIDE GoogleCode
The source is in the loader branch at the moment. Please follow the directions on the googlecode site.
A user guide is not available yet. Most people won't read it anyway.
PLEASE don't use any links in the strikeout section below. They are old and only there for history purposes.
08-05-2014: Uploaded an x86_64 MacOS package.
Please see this post: http://forums.parallax.com/showthread.php/153921-Open-Propeller-Project-3-Propeller-IDE-V0.1-Package-Available?p=1283450&viewfull=1#post1283450
08-04-2014: Uploaded a 64 bit debian package.
Please see this post: http://forums.parallax.com/showthread.php/153921-Open-Propeller-Project-3-Propeller-IDE-V0.1-Package-Available?p=1283135#post1283135
08-03-2014 1PM PDT: Uploaded distributions.
Please find them here:
PropellerIDE Version 0.18 for Debian, Mint, Ubuntu x86_64
PropellerIDE Version 0.18 for Mint 32 bit
Don't use these links.
PropellerIDE Version 0.18 for Windows
Mac Version is coming along, but not ready yet.
08-03-2014: Yesterday I committed changes for Linux packaging. However, there are a few issues I need to tame today before making distributions.
05-13-2014: Latest Windows Version 0.14 package with FTDI installer is here: PropellerIDE Version 0.14 (about 14MB).
04-26-2014: The latest Windows Version 0.13 package is available here: PropellerIDE Version 0.13 (about 12MB)
V0.13 includes persistent settings for enabling/disabling SpinSuggest and AutoComplete in the Properties -> General tab. Editor tab indent is not persistent yet ... when editing PASM, the editor tab indent should be set to 8. Per section indent is not available yet.
Here's a snap-shot.
Instructions to set up a Qt Propeller IDE are here. https://code.google.com/p/easyside/
More details are being added today.
Here are some recent pictures of the IDE. We still need a program icon .... Any volunteers?
This is an example of how the IDE looks at startup.
The difference here is that the blocks icon has been clicked and program size is not shown.
Here is a SpinSuggest example. Type 3 letters to see matches anywhere in the editor.
AutoComplete is available too. Will make a video later.
02-20-2014: Changed thread name to include name PropellerIDE (PropelleRide?)
Ken added this graphic as a show of support.
02-15-2014: I read something Ken posted tonight that I had not seen before.
Ken Gracey wrote: »
OK, can you at least show what can be done with Simple IDE and Spin?
Yes! We should show how to set up Simple IDE for use with Spin. It works fine once you get used to the setup and understand the project management part and absence of program flow without indentation indicators. Somebody quoted me above indicating that Simple IDE will provide better support for Spin, and that effort still stands (we're just a bit short on resources to get there). I need to figure out where to do this (on Learn.parallax.com, parallax.com, or somewhere else). For now, it would be an as-is offering without expectations on Steve to make improvements.
Given that, and this ....
Ken Gracey wrote: »At least that's how I see it right now. Could it become another Open Propeller Project? We've only released one so far, but it's getting completed and we're ready for more efforts.
Ken Gracey
I offer you the genesis of SimpleIDE as JonnyMac called it. I made the silly mistake of calling it easyside .... http://easyside.googlecode.com
There is lots of work to do to make it production ready. That's where you come in. It's all written in C++ with Qt and QtCreator. Anyone can contribute, but it takes some effort, so be prepared to work. I'll give some getting started details later.
This is what it looks like now.
Comments
Seriously, what did you have in mind?
Ray
I'll summarize most of what Jon said.
- Change the name to Propeller IDE
- Spin/PASM only
- PST compatible terminal
- Line numbers in editor
- Syntax highlighting
- Background colors
- Method folding/unfolding
- Project archiving
- Auto-indent
- Multiple library paths
- Auto-complete suggestion
My initial list is outlined here: https://code.google.com/p/easyside/wiki/ProjectPlanRequirementsAndConsiderationsI've discussed some things with a few other people in private, but the idea stalled waiting for some Parallax feedback.
Ray
Steve did an excellent job with SimpleIDE. We've seen, however, it grow way past the "simple" stage. I believe sticking to a limited feature set (just above what Propeller Tool does now) is a way to ensure completion and cross-platform productivity for Propeller programmers.
Again, thanks to Steve for serving this up. Like Ray, I don't have the programming skills to assist, but I will do anything I'm capable of to help out.
I've talked briefly with Chip about P2. For the moment at least unless something changes, files will be named *.spin2 .... So any spin2 file could be compiled with openspin given the right support.
I don't have lots of time for this project, so hopefully someone will step up and ask how to contribute at least.
Edit: I've made a read-only clone of the project and it seems to build on the Mac. I get the configure dialog though and I'm not sure how to answer that since there is no option for selecting a program installed in /opt/parallax/bin.
Please add me. I would like to contribute.
I'm updating OpenSpin with a new API/DLL setup that I think would be perfect for this IDE, and I'll do the work to get it integrated. I'll need to figure out doing DLLs on linux and OSX or get some help from others on that front. I can also help with some of the other feature list stuff as time allows.
Thanks Roy.
@David, there are two items in the Spin part of the setup. One is to choose OpenSpin wherever it lives, and the other is to choose your Spin library wherever it lives. I originally didn't plan to package any compilers with the IDE because I wanted to allow using any compiler ... I guess that changes if this is going to be spin/pasm only. At least the package is still small with that.
Ray
Still need a spin library pointer ... more than one actually
I know what your issue is David Yes, we can get rid of the startup window.
The API I'm doing will allow the IDE to be "smarter" since the compiler has a huge pile of data about what it just compiled (symbols, files used (OBJ section, and includes), etc.). We could probably also have it compiling the file you are editing as you type (in the background) so that it can give you dynamic feedback for syntax and errors and allow the completion stuff to dynamically update with symbols as you add them.
It'll also allow the IDE to have the same "compile from memory" feature as PropTool currently has. Where it uses any currently open files in tabs to revolve and file requests.
I'd rather that not be an initial requirement. The syntax checking possibilities you mentioned are favorable though.
I also have an auto-complete thing already done for SimpleIDE that comes with the Editor class (that will need some usage review), I expect that the symbol table could help simplify that.
Yeah, the plan is to resolve the API/DLL interface early in the project lifetime. It's a pretty small API in terms of number of functions, so it should be too hard. Also, I'll have a function that never changes that just returns the API revision number, so that the IDE can query that and either throw a dialog or act accordingly. This is the area where I will need to figure out (or get help on) for linux and OSX. On Windows it's trivial to load a DLL manually and just query for one function and call it. The actual API that the IDE interacts with will be delivered via a second function it calls to get back a pointer to a class (the has a pure interface base that the IDE knows). So it's possible for the IDE to know about and work with different API versions (possibly from completely different compilers). I'll also make it possible for the IDE to request an API version that it knows about from the DLL, so it will be possible for me to to change the DLL API and have a transition period where the compiler DLL supports 2 API versions for a while. I've done this kind of thing before with DLLs.
Steve,
The way I have the API set up right now, the compiler calls out to a function you register with it to get files. So the IDE can decide all the search paths and sources for those files. We give it back a buffer containing the contents of the file. We can just do a simple file read to satisfy it, but we could also use an editor tab buffer too. It's up to the IDE what happens.
The Editor class already has line numbers and syntax highlighting, but needs to be plugged in. The background syntax highlighting can be done too, because I've dealt with highlighting line errors, but I haven't really tried highlighting more than one line. The PST compatible terminal already exists, but needs to be plugged in. The IDE already supports auto-identify ports on USB plug-in, but does not try to identify propellers (someone else gets to do that). Project archiving is a SimpleIDE feature, but it will be slightly different on this ... I expect Roy's file list can be used to find the required pieces.
The only things that are left to do beyond using existing framework code are the method folding, multiple-library path adds, and some of the more spinny tab and indent stuff (which someone else can do).
I could finish a first cut in a week, but I'm busy with other things. These other little spinny things will take more time.
You have done a great job with SimpleIDE. This would be a nice improvement. While I don't currently have the time, nor the skills for most areas, I do appreciate all the work you have done.
Can I ask why this IDE will not include C from GCC as well? Is it too complicated? Has a specific Spin/PASM IDE been asked for?
BTW I have always considered PST to be extremely primitive. I think there is quite a bit here that could be done to improve it. Perhaps someone could take that part on board and look for some open terminal style program that could be used as a base?
I started with Spin/PASM and xbasic because that's where I left it after the xbasic thread died. I was going to add the ability to include a makefile for everything else.
JonnyMac asked that I limit focus to Spin/PASM only. This is a follow-through to his "I had a dream" emails. It is also a follow-through to a goal that Ken and I discussed last summer.
I got tired of waiting for Parallax to specify something ... and I refuse to start adding features like I did on SimpleIDE. This is a community effort that Parallax will not own in any way. SimpleIDE is a Parallax specified product that I enhance based on their needs - this project is not.
GCC is very easy to include actually. Given the work that Andy and I did with libraries, it is now possible to have a project-less C programming environment. That puts SimpleIDE or some other dev environment in a support role for creating libraries. Lots of the Parallax Learn stuff is written with SimpleIDE examples. Potentially, the project-less IDE could be used there, but I certainly don't want to interfere with Andy and Stephanie's momentum.
Any feature can be added with an #ifdef and turned off by default. I'll probably do that with things that I want but would not be default features like the makefile build. For another example, I'm very interested in a certain ARM chip right now, and I'll probably add support for that for my own consumption.
Yes, it's possible to put in an option to change the terminal to something like VT100. I'm sure most people (and some others who contribute here) would welcome that.
Any reason not to use the latest Qt and Qt Creator? Currently Qt 5.2.1. I'm installing that now.
Qt5 should work also ... i'm having a little trouble with it at the moment though. Let me get back to you on it. Email me or googlechat if you like.
Qt5 has changed all kinds of things that I just can't fix tonight. You'll need the Qt 4.8.5 library or lower for the moment if you want to build.
While I'm not crazy about moving to Qt5.2.1 libraries right now, it is an eventuality, and probably best to just do it. There are advantages that I've been wanting to try such as "official Qt library serial port" support.
Hold off on making changes for a a few days.
This means that builds will not work with Qt4 vintage libraries now, although I'll try to make the code compatible with that.
Have you looked at the code for pzst (Andrey Demenev's Propeller Zone Spin Tool)? It is an open-source Qt-based SPIN IDE as well that unfortunately seems to have been abandonware for quite some time (not sure what happened to Andrey, either??). I just thought maybe it might have some code you could reuse that'd make it easier than starting from scratch. I've been using it as my Prop IDE for quite awhile now - I feel it's about "90% of the way there." Just had to rip out the HAL-related code (was for the serial port handling, iirc) and it built. It's hardcoded to use Brad's compiler and loader.
Cheers,
Jesse
Unfortunately, that code is GPL v3. We can't use any of it without changing the license on easyside from MIT to GPL v3, and I would be strongly against that. I'm not sure, but I don't think Steve would want that either.
It does not sound good and does not convey any hint at what it is.
I liked Jon's suggestion "Propeller IDE".