Skip to content

Commit 8d2ed70

Browse files
committed
Fix: GWDTTracer prompts without persistent preferences
1 parent efb545f commit 8d2ed70

2 files changed

Lines changed: 102 additions & 0 deletions

File tree

‎src/main/java/sc/fiji/snt/plugin/GWDTMultiSomaCommonCmd.java‎

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,36 @@ protected void initMultiSoma() {
122122
resolveInput("roiPlaneOnly");
123123
}
124124

125+
@Override
126+
protected void readPreferences() {
127+
super.readPreferences();
128+
minSomaRadius = prefService.getDouble(getClass(), "minSomaRadius", minSomaRadius);
129+
minSomaDistance = prefService.getDouble(getClass(), "minSomaDistance", minSomaDistance);
130+
caliperFraction = prefService.getDouble(getClass(), "caliperFraction", caliperFraction);
131+
exclusionBuffer = prefService.getInt(getClass(), "exclusionBuffer", exclusionBuffer);
132+
minPathsPerCell = prefService.getInt(getClass(), "minPathsPerCell", minPathsPerCell);
133+
}
134+
135+
@Override
136+
protected void savePreferences() {
137+
super.savePreferences();
138+
prefService.put(getClass(), "minSomaRadius", minSomaRadius);
139+
prefService.put(getClass(), "minSomaDistance", minSomaDistance);
140+
prefService.put(getClass(), "caliperFraction", caliperFraction);
141+
prefService.put(getClass(), "exclusionBuffer", exclusionBuffer);
142+
prefService.put(getClass(), "minPathsPerCell", minPathsPerCell);
143+
}
144+
145+
@Override
146+
protected void applyDefaults() {
147+
super.applyDefaults();
148+
minSomaRadius = 0;
149+
minSomaDistance = 0;
150+
caliperFraction = 0.5;
151+
exclusionBuffer = 5;
152+
minPathsPerCell = 2;
153+
}
154+
125155
protected void runMultiSoma() {
126156
try {
127157
chosenImp = getImgFromImgChoice();
@@ -207,6 +237,7 @@ protected void runMultiSoma() {
207237

208238
applyWorldOriginOffsetIfAny(trees);
209239
handleTracedTrees(trees);
240+
savePreferences();
210241

211242
} catch (final java.util.concurrent.CancellationException ce) {
212243
// Expected outcome of user-requested cancellation (SNTUI abort/exit); not an error

‎src/main/java/sc/fiji/snt/plugin/GWDTTracerCommonCmd.java‎

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@
3131
import org.scijava.ItemVisibility;
3232
import org.scijava.module.MutableModuleItem;
3333
import org.scijava.plugin.Parameter;
34+
import org.scijava.prefs.PrefService;
35+
import org.scijava.widget.Button;
3436
import org.scijava.widget.ChoiceWidget;
3537
import org.scijava.widget.FileWidget;
3638
import org.scijava.widget.NumberWidget;
@@ -90,6 +92,9 @@ public abstract class GWDTTracerCommonCmd extends CommonDynamicCmd {
9092
private static final String AFTER_PROOFREAD = "Prepare for proofreading";
9193
private static final String AFTER_REPLACE_AND_PROOFREAD = "Replace existing paths & prepare for proofreading";
9294

95+
@Parameter
96+
protected PrefService prefService;
97+
9398
@Parameter(required = false, persist = false, visibility = ItemVisibility.MESSAGE)
9499
private String HEADER1 = "<HTML><b>Input Image";
95100

@@ -264,6 +269,10 @@ public abstract class GWDTTracerCommonCmd extends CommonDynamicCmd {
264269
"</dl>")
265270
String afterTracingChoice = AFTER_DO_NOTHING;
266271

272+
@Parameter(label = " Apply Defaults ", callback = "applyDefaults",
273+
description = "<HTML>Resets all fields above to their default values.")
274+
private Button applyDefaultsButton;
275+
267276
protected boolean abortRun;
268277
protected ImgPlus<?> chosenImp;
269278
/** Populated by auto-detection; null when ROI-based strategy is used. */
@@ -323,6 +332,7 @@ protected void initForImage() {
323332
}
324333
}
325334
debugMode = SNTUtils.isDebugMode();
335+
readPreferences();
326336
}
327337

328338
protected void initForFile() {
@@ -334,6 +344,66 @@ protected void initForFile() {
334344
resolveInput("roiPlaneOnly");
335345
resolveInput("debugMode"); // debug mode is always enabled to report progress to console
336346
debugMode = SNTUtils.isDebugMode();
347+
readPreferences();
348+
}
349+
350+
protected void readPreferences() {
351+
somaStrategyChoice = prefService.get(getClass(), "somaStrategyChoice", somaStrategyChoice);
352+
roiPlaneOnly = prefService.getBoolean(getClass(), "roiPlaneOnly", roiPlaneOnly);
353+
backgroundThreshold = prefService.getDouble(getClass(), "backgroundThreshold", backgroundThreshold);
354+
scoreMapFilter = prefService.get(getClass(), "scoreMapFilter", scoreMapFilter);
355+
lengthThreshold = prefService.getDouble(getClass(), "lengthThreshold", lengthThreshold);
356+
srRatio = prefService.getDouble(getClass(), "srRatio", srRatio);
357+
sphereOverlapThreshold = prefService.getDouble(getClass(), "sphereOverlapThreshold", sphereOverlapThreshold);
358+
leafPruneEnabled = prefService.getBoolean(getClass(), "leafPruneEnabled", leafPruneEnabled);
359+
branchTuneMaxAngle = prefService.getDouble(getClass(), "branchTuneMaxAngle", branchTuneMaxAngle);
360+
tipExtensionDistance = prefService.getDouble(getClass(), "tipExtensionDistance", tipExtensionDistance);
361+
zigzagRemovalEnabled = prefService.getBoolean(getClass(), "zigzagRemovalEnabled", zigzagRemovalEnabled);
362+
overshootRemovalEnabled = prefService.getBoolean(getClass(), "overshootRemovalEnabled", overshootRemovalEnabled);
363+
smoothWindowSize = prefService.getInt(getClass(), "smoothWindowSize", smoothWindowSize);
364+
resampleStep = prefService.getDouble(getClass(), "resampleStep", resampleStep);
365+
connectivityChoice = prefService.get(getClass(), "connectivityChoice", connectivityChoice);
366+
afterTracingChoice = prefService.get(getClass(), "afterTracingChoice", afterTracingChoice);
367+
}
368+
369+
protected void savePreferences() {
370+
prefService.put(getClass(), "somaStrategyChoice", somaStrategyChoice);
371+
prefService.put(getClass(), "roiPlaneOnly", roiPlaneOnly);
372+
prefService.put(getClass(), "backgroundThreshold", backgroundThreshold);
373+
prefService.put(getClass(), "scoreMapFilter", scoreMapFilter);
374+
prefService.put(getClass(), "lengthThreshold", lengthThreshold);
375+
prefService.put(getClass(), "srRatio", srRatio);
376+
prefService.put(getClass(), "sphereOverlapThreshold", sphereOverlapThreshold);
377+
prefService.put(getClass(), "leafPruneEnabled", leafPruneEnabled);
378+
prefService.put(getClass(), "branchTuneMaxAngle", branchTuneMaxAngle);
379+
prefService.put(getClass(), "tipExtensionDistance", tipExtensionDistance);
380+
prefService.put(getClass(), "zigzagRemovalEnabled", zigzagRemovalEnabled);
381+
prefService.put(getClass(), "overshootRemovalEnabled", overshootRemovalEnabled);
382+
prefService.put(getClass(), "smoothWindowSize", smoothWindowSize);
383+
prefService.put(getClass(), "resampleStep", resampleStep);
384+
prefService.put(getClass(), "connectivityChoice", connectivityChoice);
385+
prefService.put(getClass(), "afterTracingChoice", afterTracingChoice);
386+
}
387+
388+
@SuppressWarnings("unused")
389+
protected void applyDefaults() {
390+
somaStrategyChoice = SOMA_AUTO;
391+
roiPlaneOnly = false;
392+
backgroundThreshold = -1.00;
393+
scoreMapFilter = SCORE_MAP_TUBENESS;
394+
lengthThreshold = 5.0;
395+
srRatio = 0.3;
396+
sphereOverlapThreshold = 0.1;
397+
leafPruneEnabled = false;
398+
branchTuneMaxAngle = 90.0;
399+
tipExtensionDistance = 0;
400+
zigzagRemovalEnabled = true;
401+
overshootRemovalEnabled = true;
402+
smoothWindowSize = 5;
403+
resampleStep = 2.0;
404+
connectivityChoice = "Medium";
405+
afterTracingChoice = AFTER_DO_NOTHING;
406+
scoreMapFilterCallback(); // keep secondaryImageSuffix visibility in sync w/ reset scoreMapFilter
337407
}
338408

339409
/**
@@ -469,6 +539,7 @@ protected void runCommand() {
469539

470540
applyWorldOriginOffsetIfAny(trees);
471541
handleTracedTrees(trees);
542+
savePreferences();
472543

473544
} catch (final java.util.concurrent.CancellationException ce) {
474545
// Expected outcome of user-requested cancellation (SNTUI abort/exit); not an error

0 commit comments

Comments
 (0)