Show Posts
Pages: 1 2 [3]
31  Development / Suggestions for the Arduino Project / Re: Interest in overhauling the IDE user interface? on: September 20, 2012, 02:37:26 pm
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.
https://github.com/joshmarinacci/arduinocompile

ArduinoX is the new IDE
https://github.com/joshmarinacci/arduinox

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? smiley

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.



32  Development / Suggestions for the Arduino Project / Re: Interest in overhauling the IDE user interface? on: September 13, 2012, 11:47:31 am

Quote
* 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 https://github.com/WestfW/ArduScan
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.  smiley

- Josh



 
33  Development / Suggestions for the Arduino Project / Re: Interest in overhauling the IDE user interface? on: September 12, 2012, 05:02:18 pm
I think formatting prefs is getting too in depth for this new IDE. I'm really targeting the new to intermediate developer. If you are a hard core user who wants to fully customize your development experience you should probably switch to a standard IDE like Eclipse.


Attached is the latest screenshot.  You can now open, edit, and save a sketch as well as compile and download it to a Diecimila (it's hard coded to the particular board I happen to have on my desk).  I've put the first code drop into a new repo on git hub here. Note that it's probably still not compilable by anyone but me, but you can poke around if you feel like it.

https://github.com/joshmarinacci/arduinox

In addition to the download feature it now has a standard font bundled in it (Ubuntu Monospace). The sidebar you see on the right is where the help text will go.  This *is* html loaded locally, but it is using Swing's text support which is a small subset of CSS 2. Still, it should be enough for nicely formatted help text.

Again the look and feel can be ignored for now. I want to focus on layout and features first, then worry about having a good color scheme, fonts, icons, etc.

So far the feature list is:

* create/open/save/download a sketch with minimum configuration
* intelligently save prefs for font size, window position, loaded tabs, USB port, etc.
* improve the layout, text editor, and tab system
* improve keybindings and other platform specific UX

What else should we have? 

* 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. On mac each port is listed twice and the bluetooth devices are listed, which is nonsense.

* Is there a better way to interact with examples?  What about common code snippets for novice users to use?

* code visualization? List the pins you are using?  Show a photo of your arduino board indicating the pins you are using.

Dream big folks!


- Josh
34  Development / Suggestions for the Arduino Project / Re: Interest in overhauling the IDE user interface? on: September 11, 2012, 10:20:54 pm
Could you be more specific on the curly braces? You mean that braces are a different color than other text, or that each pair of braces is another color. Perhaps deeply nested braces are darker?

-j
35  Development / Suggestions for the Arduino Project / Re: Interest in overhauling the IDE user interface? on: September 11, 2012, 01:28:12 pm
I've got more of my prototype running now. The working name is "Arduino X".  See the attached screenshot.  Note that this is definitely *not* what it will look like beyond the basic layout. This is just a test to prove I can properly style the text editor. Notice the line numbers on the left side and syntax highlighting in the editor. Keywords and comments are rendered differently than other strings.   This is all done with the JSyntaxPane project.  I'm also using a custom font (Ubuntu's monospace font).  Now that I've proven we can style it we can start deciding what the default style(s) should actually look like. Which font, color scheme, etc.

In terms of functionality the prototype can now successfully compile the Blink example.

What other features would you like? It seems there is a strong desire to have settings saved on a per-sketch basis. What settings should be like that? Font size? Window location? USB port?

-j
36  Development / Suggestions for the Arduino Project / Re: Interest in overhauling the IDE user interface? on: September 10, 2012, 08:36:26 pm
The docs would be local still, but using HTML would give us very nice formatting.
37  Development / Suggestions for the Arduino Project / Re: Interest in overhauling the IDE user interface? on: September 10, 2012, 06:27:23 pm
I'm digging into the Arduino IDE codebase now. It's not too complicated but it really seems like a mess. Basic compilation is done in a fairly convoluted way. There are a whole lot of references to compiling Java code.  Is there a reason for this? I'm guessing there is a lot of history in this codebase, so I'm weighing fixing it vs replacing it.  So far I have built a straightforward class that can successfully compile a sketch to a hex file. Adding support for alternate cores, multiple libs, and the other stuff should be fairly easy.

On the GUI, I've done some more prototyping. I'm trying to decide between using Swing or JavaFX.  JavaFX is the future of desktop Java and a lot prettier. Unfortunately it doesn't have a robust text editor, so doing things like Syntax Highlighting won't be possible for a while.  If I go with Swing then I can put something together very fast that will look decent, but it won't have access to the new JavaFX features.  In particular, it won't have access to the nice WebView.  I was really hoping to use the WebView for inline help / docs.  Thoughts? Does anyone care what it's written in?

- J
38  Development / Suggestions for the Arduino Project / Re: Interest in overhauling the IDE user interface? on: September 06, 2012, 11:56:07 am
could you post a picture of what you mean? Is it just that text is hard to read with a yellow selection?
39  Development / Suggestions for the Arduino Project / Re: Interest in overhauling the IDE user interface? on: September 06, 2012, 10:58:08 am
I don't understand what you mean by 'screen of custard'.
40  Development / Suggestions for the Arduino Project / Re: Interest in overhauling the IDE user interface? on: September 04, 2012, 09:38:02 pm
Thanks for the feedback. I'm looking through existing issues to find ideas for improvements (which is where I found the request for a Windows menu).

Here is a first mockup of what it would look like.  Hopefully the icons make sense.  The right sidebar contains help so you can learn about the language, functions, and any installed libraries right from within the IDE.

41  Development / Suggestions for the Arduino Project / Re: Interest in overhauling the IDE user interface? on: August 31, 2012, 12:44:44 pm
I love that there are professional quality alternative IDEs but that is no reason to let the main Arduino developer tool atrophy.  We are talking about the first thing that a new user experiences. It should be as good as possible.


I suggest a two phased approach. First, implement a bunch of small fixes and improvements that increase usability without fundamentally adding anything new.  Things like:

* Smooth fonts
* Resize fonts with a shortcut (cmd+ and cmd- usually)
* Match native key bindings. Right now certain keybindings are available in native apps that aren't there in the IDE.  Ctrl-A for start of line, for example. (on Mac)
* Serial port names.  When the IDE asks you for the serial port of your Arduino it gives you a list of names that contain no useful information. There must be some way to fix this.  Perhaps if there is only one serial port attached we don't even ask you, just assume the default.
* Add a "Window" menu showing the currently open windows
* line numbers in the gutter
* a selection of nice alternative color themes
* make the toolbar look nicer (new colors? gradients?)
* switch to nicer icons from the Noun project.
* make the serial port dock-able with the main window
* support fullscreen mode on OSes that support such a concept.

The second phase would tackle deeper issues

* syntax highlighting and code completion
* a sidebar with inline help for the language reference
* a sidebar with docs on each library you have imported into your project
* a way to discover and add new libraries from within your IDE. Perhaps a repo of common arduino libs?

thoughts?

- Josh
42  Development / Suggestions for the Arduino Project / Interest in overhauling the IDE user interface? on: August 31, 2012, 12:45:18 am
Is there any interest and / or plans to overhaul the user interface of the GUI?  While it is simple it feels very dated and could be far more user friendly.

I am new to Arduino and hardware hacking, but I am a UI expert and worked on the Swing team at Sun for five years (the IDE is written in Java Swing).  I would love to help out on such a project.

Thanks,
  Josh
43  Forum 2005-2010 (read only) / Development / Re: Where is the actual compiler? on: November 12, 2009, 02:58:27 am
Weird. My copy of Arduino for Mac doesn't have that dir inside the package. But I just downloaded a new copy from here:
http://arduino.cc/en/Main/Software
and it *does* contain the avr binaries. Thanks!
44  Forum 2005-2010 (read only) / Development / Re: Where is the actual compiler? on: November 12, 2009, 01:52:56 am
I'm running the Arduino IDE on mac. To the best of my knowledge it didn't install anything anywhere else, so I would think it's in the .app bundle.

To get those tools on Linux did you do a separate install for the compiler or was that part of the Arduino download?
45  Forum 2005-2010 (read only) / Development / Where is the actual compiler? on: November 12, 2009, 01:16:40 am
I'm working on a project which will use the underlying Arduino tools but not use the visual IDE. It will be headless, essentially. To do this I've looked at how the Ardunio IDE works. It appears to turn the processing code into C code then invoke the commandline avr gcc compiler to compile and link it. Then runs avrdude to upload it to the board.

What I can't figure out is where the actual compiler is. I've downloaded both the mac and linux versions. Both have a tools directory but it only contains the avrdude program. Yet the IDE can clearly do the compile. Is it in a jar somewhere?

Thanks,
 Josh
Pages: 1 2 [3]