diff --git a/.gitignore b/.gitignore
index 3c8c0fe5c..d88f1f2da 100644
--- a/.gitignore
+++ b/.gitignore
@@ -72,3 +72,4 @@ nbproject
build/macosx/esptool-*-osx.zip
build/macosx/dist/osx-xtensa-lx106-elf.tgz
+/hardware/esp8266com/esp8266/tools
diff --git a/app/src/cc/arduino/view/preferences/AdditionalBoardsManagerURLTextArea.form b/app/src/cc/arduino/view/preferences/AdditionalBoardsManagerURLTextArea.form
index 0d47750a3..a8b6eb4bd 100644
--- a/app/src/cc/arduino/view/preferences/AdditionalBoardsManagerURLTextArea.form
+++ b/app/src/cc/arduino/view/preferences/AdditionalBoardsManagerURLTextArea.form
@@ -3,7 +3,9 @@
diff --git a/app/src/cc/arduino/view/preferences/AdditionalBoardsManagerURLTextArea.java b/app/src/cc/arduino/view/preferences/AdditionalBoardsManagerURLTextArea.java
index a75e1c8b4..c4ed51e02 100644
--- a/app/src/cc/arduino/view/preferences/AdditionalBoardsManagerURLTextArea.java
+++ b/app/src/cc/arduino/view/preferences/AdditionalBoardsManagerURLTextArea.java
@@ -74,6 +74,7 @@ public class AdditionalBoardsManagerURLTextArea extends javax.swing.JDialog {
javax.swing.JScrollPane jScrollPane1 = new javax.swing.JScrollPane();
javax.swing.JButton cancel = new javax.swing.JButton();
javax.swing.JButton ok = new javax.swing.JButton();
+ javax.swing.JLabel jLabel1 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle(_("Additional Boards Manager URLs"));
@@ -99,6 +100,8 @@ public class AdditionalBoardsManagerURLTextArea extends javax.swing.JDialog {
}
});
+ jLabel1.setText(_("Enter additional URLs, one for each row"));
+
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
@@ -107,18 +110,23 @@ public class AdditionalBoardsManagerURLTextArea extends javax.swing.JDialog {
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
- .addGap(0, 439, Short.MAX_VALUE)
+ .addGap(0, 332, Short.MAX_VALUE)
.addComponent(ok)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(cancel))
- .addComponent(jScrollPane1))
+ .addComponent(jScrollPane1)
+ .addGroup(layout.createSequentialGroup()
+ .addComponent(jLabel1)
+ .addGap(0, 0, Short.MAX_VALUE)))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
- .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 141, Short.MAX_VALUE)
+ .addComponent(jLabel1)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 118, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(cancel)
@@ -139,48 +147,6 @@ public class AdditionalBoardsManagerURLTextArea extends javax.swing.JDialog {
cancelActionPerformed(evt);
}//GEN-LAST:event_okActionPerformed
- /**
- * @param args the command line arguments
- */
- public static void main(String args[]) {
- /* Set the Nimbus look and feel */
- //
- /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
- * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
- */
- try {
- for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
- if ("Nimbus".equals(info.getName())) {
- javax.swing.UIManager.setLookAndFeel(info.getClassName());
- break;
- }
- }
- } catch (ClassNotFoundException ex) {
- java.util.logging.Logger.getLogger(AdditionalBoardsManagerURLTextArea.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
- } catch (InstantiationException ex) {
- java.util.logging.Logger.getLogger(AdditionalBoardsManagerURLTextArea.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
- } catch (IllegalAccessException ex) {
- java.util.logging.Logger.getLogger(AdditionalBoardsManagerURLTextArea.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
- } catch (javax.swing.UnsupportedLookAndFeelException ex) {
- java.util.logging.Logger.getLogger(AdditionalBoardsManagerURLTextArea.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
- }
- //
-
- /* Create and display the dialog */
- java.awt.EventQueue.invokeLater(new Runnable() {
- public void run() {
- AdditionalBoardsManagerURLTextArea dialog = new AdditionalBoardsManagerURLTextArea(new javax.swing.JFrame());
- dialog.addWindowListener(new java.awt.event.WindowAdapter() {
- @Override
- public void windowClosing(java.awt.event.WindowEvent e) {
- System.exit(0);
- }
- });
- dialog.setVisible(true);
- }
- });
- }
-
public void setText(String text) {
Collection urls = splitAndTrim(text, ",");
additionalBoardsManagerURLs.setText(Joiner.on("\n").skipNulls().join(urls));
diff --git a/app/src/cc/arduino/view/preferences/Preferences.form b/app/src/cc/arduino/view/preferences/Preferences.form
index 828645018..8f6215f66 100644
--- a/app/src/cc/arduino/view/preferences/Preferences.form
+++ b/app/src/cc/arduino/view/preferences/Preferences.form
@@ -75,21 +75,16 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -472,6 +467,9 @@
+
+
+
@@ -479,6 +477,11 @@
+
+
+
+
+
diff --git a/app/src/cc/arduino/view/preferences/Preferences.java b/app/src/cc/arduino/view/preferences/Preferences.java
index 2d0262970..584b1bcb5 100644
--- a/app/src/cc/arduino/view/preferences/Preferences.java
+++ b/app/src/cc/arduino/view/preferences/Preferences.java
@@ -379,6 +379,9 @@ public class Preferences extends javax.swing.JDialog {
);
additionalBoardsManagerLabel.setText(_("Additional Boards Manager URLs: "));
+ additionalBoardsManagerLabel.setToolTipText(_("Enter a comma separated list of urls"));
+
+ additionalBoardsManagerField.setToolTipText(_("Enter a comma separated list of urls"));
extendedAdditionalUrlFieldWindow.setIcon(new ImageIcon(Base.getThemeImage("newwindow.gif", this)));
extendedAdditionalUrlFieldWindow.addActionListener(new java.awt.event.ActionListener() {
@@ -490,18 +493,15 @@ public class Preferences extends javax.swing.JDialog {
.addComponent(preferencesFileLabel))
.addGap(0, 0, Short.MAX_VALUE))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
- .addGap(0, 0, Short.MAX_VALUE)
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
- .addComponent(additionalBoardsManagerLabel)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(additionalBoardsManagerField, javax.swing.GroupLayout.PREFERRED_SIZE, 494, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(extendedAdditionalUrlFieldWindow, javax.swing.GroupLayout.PREFERRED_SIZE, 36, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
- .addComponent(okButton)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(cancelButton)))))
+ .addComponent(okButton)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(cancelButton))
+ .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
+ .addComponent(additionalBoardsManagerLabel)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(additionalBoardsManagerField, javax.swing.GroupLayout.PREFERRED_SIZE, 500, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(extendedAdditionalUrlFieldWindow, javax.swing.GroupLayout.PREFERRED_SIZE, 36, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap())
);
layout.setVerticalGroup(
diff --git a/app/src/processing/app/Editor.java b/app/src/processing/app/Editor.java
index 37d258ed1..9ca878055 100644
--- a/app/src/processing/app/Editor.java
+++ b/app/src/processing/app/Editor.java
@@ -1422,7 +1422,7 @@ public class Editor extends JFrame implements RunnerListener {
if (find == null) {
find = new FindReplace(Editor.this);
}
- if (!OSUtils.isMacOS() && getSelectedText() != null) {
+ if (!OSUtils.isMacOS()) {
find.setFindText(getSelectedText());
}
find.setLocationRelativeTo(Editor.this);
@@ -1458,11 +1458,8 @@ public class Editor extends JFrame implements RunnerListener {
if (find == null) {
find = new FindReplace(Editor.this);
}
- if (getSelectedText() != null) {
- find.setFindText(getSelectedText());
- }
- find.setLocationRelativeTo(Editor.this);
- find.setVisible(true);
+ find.setFindText(getSelectedText());
+ find.findNext();
}
});
menu.add(item);
diff --git a/app/src/processing/app/FindReplace.java b/app/src/processing/app/FindReplace.java
index df1c95114..1c3b380d9 100644
--- a/app/src/processing/app/FindReplace.java
+++ b/app/src/processing/app/FindReplace.java
@@ -439,9 +439,12 @@ public class FindReplace extends JFrame implements ActionListener {
}
}
- public void setFindText(String t) {
- findField.setText(t);
- findString = t;
+ public void setFindText(String text) {
+ if (text == null) {
+ return;
+ }
+ findField.setText(text);
+ findString = text;
}
public void findNext() {
diff --git a/hardware/esp8266com/esp8266/cores/esp8266/debug.cpp b/hardware/esp8266com/esp8266/cores/esp8266/debug.cpp
index 5e280122e..68d3a6b82 100644
--- a/hardware/esp8266com/esp8266/cores/esp8266/debug.cpp
+++ b/hardware/esp8266com/esp8266/cores/esp8266/debug.cpp
@@ -26,6 +26,7 @@ void ICACHE_RAM_ATTR hexdump(uint8_t *mem, uint32_t len, uint8_t cols) {
for(uint32_t i = 0; i < len; i++) {
if(i % cols == 0) {
os_printf("\n[0x%08X] 0x%08X: ", mem, i);
+ yield();
}
os_printf("%02X ", *mem);
mem++;
diff --git a/libraries/Adafruit_ILI9341/Adafruit_ILI9341.cpp b/libraries/Adafruit_ILI9341/Adafruit_ILI9341.cpp
index 239a414ac..05d376aed 100644
--- a/libraries/Adafruit_ILI9341/Adafruit_ILI9341.cpp
+++ b/libraries/Adafruit_ILI9341/Adafruit_ILI9341.cpp
@@ -127,7 +127,7 @@ void Adafruit_ILI9341::spiwrite(uint8_t c) {
#endif
}
-void Adafruit_ILI9341::spiwriteBytes(uint8_t * data, uint8_t size) {
+void Adafruit_ILI9341::spiwriteBytes(uint8_t * data, uint32_t size) {
#ifdef ESP8266
SPI.writeBytes(data, size);
#else
@@ -250,13 +250,21 @@ void Adafruit_ILI9341::writeCmdData(uint8_t cmd, uint8_t * data, uint8_t size) {
spiCsHigh();
}
+uint16_t Adafruit_ILI9341::getHeight(void) {
+ return _height;
+}
+
+uint16_t Adafruit_ILI9341::getWidth(void){
+ return _width;
+}
+
// If the SPI library has transaction support, these functions
// establish settings and protect from interference from other
// libraries. Otherwise, they simply do nothing.
#ifdef SPI_HAS_TRANSACTION
#ifdef ESP8266
-SPISettings spiSettings = SPISettings(F_CPU, MSBFIRST, SPI_MODE0);
+SPISettings spiSettings = SPISettings(SPI_MAX_SPEED, MSBFIRST, SPI_MODE0);
#else
SPISettings spiSettings = SPISettings(8000000, MSBFIRST, SPI_MODE0);
#endif
@@ -438,6 +446,20 @@ void Adafruit_ILI9341::begin(void) {
}
+
+void Adafruit_ILI9341::area_update_start(uint32_t x, uint32_t y, uint32_t w, uint32_t h) {
+ spiCsLow();
+ setAddrWindow_(x, y, x + w - 1, y + h - 1);
+}
+
+void Adafruit_ILI9341::area_update_data(uint8_t *data, uint32_t pixel){
+ spiwriteBytes(&data[0], (pixel*2));
+}
+
+void Adafruit_ILI9341::area_update_end(void){
+ spiCsHigh();
+}
+
void Adafruit_ILI9341::setAddrWindow(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1) {
spiCsLow();
setAddrWindow_(x0, y0, x1, y1);
@@ -583,7 +605,7 @@ void Adafruit_ILI9341::fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint
spiCsLow();
- setAddrWindow_(x, y, x + w - 1, y + h - 1);
+ setAddrWindow_(x, y, (x + w - 1), (y + h - 1));
uint8_t colorBin[] = { (uint8_t) (color >> 8), (uint8_t) color };
spiwritePattern(&colorBin[0], 2, (w * h));
diff --git a/libraries/Adafruit_ILI9341/Adafruit_ILI9341.h b/libraries/Adafruit_ILI9341/Adafruit_ILI9341.h
index 9b33b9b98..a5cf8aa7c 100644
--- a/libraries/Adafruit_ILI9341/Adafruit_ILI9341.h
+++ b/libraries/Adafruit_ILI9341/Adafruit_ILI9341.h
@@ -158,6 +158,13 @@ class Adafruit_ILI9341 : public Adafruit_GFX {
void writedata(uint8_t * data, uint8_t size);
void writeCmdData(uint8_t cmd, uint8_t * data, uint8_t size);
+
+ uint16_t getHeight(void);
+ uint16_t getWidth(void);
+
+ void area_update_start(uint32_t x, uint32_t y, uint32_t w, uint32_t h);
+ void area_update_data(uint8_t *data, uint32_t pixel);
+ void area_update_end(void);
private:
uint8_t spiread(void);
@@ -166,7 +173,7 @@ class Adafruit_ILI9341 : public Adafruit_GFX {
#ifdef ESP8266
inline void spiwrite(uint8_t data);
inline void spiwrite16(uint16_t data);
- inline void spiwriteBytes(uint8_t * data, uint8_t size);
+ inline void spiwriteBytes(uint8_t * data, uint32_t size);
inline void spiwritePattern(uint8_t * data, uint8_t size, uint32_t repeat);
inline void setAddrWindow_(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1);