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

104 Commits

Author SHA1 Message Date
Cristian Maglie
2f68d2af1b Remove Base dependency from AstractTextMonitor
See https://github.com/arduino/Arduino/pull/8704#issuecomment-477585720
2019-07-18 10:38:37 +02:00
Pieter12345
1a6d55480c Make text monitor output area font size dynamically adjustable
Add CTRL +/- and CTRL scroll shortcuts to increase/decrease serial/network monitor output text size. This font size is shared with the editor and adjusting either will update both.
Partially fixes #8615
2019-03-26 17:18:11 +01:00
Sandeep Mistry
3e9448d34b Disable serial monitor for non-SSH network ports 2017-03-20 15:09:54 +01:00
Matthijs Kooijman
f57b90c1c8 Remove code that preserves caret position during auto format
`EditorTab.setText()` now already preserves the caret position. The code
used during auto-format tried a bit harder to preserve the position
correctly, and probably worked better in a few specific cases, but for
most cases they would both end up approximating the caret position
anyway. To make the code simpler, better just stick to the simpler
approach.
2016-08-26 16:42:44 +02:00
Matthijs Kooijman
6558c0654e Remove all highlights in EditorTab.setText()
When completely replacing all text, all highlights will end up at the
start of the file. Since keeping them at the right place is tricky (even
impossible in some circumstances), just remove them now.

This already happened in the autoformat code, so that part can be
removed.
2016-08-26 16:42:44 +02:00
Matthijs Kooijman
c08fd76cad Remove UndoManager stuff from AStyle
The only change that happens is a single `setText()` call, which already
results in a single undo action.
2016-08-26 16:42:44 +02:00
Matthijs Kooijman
ca573351bb Do not store file contents in SketchCode
Now that each file in the sketch has its own text area in the GUI, it is
no longer needed to store the (possibly modified) contents of each file
inside SketchCode. Keeping the contents in the text area is sufficient.
Doing so allows removing the code that dealt with copying contents from
the text area into the SketchCode instance at the right time, which was
fragile and messy.

However, when compiling a sketch, the current (modified) file contents
still should be used. To allow this, the TextStorage interface is
introduced. This is a simple interface implemented by EditorTab, that
allows the SketchCode class to query the GUI for the current contents.
By using an interface, there is no direct dependency on the GUI code. If
no TextStorage instance is attached to a SketchCode, it will just assume
that the contents are always unmodified and the contents from the file
will be used during compilation.

When not using the GUI (e.g. just compiling something from the
commandline), there is no need to load the file contents from disk at
all, the filenames just have to be passed to arduino-builder and the
compiler. So, the SketchCode constructor no longer calls its `load()`
function, leaving this to the GUI code to call when appropriate. This
also modifies the `SketchCode.load()` function to return the loaded
text, instead of storing it internally.

To still support adding new files to a sketch (whose file does not
exist on disk yet), the EditorTab constructor now allows an initial
contents to be passed in, to be used instead of loading from disk. Only
the empty string is passed for new files now, but this could also be
used for the bare minimum contents of a new sketch later (which is now
down by creating a .ino file in a temporary directory).

Another side effect of this change is that all changes to the contents
now happen through the text area, which keeps track of modifications
already. This allows removing all manual calls to `Sketch.setModified()`
(even more, the entire function is removed, making `Sketch.isModified()`
always check the modification status of the contained files).
2016-08-26 16:42:44 +02:00
Matthijs Kooijman
982d4f3fbf Use a separate RSyntaxTextArea for each editor tab
RSyntaxTextArea appears to support using a single instance and replacing
the underlying text and document when switching between tabs, but in
practice this support is not complete and even though the
RSyntaxTextArea developers did some work to improve the situation, they
recommend to just use a seperate instance for each tab.

This commit implements exactly that. A new class EditorTab is introduce
to wrap the RSyntaxTextArea and containing scroll pane, and to
encapsulate the code related to handling the text area itself. Doing so
removes some quirks and prepares for some later additions. In
particular, error highlights are now no longer shared between all tabs,
which was previously the case.

This commit mostly moves code from Editor into EditorTab, and updates
the callers to use getCurrentTab() and call methods on the result
instead of calling them on Editor. Some code is added to take care of
creating multiple EditorTab objects and switching between them. Some
small changes have been made to make the flow of opening files work,
though these are mostly a bit hacky.

While moving code, changes to the rest of the code were kept minimal,
retaining existing interfaces as much as possible. This sometimes result
in less than ideal code, which should be cleaned up in subsequent
commits.

The SketchCodeDocument class has been pretty much emptied out, since
it was mostly used to store things for tabs in the background, which are
now just stored in each RSyntaxTextArea separately. The last remaining
bits of this class can probably be moved or implemented differently
later, so it can be removed.

The entire flow of working with sketches and files needs to be cleaned
up next, so no thorough attempt at testing this commit was done. It is
likely that there are plenty of corner cases and race conditions, which
will be fixed once the reset of the code is cleaned up.

Fixes #3441
2016-08-26 16:42:44 +02:00
Federico Fissore
53987f9db9 Windows: msvc*.dll are not found when loading AStyle.dll. Forcing load.
Fixes #4076
2015-11-06 13:41:59 +01:00
Federico Fissore
421508268c Removing highlight when autoformatting. Fixes #3988.
Current highlighting logic is a bit buggy: see https://github.com/bobbylight/RSyntaxTextArea/issues/150.
2015-10-26 19:41:09 +01:00
Federico Fissore
e5ddd0be3b New compiler 2015-09-14 15:21:15 +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
1af21b2233 Fixed error when redoing/undoing auto format 2015-07-06 14:35:18 +02:00
Federico Fissore
c84fb7fc90 Removed a handful of static methods delegates 2015-05-28 15:25:44 +02:00
Federico Fissore
f8aecd0f9c Autoformat was generating two undo action, the first one being an empty editor. Tested and fixed 2015-05-07 17:15:51 +02:00
Federico Fissore
c0a1ffa27a Fixed failing PdeKeywords test
Autoformat was not saving caret position any more. Fixed
2015-05-07 17:15:51 +02:00
ricardo.jl.rufino
1379505e13 new editor based on RSyntaxTextArea 2015-05-07 17:15:49 +02:00
Federico Fissore
24b32422e2 Fixed a bunch of code inspection warnings 2015-03-27 14:51:18 +01:00
Federico Fissore
17d3729426 Package names refactoring: contributions is the main package, libs and cores are subpackages 2015-03-27 14:51:16 +01:00
Federico Fissore
8e5a04f6a9 Various improvements on library manager 2015-03-27 14:51:15 +01:00
Federico Fissore
d0817f7142 Category filters for libraries and cores 2015-03-27 14:51:15 +01:00
Federico Fissore
0110fd8ff1 Core/lib manager: INSTALLED label 2015-03-27 14:51:15 +01:00
Federico Fissore
631bf76c76 Revert "Fixed selectors in Boards Manager"
This reverts commit e19cf4d1a15f70c99f64769cedc2fe2b0bc24841.
2015-03-27 14:51:15 +01:00
Federico Fissore
aa0cadbd0e Removed auto download when cores/libs empty: they are download every single time the related manager is downloaded 2015-03-27 14:51:14 +01:00
Cristian Maglie
145e0184e6 Fixed selectors in Boards Manager 2015-03-27 14:51:14 +01:00
Federico Fissore
dc27ff8b70 Core installer: status message placed at bottom right corner 2015-03-27 14:51:14 +01:00
Federico Fissore
2aec5ed4fb Fixed copyright header 2015-03-27 14:51:13 +01:00
Federico Fissore
9f68d4df74 First round of UX feedback 2015-03-27 14:51:13 +01:00
Federico Fissore
d050c4ee4a AVR bundle: by default the IDE is built bundled with the avr toolchain and cores
By passing -Dlight_bundle=1 to ant, an light/empty IDE is built
2015-03-27 14:51:13 +01:00
Federico Fissore
0435a80f6d Error messages printed in the installer dialog, also get printed in the lower black area 2015-03-27 14:51:12 +01:00
Federico Fissore
5989bb400d When the cores or libraries list are empty, they get automatically updated 2015-03-27 14:51:12 +01:00
Federico Fissore
357d5954c3 Error message is printed at the bottom of the dialog 2015-03-27 14:51:12 +01:00
Cristian Maglie
2c234a09f1 Libraries Installer UI refactor 2015-03-27 14:51:12 +01:00
Federico Fissore
f833ff84a7 Base and BaseNoGui: removed uncaught exception handler
ContributionManagerUI: after install/upgrade/remove, cell updated and not in edit mode
2015-03-27 14:51:12 +01:00
Federico Fissore
cb6514e4bb Added InstallerTableCell.setJTextPaneDimensionToFitContainedText 2015-03-27 14:51:12 +01:00
Cristian Maglie
1f564d6709 Cores Installer UI refactor (WIP) 2015-03-27 14:51:12 +01:00
Federico Fissore
589f514a47 ContributedPlatform.getResolvedTools returns a copy of the original list (otherwise violating inner state) 2015-03-27 14:51:11 +01:00
Federico Fissore
6007403834 Removed some printStackTrace in favour of throwing RuntimeExceptions. DefaultUncoughtExceptionHandler will handle them 2015-03-27 14:51:11 +01:00
Federico Fissore
fe6718ce4f Removing previously installed platform on upgrade 2015-03-27 14:51:11 +01:00
Cristian Maglie
2c941d424e Factored installer GUI code 2015-03-27 14:51:11 +01:00
Cristian Maglie
0755c7c004 Library installer UI 2015-03-27 14:51:10 +01:00
Cristian Maglie
1aab726750 Fixed glitch in "Boards Installer" GUI 2015-03-27 14:51:10 +01:00
Cristian Maglie
fe2d087ebd Implemented "Update List" button of Boards Installer. 2015-03-27 14:51:10 +01:00
Cristian Maglie
5d1e4e3f70 Inverted MVC logic on installer to get a cleaner code.
Part of the control logic was moved from listeners to GUI class methods.
This goes against a pure MVC but makes the code much more cleaner.
2015-03-27 14:51:10 +01:00
Cristian Maglie
cf058c37ba Categories and filter search on installer 2015-03-27 14:51:10 +01:00
Cristian Maglie
353a35942c Another installer GUI improvement. 2015-03-27 14:51:10 +01:00
Cristian Maglie
56ae061d7e Improved platforms installer GUI. Platforms are now downloaded from network. 2015-03-27 14:51:09 +01:00
Cristian Maglie
373a625903 GUI for platform installer, first draft 2015-03-27 14:51:09 +01:00
Federico Fissore
36079efccb Added missing license headers 2015-03-25 10:13:42 +01:00
Cristian Maglie
ba8eadeeb5 Split IDE into 2 projects.
BEWARE: HIGHLY EXPERIMENTAL BRANCH
2014-11-13 16:34:24 +01:00