Interest in overhauling the IDE user interface?

Re the help. Can you have a hot key (F2?) to bring up the help for a function? Either based on where the mouse/cursor is or maybe you have to highlight the function.

Word boundaries. Currently the IDE uses inappropriate characters as word boundaries, for example

int in_Byte = Serial1.read();

If I double click on in_Byte because I want to copy it I only get "in" or "Byte", depending on where I click. In a programming language this should be considered a single word.

So either allow the setup of word boundary chars or just exclude some common ones like _.

This also applies to ^arrowing, if I ^ left arrow I want the cursor to skip the entire in_Byte, currently it's 3 key strokes to get over the var name.


Rob

Graynomad:
Re the help. Can you have a hot key (F2?) to bring up the help for a function? Either based on where the mouse/cursor is or maybe you have to highlight the function.

Word boundaries. Currently the IDE uses inappropriate characters as word boundaries, for example

int in_Byte = Serial1.read();

If I double click on in_Byte because I want to copy it I only get "in" or "Byte", depending on where I click. In a programming language this should be considered a single word.

So either allow the setup of word boundary chars or just exclude some common ones like _.

This also applies to ^arrowing, if I ^ left arrow I want the cursor to skip the entire in_Byte, currently it's 3 key strokes to get over the var name.


Rob

Current ide select whole var when I double click vars with "aaa_aaa" :open_mouth: and CTRL+Shift+F opens the reference

Current ide select whole var when I double click vars with "aaa_aaa" :open_mouth: and CTRL+Shift+F opens the reference

Not for me, but I'm using 1.0.


Rob

  • I really hate the current way you choose serial ports. Is there any way to know what device is connected to a serial port? Can't we detect if the arduino is an Uno vs Leo vs Decimila instead of having to ask the user? I also hate having to use the /dev/usb blah blah names.

This depends on whether java can access usb and/or registry-related system calls. You can theoretically get the usb device information associated with a serial port, and figure out whether they are likely to be Arduinos, and if so which type of arduino. (although, I wouldn't rely on this entirely, since it's common practice to use somewhat random usb/serial converter chips/cables/etc as a cost-saving scheme.)
There's an example (for windows, where things are worse) at GitHub - WestfW/ArduScan: ArduScan is a windows program that passively scans the COM ports on a system looking for ones that are likely to be Arduinos
The double-listing on Mac's is Apple's fault; can you really guarantee that /dev/tty.usbserial-xxx and /dev/cu.usbserial-xxxx are the same piece of hardware?

Could you answer my earlier question about Swing vs local editing styles? I'm genuinely curious...

You're missing the existing keyword-based highlighting of Arduino Functions (digitalWrite(), etc)), and I disapprove of the reduction of information in the compiler interaction part of the display. "we" have been trying to get more information there (RAM usage in addition to flash usage, in particular.)

Listing pin usage would be interesting. Sort of baby-steps to actual simulation at some point...

Oops, I take part of that back, CTRL+Shift+F does work if you highlight the entire word.

Double clicking aaa_aaa doesn't though.


Rob

Graynomad:
Oops, I take part of that back, CTRL+Shift+F does work if you highlight the entire word.

Double clicking aaa_aaa doesn't though.


Rob

In what OS are you testing? double click works nice to me and I improved ctrl+shift+f feature in my modded ide (no requires full selection or even any selection), also I improved the copy and cut

Vista.


Rob

westfw:

  • I really hate the current way you choose serial ports. Is there any way to know what device is connected to a serial port? Can't we detect if the arduino is an Uno vs Leo vs Decimila instead of having to ask the user? I also hate having to use the /dev/usb blah blah names.

This depends on whether java can access usb and/or registry-related system calls. You can theoretically get the usb device information associated with a serial port, and figure out whether they are likely to be Arduinos, and if so which type of arduino. (although, I wouldn't rely on this entirely, since it's common practice to use somewhat random usb/serial converter chips/cables/etc as a cost-saving scheme.)
There's an example (for windows, where things are worse) at GitHub - WestfW/ArduScan: ArduScan is a windows program that passively scans the COM ports on a system looking for ones that are likely to be Arduinos
The double-listing on Mac's is Apple's fault; can you really guarantee that /dev/tty.usbserial-xxx and /dev/cu.usbserial-xxxx are the same piece of hardware?

Could you answer my earlier question about Swing vs local editing styles? I'm genuinely curious...

You're missing the existing keyword-based highlighting of Arduino Functions (digitalWrite(), etc)), and I disapprove of the reduction of information in the compiler interaction part of the display. "we" have been trying to get more information there (RAM usage in addition to flash usage, in particular.)

Listing pin usage would be interesting. Sort of baby-steps to actual simulation at some point...

Hmm. It sounds like I could make educated guesses based on HID info but it will always be iffy. I was hoping there was a way to open the serial port and get some info from the board itself. No?
On Mac at least I can probably filter out the dupes. We could also do something like a button to "never show me this port again because I know it's not an arduino".

Historically Swing did everything in pure Java for maximum portability and reliability across platforms. Believe it or not it is common for large companies to want their software to look exactly the same on all platforms, regardless of the native conventions. Eventually we introduced the so called 'native look and feels' because it turned out a lot of people did want a more native looking app. However, these decisions all date back to the mid-90s. Today we now know that most people don't care if an app 'looks native' because they are used to so many different interfaces on the web. They do care that the interface is good, of course, but not necessarily native looking. This is all about look though. The feel is far more important. Things like keybindings and common menus matter a lot more that how an app looks.

So. How does this affect the new IDE? I'm unsure of which Swing theme to use. For now I'm going with Nimbus, which is a recent (4 yrs) cross platform look and feel that is pretty modern looking. However, regardless of which theme we end up shipping with (I do think it's good to have just one theme, not switchable) the feel must be platform dependent. That means patching up all of the keybindings to be appropriately native. Most of this we should be able to get from swing itself, but I might have to patch in a few parts. We also need proper 'Window', 'Preferences', 'About', and 'Help' menus and should remember window placement.

In the end these details matter only in the context of the whole. What is the vision for the IDE? My vision is a beautiful IDE custom made for Arduino. Something that both new and experienced users alike will enjoy. New users find it easy to get started and helps them learn. Experienced users have powerful tools that help them be more productive, while not hindering the new users. I'm trying to think the way that Apple does. Every setting in the preferences dialog represents a failure. Ideally we would have not settings at all because we correctly predict everything the user wants. In practice that is impossible, but it's a good ideal to guide us.

I've decided to move away from the Processing IDE base. Ultimately Arduino needs it's own IDE. We need the flexibility to drive the interface in a way that makes sense for our users. The current codebase, while functional, makes customization a lot more difficult. I see why they started with Processing, but I think we can do better.

Okay. Rant off. Back to coding. :slight_smile:

  • Josh

I've decided to move away from the Processing IDE base. Ultimately Arduino needs it's own IDE.

Good, I see no reason to be hamstrung by some backwards-compatibility issue. The IDE may have been based on Processing but it serves a different purpose and it's time to fork the thing and create a more useful product.

Of course you stand NO chance of getting this officially sanctioned, but no matter, if it's good and open source it will get a life of its own.

It is possible I guess that there will be a new IDE released with the Due, if so that may change the playing field a little.


Rob

I was hoping there was a way to open the serial port and get some info from the board itself. No?

Maybe. But you MUST NOT do so. Active probing of serial ports is a really bad idea, because you don't know what might be connected. Also, for certain types of serial port (bluetooth, tcp, zigbee, etc) merely opening the serial port may take a significant amount of time. Even on actual Arduinos, opening the serial port can/will cause a board-level reset...

"I've decided to move away from the Processing IDE base. Ultimately Arduino needs it's own IDE."

Can you make it work for the STM8S-Discovery board too ? I have a box of them in a cupboard, but only know a smattering of Ardunio programming :slight_smile:

Can you make it work for the STM8S-Discovery board too ?

  1. That's not an "IDE User Interface" improvement.
  2. It'd be very difficult, since STM8S doesn't have a gcc port.

Its a shame the STM8S didn't have a user group like Arduino.

I bought in a box of them a few years back for an aborted project ( someone else was doing the software )

Then I found Arduino, and as they say, the rest is history ( mystery sometimes :slight_smile: )

Its a shame the STM8S didn't have a user group like Arduino.

Oh yes; there are any number of pieces of hardware that theoretically had very similar features to Arduino, and trying to figure out why they failed to get much of a following, while arduino DID, is quite philosophically challenging. One supposes that despite the complaints on various fronts, the Arduino folk must be doing something right.

Perhaps it was the quaint offpitch terminals pins that swung it :slight_smile: , whatever it was it got me out of 40 years of designing with 4000 series logic !

I still havn't got onto v1 yet, too put off by changes to libraries that I dont understand..

Boffin1:
What bugs me is the "Screen of Custard " when trying to select a couple of lines of text :frowning:

...

I've got the same frustration. It's an IDE problem. I don't have it with any other program under Windows 7.

I've got another update to the project. For now it is named ArduinoX (I'm guessing 'arduino' is trademarked so we can't use that in the final IDE name).

Code is moved to github and split into two projects.

ArduinoCompile is a small standalone lib which does the actual code assembly, compilation, and downloading to hardware.

ArduinoX is the new IDE

The newest version doesn't look too much different other than the dropdown to select a serial port. The serial port list is filtered (on Mac) to remove duplicates. You can also choose to remove extraneous ports that will never be used like the Bluetooth modem. If there is only one port left (the common case) then it will automatically be chosen. The serial port setting is saved on a per-sketch basis in a settings.properties file.

Other improvements include:

  • new sketch action
  • dirty buffer checking to warn you if you quit with unsaved files
  • Window menu works correctly, listing all of the open sketches you have

At this point is it time to move discussion to one of the other forums instead of the "Suggestions for Arduino Project" category? :slight_smile:

I also had another fun idea. It's common to use an arduino as a way to get sensor data on to a computer, at least in the initial stages of a project. Would it be useful to have an easy to use graphing system in the IDE so you can monitor the values of the sensors you have hooked up, and then save to CSV file for later? This wouldn't replace standalone tools but would get you going faster.

"Would it be useful to have an easy to use graphing system in the IDE so you can monitor the values of the sensors you have hooked up, and then save to CSV file for later?"

I think this does that. Or at least part of that. Maybe use as a starting point.

http://www.negtronics.com/simplot

@crossroads
Thanks for this link. Looks like something I wanted to know about earlier :slight_smile:
Best regards
Jantje

Didn't read through all since im in a hurry, but something that i really think is lacking in the IDE is to save the project file separate from the source file(s).
When im writing a big project with classes and stuff, i want to have the code neatly organized in different files which are all referenced when i load the project file.
That way other stuff could be saved in the project file too, like the board version and compilation options, without affecting the source files.