From 6dd8ec8665f8d055a9307547b403fa13c1333873 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Wed, 15 Apr 2020 19:48:36 +0200 Subject: [PATCH] Setting are applied automatically when preferences dialog is closed --- .../arduino/view/preferences/Preferences.java | 6 +++ .../src/cc/arduino/cli/ArduinoCore.java | 26 +---------- .../cc/arduino/cli/ArduinoCoreInstance.java | 45 ++++++++++++++++++- .../src/processing/app/BaseNoGui.java | 2 +- 4 files changed, 52 insertions(+), 27 deletions(-) diff --git a/app/src/cc/arduino/view/preferences/Preferences.java b/app/src/cc/arduino/view/preferences/Preferences.java index 005d2f83e..13283d049 100644 --- a/app/src/cc/arduino/view/preferences/Preferences.java +++ b/app/src/cc/arduino/view/preferences/Preferences.java @@ -32,6 +32,7 @@ package cc.arduino.view.preferences; import cc.arduino.Constants; import cc.arduino.i18n.Language; import cc.arduino.i18n.Languages; +import io.grpc.StatusException; import processing.app.Base; import processing.app.BaseNoGui; import processing.app.Editor; @@ -653,6 +654,11 @@ public class Preferences extends javax.swing.JDialog { } savePreferencesData(); + try { + BaseNoGui.getArduinoCoreService().updateSettingFromPreferences(); + } catch (StatusException e) { + e.printStackTrace(); + } base.getEditors().forEach(processing.app.Editor::applyPreferences); cancelButtonActionPerformed(evt); }//GEN-LAST:event_okButtonActionPerformed diff --git a/arduino-core/src/cc/arduino/cli/ArduinoCore.java b/arduino-core/src/cc/arduino/cli/ArduinoCore.java index 2a4ab59cb..851783216 100644 --- a/arduino-core/src/cc/arduino/cli/ArduinoCore.java +++ b/arduino-core/src/cc/arduino/cli/ArduinoCore.java @@ -90,29 +90,7 @@ public class ArduinoCore { // async = ArduinoCoreGrpc.newStub(channel); } - public void setDataDir(File dataDir) { - settingsBlocking - .setValue(SettingsOuterClass.Value.newBuilder().setKey("directories") // - .setJsonData("{ \"data\": \"" + dataDir.getAbsolutePath() + "\" }") // - .build()); - File downloadsDir = new File(dataDir, "staging"); - settingsBlocking - .setValue(SettingsOuterClass.Value.newBuilder().setKey("directories") // - .setJsonData("{ \"downloads\": \"" + downloadsDir.getAbsolutePath() - + "\" }") // - .build()); - } - - public void setSketchbookDir(File dataDir) { - settingsBlocking - .setValue(SettingsOuterClass.Value.newBuilder().setKey("directories") // - .setJsonData("{ \"user\": \"" + dataDir.getAbsolutePath() + "\" }") // - .build()); - } - - public ArduinoCoreInstance init(File dataDir, File sketchbookDir) { - setDataDir(dataDir); - setSketchbookDir(sketchbookDir); + public ArduinoCoreInstance init() { Iterator resp = coreBlocking.init(InitReq.getDefaultInstance()); Instance instance = null; while (resp.hasNext()) { @@ -131,6 +109,6 @@ public class ArduinoCore { instance = r.getInstance(); } } - return new ArduinoCoreInstance(instance, coreBlocking); + return new ArduinoCoreInstance(instance, coreBlocking, settingsBlocking); } } diff --git a/arduino-core/src/cc/arduino/cli/ArduinoCoreInstance.java b/arduino-core/src/cc/arduino/cli/ArduinoCoreInstance.java index 523cafd1e..a1701da46 100644 --- a/arduino-core/src/cc/arduino/cli/ArduinoCoreInstance.java +++ b/arduino-core/src/cc/arduino/cli/ArduinoCoreInstance.java @@ -31,6 +31,7 @@ package cc.arduino.cli; import static processing.app.I18n.tr; +import java.io.File; import java.io.IOException; import java.io.OutputStream; import java.util.ArrayList; @@ -63,20 +64,60 @@ import cc.arduino.cli.commands.Lib.LibrarySearchResp; import cc.arduino.cli.commands.Lib.LibraryUninstallReq; import cc.arduino.cli.commands.Lib.LibraryUninstallResp; import cc.arduino.cli.commands.Lib.SearchedLibrary; +import cc.arduino.cli.settings.SettingsOuterClass; +import cc.arduino.cli.settings.SettingsGrpc.SettingsBlockingStub; import cc.arduino.contributions.ProgressListener; import cc.arduino.contributions.libraries.ContributedLibraryRelease; import io.grpc.StatusException; import io.grpc.StatusRuntimeException; +import processing.app.BaseNoGui; public class ArduinoCoreInstance { private Instance instance; private ArduinoCoreBlockingStub stub; + private SettingsBlockingStub settings; public ArduinoCoreInstance(Instance instance, - ArduinoCoreBlockingStub blocking) { + ArduinoCoreBlockingStub core, + SettingsBlockingStub settings) { this.instance = instance; - this.stub = blocking; + this.stub = core; + this.settings = settings; + } + + public void updateSettingFromPreferences() throws StatusException { + setDataDir(BaseNoGui.getSettingsFolder()); + setSketchbookDir(BaseNoGui.getSketchbookFolder()); + rescan(); + } + + public void setDataDir(File dataDir) { + settings + .setValue(SettingsOuterClass.Value.newBuilder().setKey("directories") // + .setJsonData("{ \"data\": \"" + dataDir.getAbsolutePath() + "\" }") // + .build()); + File downloadsDir = new File(dataDir, "staging"); + settings + .setValue(SettingsOuterClass.Value.newBuilder().setKey("directories") // + .setJsonData("{ \"downloads\": \"" + downloadsDir.getAbsolutePath() + + "\" }") // + .build()); + } + + public void setSketchbookDir(File dataDir) { + System.out.println("SKETCHBOOK: "+dataDir.getAbsolutePath()); + settings + .setValue(SettingsOuterClass.Value.newBuilder().setKey("directories") // + .setJsonData("{ \"user\": \"" + dataDir.getAbsolutePath() + "\" }") // + .build()); + } + + public void setProxyUrl(String url) { + settings.setValue(SettingsOuterClass.Value.newBuilder() // + .setKey("network") // + .setJsonData("{ \"proxy\": \"" + url + "\" }") // + .build()); } public void boardDetails(String fqbn) throws StatusException { diff --git a/arduino-core/src/processing/app/BaseNoGui.java b/arduino-core/src/processing/app/BaseNoGui.java index 7f9d3b8fa..383f5d5cb 100644 --- a/arduino-core/src/processing/app/BaseNoGui.java +++ b/arduino-core/src/processing/app/BaseNoGui.java @@ -107,7 +107,7 @@ public class BaseNoGui { public static void initArduinoCoreService() { try { ArduinoCore core = new ArduinoCore(); - arduinoCoreInstance = core.init(getSettingsFolder(), getSketchbookFolder()); + arduinoCoreInstance = core.init(); } catch (Exception e) { e.printStackTrace(); }