Skip to content

Commit d3494dc

Browse files
committed
Setting are applied automatically when preferences dialog is closed
1 parent bad9811 commit d3494dc

File tree

4 files changed

+52
-27
lines changed

4 files changed

+52
-27
lines changed

app/src/cc/arduino/view/preferences/Preferences.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import cc.arduino.Constants;
3333
import cc.arduino.i18n.Language;
3434
import cc.arduino.i18n.Languages;
35+
import io.grpc.StatusException;
3536
import processing.app.Base;
3637
import processing.app.BaseNoGui;
3738
import processing.app.Editor;
@@ -653,6 +654,11 @@ private void okButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRS
653654
}
654655

655656
savePreferencesData();
657+
try {
658+
BaseNoGui.getArduinoCoreService().updateSettingFromPreferences();
659+
} catch (StatusException e) {
660+
e.printStackTrace();
661+
}
656662
base.getEditors().forEach(processing.app.Editor::applyPreferences);
657663
cancelButtonActionPerformed(evt);
658664
}//GEN-LAST:event_okButtonActionPerformed

arduino-core/src/cc/arduino/cli/ArduinoCore.java

Lines changed: 2 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -90,29 +90,7 @@ public ArduinoCore() throws IOException {
9090
// async = ArduinoCoreGrpc.newStub(channel);
9191
}
9292

93-
public void setDataDir(File dataDir) {
94-
settingsBlocking
95-
.setValue(SettingsOuterClass.Value.newBuilder().setKey("directories") //
96-
.setJsonData("{ \"data\": \"" + dataDir.getAbsolutePath() + "\" }") //
97-
.build());
98-
File downloadsDir = new File(dataDir, "staging");
99-
settingsBlocking
100-
.setValue(SettingsOuterClass.Value.newBuilder().setKey("directories") //
101-
.setJsonData("{ \"downloads\": \"" + downloadsDir.getAbsolutePath()
102-
+ "\" }") //
103-
.build());
104-
}
105-
106-
public void setSketchbookDir(File dataDir) {
107-
settingsBlocking
108-
.setValue(SettingsOuterClass.Value.newBuilder().setKey("directories") //
109-
.setJsonData("{ \"user\": \"" + dataDir.getAbsolutePath() + "\" }") //
110-
.build());
111-
}
112-
113-
public ArduinoCoreInstance init(File dataDir, File sketchbookDir) {
114-
setDataDir(dataDir);
115-
setSketchbookDir(sketchbookDir);
93+
public ArduinoCoreInstance init() {
11694
Iterator<InitResp> resp = coreBlocking.init(InitReq.getDefaultInstance());
11795
Instance instance = null;
11896
while (resp.hasNext()) {
@@ -131,6 +109,6 @@ public ArduinoCoreInstance init(File dataDir, File sketchbookDir) {
131109
instance = r.getInstance();
132110
}
133111
}
134-
return new ArduinoCoreInstance(instance, coreBlocking);
112+
return new ArduinoCoreInstance(instance, coreBlocking, settingsBlocking);
135113
}
136114
}

arduino-core/src/cc/arduino/cli/ArduinoCoreInstance.java

Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131

3232
import static processing.app.I18n.tr;
3333

34+
import java.io.File;
3435
import java.io.IOException;
3536
import java.io.OutputStream;
3637
import java.util.ArrayList;
@@ -63,20 +64,60 @@
6364
import cc.arduino.cli.commands.Lib.LibraryUninstallReq;
6465
import cc.arduino.cli.commands.Lib.LibraryUninstallResp;
6566
import cc.arduino.cli.commands.Lib.SearchedLibrary;
67+
import cc.arduino.cli.settings.SettingsOuterClass;
68+
import cc.arduino.cli.settings.SettingsGrpc.SettingsBlockingStub;
6669
import cc.arduino.contributions.ProgressListener;
6770
import cc.arduino.contributions.libraries.ContributedLibraryRelease;
6871
import io.grpc.StatusException;
6972
import io.grpc.StatusRuntimeException;
73+
import processing.app.BaseNoGui;
7074

7175
public class ArduinoCoreInstance {
7276

7377
private Instance instance;
7478
private ArduinoCoreBlockingStub stub;
79+
private SettingsBlockingStub settings;
7580

7681
public ArduinoCoreInstance(Instance instance,
77-
ArduinoCoreBlockingStub blocking) {
82+
ArduinoCoreBlockingStub core,
83+
SettingsBlockingStub settings) {
7884
this.instance = instance;
79-
this.stub = blocking;
85+
this.stub = core;
86+
this.settings = settings;
87+
}
88+
89+
public void updateSettingFromPreferences() throws StatusException {
90+
setDataDir(BaseNoGui.getSettingsFolder());
91+
setSketchbookDir(BaseNoGui.getSketchbookFolder());
92+
rescan();
93+
}
94+
95+
public void setDataDir(File dataDir) {
96+
settings
97+
.setValue(SettingsOuterClass.Value.newBuilder().setKey("directories") //
98+
.setJsonData("{ \"data\": \"" + dataDir.getAbsolutePath() + "\" }") //
99+
.build());
100+
File downloadsDir = new File(dataDir, "staging");
101+
settings
102+
.setValue(SettingsOuterClass.Value.newBuilder().setKey("directories") //
103+
.setJsonData("{ \"downloads\": \"" + downloadsDir.getAbsolutePath()
104+
+ "\" }") //
105+
.build());
106+
}
107+
108+
public void setSketchbookDir(File dataDir) {
109+
System.out.println("SKETCHBOOK: "+dataDir.getAbsolutePath());
110+
settings
111+
.setValue(SettingsOuterClass.Value.newBuilder().setKey("directories") //
112+
.setJsonData("{ \"user\": \"" + dataDir.getAbsolutePath() + "\" }") //
113+
.build());
114+
}
115+
116+
public void setProxyUrl(String url) {
117+
settings.setValue(SettingsOuterClass.Value.newBuilder() //
118+
.setKey("network") //
119+
.setJsonData("{ \"proxy\": \"" + url + "\" }") //
120+
.build());
80121
}
81122

82123
public void boardDetails(String fqbn) throws StatusException {

arduino-core/src/processing/app/BaseNoGui.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ public class BaseNoGui {
107107
public static void initArduinoCoreService() {
108108
try {
109109
ArduinoCore core = new ArduinoCore();
110-
arduinoCoreInstance = core.init(getSettingsFolder(), getSketchbookFolder());
110+
arduinoCoreInstance = core.init();
111111
} catch (Exception e) {
112112
e.printStackTrace();
113113
}

0 commit comments

Comments
 (0)