1
0
mirror of https://github.com/arduino/Arduino.git synced 2024-11-28 09:24:14 +01:00

Compare commits

...

8 Commits

Author SHA1 Message Date
Ricardo JL Rufino
01192ed6e0
Merge 703c1768bb into 3278173ef8 2024-11-28 04:19:13 +01:00
Varshini Shree
3278173ef8
Add note re: Arduino IDE 2.x repo to readme, format readme 2024-10-18 09:32:19 -07:00
Ricardo JL Rufino
703c1768bb Merge branch 'pr-install-theme' of https://github.com/ricardojlrufino/Arduino.git into pr-install-theme 2020-05-13 22:08:38 -03:00
Ricardo JL Rufino
459d7a31a2 (Codacy fix) Avoid unused imports 2020-05-13 22:07:55 -03:00
Ricardo JL Rufino
0ec01c38cc (Codacy fix) Avoid unused imports 2020-05-13 21:49:35 -03:00
Ricardo JL Rufino
c906806a47 Avoid error on save, if canceled theme instalation 2020-05-13 21:39:52 -03:00
Ricardo JL Rufino
4007b8470d handle invalid themes 2020-05-13 17:15:40 -03:00
Ricardo JL Rufino
6cd2e7c356 Allow install Theme from Preferences dialog 2020-05-13 17:01:47 -03:00
3 changed files with 115 additions and 65 deletions

View File

@ -1,97 +1,59 @@
<p align="center">
<img src="http://content.arduino.cc/brand/arduino-color.svg" width="50%" />
<img src="http://content.arduino.cc/brand/arduino-color.svg" width="50%" />
</p>
Arduino is an open-source physical computing platform based on a simple I/O
board and a development environment that implements the Processing/Wiring
language. Arduino can be used to develop stand-alone interactive objects or
can be connected to software on your computer (e.g. Flash, Processing and MaxMSP).
The boards can be assembled by hand or purchased preassembled; the open-source
IDE can be downloaded for free at [https://arduino.cc](https://www.arduino.cc/en/Main/Software)
**Important Notice**: This repository contains the legacy Arduino IDE 1.x, which is no longer in active development. For the latest features and updates, please visit the [Arduino IDE 2.x](https://github.com/arduino/arduino-ide) repository. If you encounter issues related to the newer IDE, please report them there.
Arduino is an open-source physical computing platform based on a simple I/O board and a development environment that implements the Processing/Wiring language. Arduino can be used to develop stand-alone interactive objects or can be connected to software on your computer (e.g. Flash, Processing and MaxMSP). The boards can be assembled by hand or purchased preassembled; the open-source IDE can be downloaded for free at [https://arduino.cc](https://www.arduino.cc/en/Main/Software).
![Github](https://img.shields.io/github/v/release/arduino/Arduino)
## More info at
- [Our website](https://www.arduino.cc/)
- [The forums](https://forum.arduino.cc/)
- Follow us on [Twitter](https://twitter.com/arduino)
- And like us at [Facebook](https://www.facebook.com/official.arduino)
- [Our website](https://www.arduino.cc/)
- [The forums](https://forum.arduino.cc/)
- Follow us on [Twitter](https://twitter.com/arduino)
- And like us at [Facebook](https://www.facebook.com/official.arduino)
## Bug reports and technical discussions
- To report a *bug* in the software or to request *a simple enhancement* go to [Github Issues](https://github.com/arduino/Arduino/issues)
- More complex requests and technical discussion should go on the [Arduino Developers
mailing list](https://groups.google.com/a/arduino.cc/forum/#!forum/developers)
- If you're interested in modifying or extending the Arduino software, we strongly
suggest discussing your ideas on the
[Developers mailing list](https://groups.google.com/a/arduino.cc/forum/#!forum/developers)
*before* starting to work on them.
That way you can coordinate with the Arduino Team and others,
giving your work a higher chance of being integrated into the official release
- To report a *bug* in the software or to request *a simple enhancement*, go to [Github Issues](https://github.com/arduino/Arduino/issues).
- More complex requests and technical discussions should go on the [Arduino Developers mailing list](https://groups.google.com/a/arduino.cc/forum/#!forum/developers).
- If you're interested in modifying or extending the Arduino software, we strongly suggest discussing your ideas on the [Developers mailing list](https://groups.google.com/a/arduino.cc/forum/#!forum/developers) *before* starting to work on them. That way you can coordinate with the Arduino Team and others, giving your work a higher chance of being integrated into the official release.
### Security
If you think you found a vulnerability or other security-related bug in this project, please read our
[security policy](https://github.com/arduino/Arduino/security/policy) and report the bug to our Security Team 🛡️
Thank you!
If you think you found a vulnerability or other security-related bug in this project, please read our [security policy](https://github.com/arduino/Arduino/security/policy) and report the bug to our Security Team 🛡️. Thank you!
e-mail contact: security@arduino.cc
## Installation
Detailed instructions for installation in popular operating systems can be found at:
Detailed instructions for installation on popular operating systems can be found at:
- [Linux](https://www.arduino.cc/en/Guide/Linux) (see also the [Arduino playground](https://playground.arduino.cc/Learning/Linux))
- [macOS](https://www.arduino.cc/en/Guide/macOS)
- [Windows](https://www.arduino.cc/en/Guide/Windows)
- [Linux](https://www.arduino.cc/en/Guide/Linux) (see also the [Arduino playground](https://playground.arduino.cc/Learning/Linux))
- [macOS](https://www.arduino.cc/en/Guide/macOS)
- [Windows](https://www.arduino.cc/en/Guide/Windows)
## Contents of this repository
This repository contains just the code for the Arduino IDE itself.
Originally, it also contained the AVR and SAM Arduino core and libraries
(i.e. the code that is compiled as part of a sketch and runs on the
actual Arduino device), but those have been moved into their own
repositories. They are still automatically downloaded as part of the
build process and included in built releases, though.
This repository contains just the code for the Arduino IDE itself. Originally, it also contained the AVR and SAM Arduino core and libraries (i.e. the code that is compiled as part of a sketch and runs on the actual Arduino device), but those have been moved into their own repositories. They are still automatically downloaded as part of the build process and included in built releases, though.
The repositories for these extra parts can be found here:
- Non-core specific Libraries are listed under: <https://github.com/arduino-libraries/>
(and also a few other places, see `build/build.xml`).
- The AVR core can be found at: <https://github.com/arduino/ArduinoCore-avr>
- Other cores are not included by default but installed through the
board manager. Their repositories can also be found under
<https://github.com/arduino/>.
- Non-core specific Libraries are listed under: [Arduino Libraries](https://github.com/arduino-libraries/) (and also a few other places, see `build/build.xml`).
- The AVR core can be found at: [ArduinoCore-avr](https://github.com/arduino/ArduinoCore-avr).
- Other cores are not included by default but can be installed through the board manager. Their repositories can also be found under [Arduino GitHub organization](https://github.com/arduino/).
## Building and testing
Instructions for building the IDE and running unit tests can be found on
the wiki:
- <https://github.com/arduino/Arduino/wiki/Building-Arduino>
- <https://github.com/arduino/Arduino/wiki/Testing-Arduino>
Instructions for building the IDE and running unit tests can be found on the wiki:
- [Building Arduino](https://github.com/arduino/Arduino/wiki/Building-Arduino)
- [Testing Arduino](https://github.com/arduino/Arduino/wiki/Testing-Arduino)
## Credits
Arduino is an open source project, supported by many.
Arduino is an open-source project, supported by many. The Arduino team is composed of Massimo Banzi, David Cuartielles, Tom Igoe, and David A. Mellis.
The Arduino team is composed of Massimo Banzi, David Cuartielles, Tom Igoe
and David A. Mellis.
Arduino uses
[GNU avr-gcc toolchain](https://gcc.gnu.org/wiki/avr-gcc),
[GCC ARM Embedded toolchain](https://launchpad.net/gcc-arm-embedded),
[avr-libc](https://www.nongnu.org/avr-libc/),
[avrdude](https://www.nongnu.org/avrdude/),
[bossac](http://www.shumatech.com/web/products/bossa),
[openOCD](http://openocd.org/)
and code from [Processing](https://www.processing.org)
and [Wiring](http://wiring.org.co).
Icon and about image designed by [ToDo](https://www.todo.to.it/)
Arduino uses [GNU avr-gcc toolchain](https://gcc.gnu.org/wiki/avr-gcc), [GCC ARM Embedded toolchain](https://launchpad.net/gcc-arm-embedded), [avr-libc](https://www.nongnu.org/avr-libc/), [avrdude](https://www.nongnu.org/avrdude/), [bossac](http://www.shumatech.com/web/products/bossa), [openOCD](http://openocd.org/), and code from [Processing](https://www.processing.org) and [Wiring](http://wiring.org.co).
Icon and about image designed by [ToDo](https://www.todo.to.it/).

View File

@ -40,13 +40,17 @@ import processing.app.PreferencesData;
import processing.app.Theme;
import processing.app.Theme.ZippedTheme;
import processing.app.helpers.FileUtils;
import processing.app.javax.swing.filechooser.FileNameExtensionFilter;
import processing.app.legacy.PApplet;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.WindowEvent;
import java.io.File;
import java.io.IOException;
import java.util.Collection;
import java.util.LinkedList;
@ -792,7 +796,10 @@ public class Preferences extends javax.swing.JDialog {
if (comboTheme.getSelectedIndex() == 0) {
PreferencesData.set("theme.file", "");
} else {
PreferencesData.set("theme.file", ((ZippedTheme) comboTheme.getSelectedItem()).getKey());
Object selectedItem = comboTheme.getSelectedItem();
if(selectedItem instanceof ZippedTheme) {
PreferencesData.set("theme.file", ((ZippedTheme) selectedItem).getKey());
}
}
String newSizeText = fontSizeField.getText();
@ -869,6 +876,22 @@ public class Preferences extends javax.swing.JDialog {
comboTheme.setSelectedItem(theme);
}
}
// Allow install new themes.
String installItem = "-- " + tr( "Install from Zip" + " --");
comboTheme.addItem(installItem);
comboTheme.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Object item = comboTheme.getSelectedItem();
if (item != null && item.toString().startsWith(installItem)) {
SwingUtilities.invokeLater(() -> comboTheme.getUI().setPopupVisible(comboTheme, false));
handleInstallTheme();
}
}
});
Font editorFont = PreferencesData.getFont("editor.font");
fontSizeField.setText(String.valueOf(editorFont.getSize()));
@ -975,4 +998,40 @@ public class Preferences extends javax.swing.JDialog {
autoProxyFieldsSetEnabled(false);
manualProxyFieldsSetEnabled(false);
}
public void handleInstallTheme() {
JFileChooser fileChooser = new JFileChooser(System.getProperty("user.home"));
fileChooser.setDialogTitle(tr("Select a zip file containing the theme you'd like to add"));
fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
fileChooser.setFileFilter(new FileNameExtensionFilter(tr("ZIP files"), "zip"));
Dimension preferredSize = fileChooser.getPreferredSize();
fileChooser.setPreferredSize(new Dimension(preferredSize.width + 200, preferredSize.height + 200));
int returnVal = fileChooser.showOpenDialog(this);
if (returnVal != JFileChooser.APPROVE_OPTION) {
return;
}
File sourceFile = fileChooser.getSelectedFile();
if (!sourceFile.isDirectory()) {
try {
ZippedTheme theme = Theme.install(sourceFile);
if(theme != null) {
comboTheme.addItem(theme);
comboTheme.setSelectedItem(theme);
}
} catch (IOException e) {
base.getActiveEditor().statusError(e);
return;
}
}
}
}

View File

@ -47,6 +47,8 @@ import java.net.MalformedURLException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.StandardCopyOption;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
@ -66,6 +68,7 @@ import org.apache.batik.transcoder.TranscoderOutput;
import org.apache.batik.transcoder.image.PNGTranscoder;
import org.apache.commons.compress.utils.IOUtils;
import org.apache.commons.lang3.StringUtils;
import processing.app.helpers.OSUtils;
import processing.app.helpers.PreferencesHelper;
import processing.app.helpers.PreferencesMap;
@ -724,4 +727,30 @@ public class Theme {
return null;
}
}
/**
* Intalll theme in skecthboot
* @param zipTheme
*/
static public ZippedTheme install(File zipTheme) throws IOException{
// Validate...
ZippedTheme theme = ZippedTheme.load(NAMESPACE_USER, zipTheme);
if(theme == null) {
throw new IOException(format(tr("Error loading theme: {0}"), zipTheme.getAbsolutePath()));
}
// Create themes folder.
File themesFolder = new File(PreferencesData.get("sketchbook.path"), "theme");
if (!themesFolder.exists()) {
themesFolder.mkdir();
}
// Copy
File dest = new File(themesFolder, zipTheme.getName());
Files.copy(zipTheme.toPath(), dest.toPath(),StandardCopyOption.REPLACE_EXISTING);
return theme;
}
}