Shop OBEX P1 Docs P2 Docs Learn Events
Open Propeller Project #3: Propeller IDE V0.1 Package Available — Parallax Forums

Open Propeller Project #3: Propeller IDE V0.1 Package Available

jazzedjazzed Posts: 11,803
edited 2014-11-02 18:35 in Propeller 1
09-07-2014: PropellerIDE now works with RPi.

See posts #820 and #826.


attachment.php?attachmentid=110834&d=1410120960



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.


03-20-2014: A Windows Version 0.1 package is now available here: PropellerIDE Version 0.1 (about 12MB).

Here's a snap-shot.
attachment.php?attachmentid=107697&d=1395362945
03-16-2014: Update setup instruction info and recent pictures.

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.

attachment.php?attachmentid=107639&d=1395071586

The difference here is that the blocks icon has been clicked and program size is not shown.

attachment.php?attachmentid=107638&d=1395071577

Here is a SpinSuggest example. Type 3 letters to see matches anywhere in the editor.
AutoComplete is available too. Will make a video later.

attachment.php?attachmentid=107640&d=1395072490
02-20-2014: Changed thread name to include name PropellerIDE (PropelleRide?)

Ken added this graphic as a show of support.

OPP-IDE4SpinASM.png




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.

attachment.php?attachmentid=106939&d=1392535380
624 x 438 - 128K
600 x 250 - 69K
615 x 543 - 50K
616 x 546 - 48K
681 x 541 - 72K
568 x 546 - 37K
738 x 722 - 152K
«13456729

Comments

  • RsadeikaRsadeika Posts: 3,837
    edited 2014-02-16 11:32
    Yea, I am curious, what did you have in mind for this IDE? Are you thinking a plain IDE with something like plugins for a favorite compiler? It seems like some of the complainers of the existing IDE would be here spewing out what they would like to see, but I guess it is easier to complain than to do something. My skills are not up to par to participate in something like this, I would not be able to contribute, maybe cast some confusion, but that is not helpful.

    Seriously, what did you have in mind?

    Ray
  • jazzedjazzed Posts: 11,803
    edited 2014-02-16 12:22
    Ray, I'd like to follow-through with some of Jonny Mac's recommendations.

    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/ProjectPlanRequirementsAndConsiderations

    I've discussed some things with a few other people in private, but the idea stalled waiting for some Parallax feedback.
  • Heater.Heater. Posts: 21,230
    edited 2014-02-16 12:40
    Sounds like an excellent idea. Jon has good suggestions there. KISS at it's finest.
  • RsadeikaRsadeika Posts: 3,837
    edited 2014-02-16 12:41
    Ah, I see, just for Spin/PASM only. Will this include support for the P2? I have been lurking in the P2 forum and it looks like a night and day difference between the two chips, will the P2 be getting its own IDE, if it's not included here? It seems that if this becomes a reality, each Propeller language will be getting its own IDE. If Parallax is splitting itself into specific support divisions, then I suppose a different IDE would make some sense.

    Ray
  • JonnyMacJonnyMac Posts: 9,105
    edited 2014-02-16 13:42
    I believe OpenSpin will ultimately support both the P1 and P2 -- seems like the obvious choice of compiler engine for this IDE. Initially, I'd like to see it replace the [yet to be finished] Propeller Tool -- giving Spin programmers a nice, cross-platform tool.

    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.
  • jazzedjazzed Posts: 11,803
    edited 2014-02-16 13:44
    Rsadeika wrote: »
    Ah, I see, just for Spin/PASM only. Will this include support for the P2?

    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.
  • David BetzDavid Betz Posts: 14,516
    edited 2014-02-16 13:51
    jazzed wrote: »
    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.
    I wouldn't mind helping with this but I'm not sure how much time I'll have. I'll pull the code to look it over though.

    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.
  • Roy ElthamRoy Eltham Posts: 3,000
    edited 2014-02-16 14:18
    Steve,
    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.
  • David BetzDavid Betz Posts: 14,516
    edited 2014-02-16 14:24
    Roy Eltham wrote: »
    Steve,
    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.
    Why not just use a statically linked library? It avoids the problem of version skew between a DLL and the corresponding EXE.
  • jazzedjazzed Posts: 11,803
    edited 2014-02-16 14:44
    Roy Eltham wrote: »
    Steve,
    Please add me. I would like to contribute.

    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.
  • David BetzDavid Betz Posts: 14,516
    edited 2014-02-16 14:48
    jazzed wrote: »
    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.
    Yes, I think assuming OpenSpin as the compiler is probably best for this project. In fact, Roy says he's making a DLL so the compiler will actually be linked with the IDE. I guess if it's dynamically linked then we still need to make sure that the DLL or .so file is in the path but if it's statically linked there won't ever be a path problem.
  • RsadeikaRsadeika Posts: 3,837
    edited 2014-02-16 14:51
    I originally didn't plan to package any compilers with the IDE because I wanted to allow using any compiler ...
    Bean, are you watching this thread? This just might be the front end that you are looking for.

    Ray
  • jazzedjazzed Posts: 11,803
    edited 2014-02-16 14:51
    David Betz wrote: »
    Yes, I think assuming OpenSpin as the compiler is probably best for this project. In fact, Roy says he's making a DLL so the compiler will actually be linked with the IDE. I guess if it's dynamically linked then we still need to make sure that the DLL or .so file is in the path but if it's statically linked there won't ever be a path problem.

    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.
  • David BetzDavid Betz Posts: 14,516
    edited 2014-02-16 15:04
    jazzed wrote: »
    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.
    I think Qt has that too and I never liked it. Better to have some sensible defaults and bury that dialog.
  • Roy ElthamRoy Eltham Posts: 3,000
    edited 2014-02-16 15:20
    I would like it to be a DLL so that OpenSpin can update and all you need to do is get the new DLL and not wait for a rebuild/update of the IDE. The compiler DLL can just be in the same path with the EXE, right?

    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.
  • David BetzDavid Betz Posts: 14,516
    edited 2014-02-16 15:21
    Roy Eltham wrote: »
    I would like it to be a DLL so that OpenSpin can update and all you need to do is get the new DLL and not wait for a rebuild/update of the IDE. The compiler DLL can just be in the same path with the EXE, right?

    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.
    Sounds good as long as you don't change the interface to the DLL. :-)
  • jazzedjazzed Posts: 11,803
    edited 2014-02-16 15:28
    Roy Eltham wrote: »
    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.
  • Roy ElthamRoy Eltham Posts: 3,000
    edited 2014-02-16 16:00
    David,
    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. :)
  • David BetzDavid Betz Posts: 14,516
    edited 2014-02-16 16:06
    Roy Eltham wrote: »
    David,
    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.
    Sounds like a good plan!
  • jazzedjazzed Posts: 11,803
    edited 2014-02-16 16:48
    As far as the requirements mentioned by Jon ...

    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.
  • Cluso99Cluso99 Posts: 18,069
    edited 2014-02-16 17:13
    Steve,
    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?
  • jazzedjazzed Posts: 11,803
    edited 2014-02-16 18:06
    Cluso99 wrote: »
    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?

    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.
    Cluso99 wrote: »
    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?

    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.
  • potatoheadpotatohead Posts: 10,261
    edited 2014-02-16 20:25
    I strongly recommend this one: http://www.putty.org/
  • Roy ElthamRoy Eltham Posts: 3,000
    edited 2014-02-16 20:30
    Hey Steve, I pulled a clone and noticed that the Qt Creator project files seem to indicate that you are using Qt 4 for this? Is that accurate?

    Any reason not to use the latest Qt and Qt Creator? Currently Qt 5.2.1. I'm installing that now.
  • jazzedjazzed Posts: 11,803
    edited 2014-02-16 20:47
    Roy Eltham wrote: »
    Hey Steve, I pulled a clone and noticed that the Qt Creator project files seem to indicate that you are using Qt 4 for this? Is that accurate?

    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.
  • jazzedjazzed Posts: 11,803
    edited 2014-02-16 22:05
    Roy,

    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.
  • jazzedjazzed Posts: 11,803
    edited 2014-02-17 00:12
    Ok, repository now builds with Qt 5.2.1 and QtCreator 3.0.1. Did some basic tests, and things seem to work ok.

    This means that builds will not work with Qt4 vintage libraries now, although I'll try to make the code compatible with that.
  • avsa242avsa242 Posts: 452
    edited 2014-02-17 02:56
    Steve,

    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
  • Roy ElthamRoy Eltham Posts: 3,000
    edited 2014-02-17 03:05
    avsa242,
    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.
  • Heater.Heater. Posts: 21,230
    edited 2014-02-17 03:11
    By way of a bit of "bike shedding" can we not call this "easyside"?

    It does not sound good and does not convey any hint at what it is.

    I liked Jon's suggestion "Propeller IDE".
Sign In or Register to comment.