1
0
mirror of https://github.com/arduino/Arduino.git synced 2025-02-13 07:54:20 +01:00

116 Commits

Author SHA1 Message Date
Martino Facchin
84ede60df8 Start board discovery after loading all platforms 2016-08-30 16:22:40 +02:00
Martino Facchin
e3177a5ed8 Starting version 1.6.12 2016-08-26 18:27:00 +02:00
Martino Facchin
efc07a1c0e Add Cloud API integration
This method discovers if a connected board needs an additional core and helps the user downloading it via BoardManager
2016-08-26 16:42:44 +02:00
Matthijs Kooijman
4f0af2af57 Store the build path used in Sketch
Previously, everywhere where it was needed, the path was requested from
BaseNoGui. Because the path is based on a hash of the sketch filename,
every caller would get the same path for the same sketch.

However, it makes more sense to store the path used for a given sketch
inside the Sketch object. This prevents having to pass around or
regenerate the build path everywhere, and no longer requires the build
path to be deterministic (though it still is in this commit).

This allows removing some methods and constructors of which two versions
were available - one with a build path argument and one without.
2016-08-26 16:42:44 +02:00
Matthijs Kooijman
c0f41cae5d Remove Base.removeDir() and Base.removeDescendants()
These methods shouldn't really be in Base (or BaseNoGui, which did the
actual work), especially since there is already a
`FileUtils.recursiveDelete()` which just does the same thing. This
commit removes the code from Base and BaseNoGui and instead uses the
method from FileUtils.

There is one difference between these methods: the Base methods did not
delete files if the "compiler.save_build_files" preference was set.
However, the Base methods were only used when deleting a sketch, or
deleting an existing folder before overwriting it on save as, so this
preference didn't actually do what it was supposed to anyway, so
dropping it shouldn't be a problem.
2016-08-26 16:42:44 +02:00
Matthijs Kooijman
629953e20d Rename Sketch and SketchData classes
Sketch is now called SketchController, since it didn't really represent
a sketch, but just handled the GUI-related stuff for a given sketch
(note that it is not strictly a controller in the MVC-sense, but it does
have a similar function). SketchData more accurately represented the
actual sketch, so it is now called Sketch. Below, the new names are
used.

Editor now keeps both a current Sketch and SketchController object, and
the Sketch object is created by Editor and passed to SketchController,
instead passing a File and letting SketchController create the Sketch.
Wherever possible, code now uses the Sketch directly (or indirectly,
through the new `SketchController.getSketch()`) and the accessors in
SketchController that merely forwarded to Sketch have been removed.
There are few things that now live in SketchController but should be
moved to Sketch (`isModified()`, `isUntitled()`), so some of the code
still has a dependency on SketchController that should be removed later.

This commit mostly renames classes, methods and variables, it should not
change the behaviour in any way.
2016-08-26 16:42:44 +02:00
Matthijs Kooijman
8725bb1ec4 Clean up sketch loading
Previously, the Sketch constructor called its `load()` function, which
called the `SketchData.load()` function to load files and then
`Editor.sketchLoaded()` to initialize the GUI with the loaded files.
When external editing was enabled, `Sketch.load()` was called again
when activating the Arduino app, to reload the entire sketch.

With this commit, the `Sketch.load()` function is removed, and
`SketchData.load()` is called from the SketchData constructor. Instead
of Sketch calling `Editor.sketchLoaded()`, that method is renamed
to `createTabs()` and called by `Editor.HandleOpenInternal()` directly
after creating the Sketch object.

Handling of external editor mode has also changed. When the Arduino
application is activated, instead of fully reloading the sketch (through
the now-absent `Sketch.load()` method), the new `SketchData.reload()`
method is called to reload the list of files in the sketch. If it
changed, all tabs are re-created. If not, only the current tab is
reloaded. When the user switches from one tab to another, that tab is
also reloaded. This ensures that the visible  tab is always up-to-date,
without needlessly reloading all tabs all the time. When external
editing mode is enabled or disabled, all tabs are reloaded too, to make
sure they are up-to-date.

When re-creating all tabs, no attempt is made to preserve the currently
selected tab. Since adding or removing files happens rarely, this should
not be a problem. When files are changed, the currently selected tab is
implicitly preserved (because the tab is reloaded, not recreated). The
caret (and thus scroll) position is preserved by temporarily changing
the caret update policy, so the caret does not move while the text is
swapped out. This happens in `EditorTab.setText()` now, so other callers
can also profit from it.

To support checking for a changed list of files in
`SketchData.reload()`, a `SketchCode.equals()` method is added, that
just checks if the filenames are equal. Additionally, the loading of the
file list for a sketch has now moved from `SketchData.load()` to
`SketchData.listSketchFiles()`, so `reload()` can also use it. At the
same time, this loading is greatly simplified by using a sorted Set and
`FileUtils.listFiles()`.

In external editor mode, to ensure that during compilation the version
from disk is always used instead of the in-memory version, EditorTab
detaches itself from its SketchCode, so SketchCode has no access to the
(possibly outdated) in-memory contents of the file.
2016-08-26 16:42:44 +02:00
Cristian Maglie
aea77c889d Fixed some simple warnings 2016-08-16 12:52:24 +02:00
Cristian Maglie
d5dc479e6b library_index.json is no more bundled.
There is no reason to bundle this file.

If the index file is not available an empty index is
returned by the parser.

Fix #5143
(together with e80c08: Use a specific hardware/package_index_bundled.json)
2016-08-12 17:20:03 +02:00
Cristian Maglie
b695e7ff1e Do not fail if a package_index.json is not present
Since we are not bundling a package_index.json anymore, there is no
need for the timestamp check with the existing package_index.json.
2016-08-12 10:27:35 +02:00
Cristian Maglie
7008f6c57c ContributionsIndexer now has bundled hardware path as a field 2016-08-11 10:57:05 +02:00
Cristian Maglie
e0b2cd0ffe Handle invalid versions without NullPointerExceptions 2016-08-05 18:09:42 +02:00
Cristian Maglie
701f4a23df Update revision log and bumped IDE version to 1.6.11 2016-08-05 10:58:08 +02:00
Cristian Maglie
b4ada94e44 Do not bail out if a required tool is not found
Previously a NullPointer exception was thrown.
Now the build go on and fails when the recipe cannot be replaced
the correct tool path, that is a much more informative error.
2016-08-03 18:51:08 +02:00
Cristian Maglie
723393227c Require tools from referenced core platform if used 2016-08-02 15:16:00 +02:00
Cristian Maglie
4f1b584e71 Slightly refactored tool resolution
This helps the understanding of next commits
2016-08-02 15:15:59 +02:00
Cristian Maglie
3b57462281 Use latest tools version for generic tool.paths properties 2016-08-02 15:15:59 +02:00
Martino Facchin
6f24fa6cec Pass runtime tools to arduino-builder 2016-08-02 15:15:59 +02:00
Cristian Maglie
fa0678f5b7 added 'runtime.tools.packager-name-version.path' property in the global properties map 2016-08-02 12:13:31 +02:00
Cristian Maglie
2c6f6e76c4 Boards tools are resolved using informations from package_index.json 2016-08-02 12:12:00 +02:00
Martino Facchin
830fe765b8 Refresh serial port list after loading contributed packages
Soves nameless boards if contributed cores loading is slow
2016-07-13 18:42:31 +02:00
Martino Facchin
7e4144b3fa starting version 1.6.10 2016-05-11 16:42:34 +02:00
Martino Facchin
e23bbf76c1 avoid NPE in CLI mode (boardInfo not yet initialized) 2016-04-01 11:38:53 +02:00
Martino Facchin
243fc68763 Rework Serial ports handling and add Board info menu
This commit introduces the concept of stateful board list (vs. original stateless) and board serial number.

The board is now an "entity" composed by the triplet port/vid/pid. These informations come from libListSerial "light" function. When the board list changes, it triggers a request for the additional infos to libListSerial. These information contains the serial number of the boards.

These brings a lighter and faster scanning process. Some logic has been introduced to handle a board with the S/N only exposed in the bootloader (like 32u4).
In this case the disappearing port acquires the bootloader's S/N

A menu (under Ports menu) shows the currently connected port info and can be used for bugreporting
2016-04-01 11:38:53 +02:00
Martino Facchin
9a8dd2a4a2 starting version 1.6.9 2016-03-09 17:14:24 +01:00
Martino Facchin
376cb56fc0 Starting version 1.6.8 2015-12-21 12:05:04 +00:00
Federico Fissore
46d1c89073 Windows: even old settings folder may be missing from the registry. Fixes #4124 2015-12-01 11:36:45 +01:00
Federico Fissore
aaebb0a4d6 Stored some regexps in static finals, given names to threads, and slightly
optimized ConsoleOutputStream
2015-11-27 15:07:44 +01:00
Federico Fissore
6855e91883 Fixed various Board/Library managers glitches, in particular when removing/upgrading 2015-11-24 16:14:16 +01:00
Federico Fissore
1862827c25 Portable folder can now be set to any arbitrary path, not just subfolders
of "portable". Fixes #4103
2015-11-19 13:43:49 +01:00
Federico Fissore
1328f3a9e2 Library and Boards Managers were using old copies of library/boards indeces. thus making the UI show old data. Fixes #4139 #3904 #3795 2015-11-17 12:24:28 +01:00
Federico Fissore
eb732def4f Updating version in BaseNoGui 2015-11-04 15:24:54 +01:00
Federico Fissore
a51723fe79 Updated and add libs 2015-10-28 16:43:33 +01:00
Federico Fissore
f511c2451f Fallback to stock library_index.json file if the copy in .arduino15 is missing/corrupted or if it the downloaded one if corrupted. Fixes #3778 2015-09-25 12:54:50 +02:00
Federico Fissore
3872f5d315 Whoops, local packages were loaded at all. Fixed 2015-09-25 12:28:57 +02:00
Federico Fissore
b82aebd99a If a package is already defined, don't replace it with the one found (for example) in sketchbook/hardware, but merge their contents. Fixes #3851 2015-09-25 12:05:19 +02:00
Federico Fissore
5b84aef301 Build path is now a function of sketch path. This allows to recycle previously
compiled files even when working with different sketches at the same time. In
such cases, recompiling is way faster
2015-09-18 10:47:23 +02:00
Federico Fissore
e5ddd0be3b New compiler 2015-09-14 15:21:15 +02:00
Federico Fissore
52fd3845ca Working on how sketches are marked readonly.
Initial refactorings: stopped using static members (static is evil)
2015-08-05 16:01:10 +02:00
Federico Fissore
50cacc1756 Got rid of Java 8 warnings about _ as a method name 2015-08-05 09:12:40 +02:00
Federico Fissore
43f33d8220 Tools marked as installed but missing (as when you want to use a system installed avr-gcc) sets to "" the final build preference. Fixes #3074 2015-07-09 15:16:19 +02:00
Federico Fissore
987cad2633 Added core "post install" and "pre uninstall" script support.
If a core has a post/pre install/uninstall script, it will be execute at the appropriate time IF:
1) source (package_*_index) is trusted (GPG signed)
2) or users have explicitly added line "contributions.trust.all=true" to their preferences.txt
Some minor refactor and clean up while I was at it
2015-07-03 16:35:08 +02:00
Federico Fissore
fef4e56044 Tools path unversioned properties are adjusted right before compiling.
This way, when multiple versions of, e.g., bossac are installed and
a platform uses bossac 1.5, core author will be able to specify just
tools.bossac.path={runtime.tools.bossac.path}
and the IDE will set it to right version of bossac
Fixes #3325
2015-07-01 17:11:25 +02:00
Federico Fissore
46058a5bf6 BaseNoGui.currentDirectory needs to be initialized before anything else 2015-06-29 15:10:42 +02:00
Federico Fissore
6e8e3a7bad Falling back to "user.dir" in case "APP_DIR" is missing 2015-06-29 14:47:13 +02:00
Federico Fissore
b8b1dc2327 Dropping --curdir CLI argument support 2015-06-29 14:28:16 +02:00
Federico Fissore
85ae80b6f9 Introducing APP_DIR property. Allows the IDE to know its installation folder.
Also upgrading appbundler with a patched version: https://bitbucket.org/ffissore/appbundler It allows to know the current working directory
These two put together, we can now rely on APP_DIR when loading IDE resources while being sure current working directory is properly set, thus being much more friendly when run from CLI
Fixes #1493
2015-06-29 14:28:16 +02:00
Federico Fissore
ea55a2edc3 Windows: migrating from AppData\Roaming\Arduino15 to AppData\Local\Arduino15.
Migration occurs when NO preferences file location is provided (CLI only), when new location does not exist and when there is something to migrate. Fixes #2902
2015-06-25 11:36:43 +02:00
Federico Fissore
9165af4751 By omitting curly braces, your code won't run faster. Your colleague will run slower. 2015-06-19 17:44:28 +02:00
Federico Fissore
ad8046dab5 Starting 1.6.6 2015-06-16 12:45:05 +02:00