Fix usability issues with terrasync dialog
- Change from a directory selection dialog to a combo list of valid directories - Only allow directories in fg-scenery to be selected - Don't allow FG_ROOT/Scenery to be selected (interferes badly) - Only allow terrasync to be enabled once a directory has been defined.
This commit is contained in:
parent
8da025920b
commit
f0acff6f7d
1 changed files with 38 additions and 28 deletions
|
@ -54,6 +54,12 @@
|
||||||
<command>dialog-apply</command>
|
<command>dialog-apply</command>
|
||||||
<object-name>terrasync-enabled</object-name>
|
<object-name>terrasync-enabled</object-name>
|
||||||
</binding>
|
</binding>
|
||||||
|
<enable>
|
||||||
|
<not-equals>
|
||||||
|
<property>/sim/terrasync/scenery-dir</property>
|
||||||
|
<value></value>
|
||||||
|
</not-equals>
|
||||||
|
</enable>
|
||||||
</checkbox>
|
</checkbox>
|
||||||
|
|
||||||
<text>
|
<text>
|
||||||
|
@ -61,40 +67,31 @@
|
||||||
<row>3</row><col>1</col>
|
<row>3</row><col>1</col>
|
||||||
<label>Target directory:</label>
|
<label>Target directory:</label>
|
||||||
</text>
|
</text>
|
||||||
<input>
|
<combo>
|
||||||
<name>scenery-dir</name>
|
<name>scenery-dir</name>
|
||||||
<halign>left</halign>
|
<halign>left</halign>
|
||||||
<row>3</row>
|
<row>3</row>
|
||||||
<col>2</col><colspan>2</colspan>
|
<col>2</col><colspan>2</colspan>
|
||||||
<pref-width>400</pref-width>
|
<pref-width>400</pref-width>
|
||||||
<live>true</live>
|
|
||||||
<property>/sim/terrasync/scenery-dir</property>
|
<property>/sim/terrasync/scenery-dir</property>
|
||||||
<enable><false/></enable>
|
<binding>
|
||||||
</input>
|
<command>dialog-apply</command>
|
||||||
|
<object-name>scenery-dir</object-name>
|
||||||
<button>
|
|
||||||
<legend>Change</legend>
|
|
||||||
<equal>true</equal>
|
|
||||||
<border>2</border>
|
|
||||||
<row>3</row>
|
|
||||||
<col>4</col>
|
|
||||||
<binding>
|
|
||||||
<command>nasal</command>
|
|
||||||
<script>controller.open()</script>
|
|
||||||
</binding>
|
</binding>
|
||||||
</button>
|
</combo>
|
||||||
|
|
||||||
<text>
|
<text>
|
||||||
|
<name>warning_text</name>
|
||||||
<row>4</row>
|
<row>4</row>
|
||||||
<col>2</col><colspan>3</colspan>
|
<col>0</col><colspan>4</colspan>
|
||||||
<color>
|
<color>
|
||||||
<red>0.7</red>
|
<red>1.0</red>
|
||||||
<green>0.7</green>
|
<green>0.4</green>
|
||||||
<blue>0.7</blue>
|
<blue>0.4</blue>
|
||||||
<alpha>1</alpha>
|
<alpha>1</alpha>
|
||||||
</color>
|
</color>
|
||||||
<halign>left</halign>
|
<halign>center</halign>
|
||||||
<label>Remember to add target directory to your 'fg-scenery' path list.</label>
|
<label/>
|
||||||
</text>
|
</text>
|
||||||
|
|
||||||
<text>
|
<text>
|
||||||
|
@ -431,20 +428,33 @@
|
||||||
<command>dialog-close</command>
|
<command>dialog-close</command>
|
||||||
</binding>
|
</binding>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<empty><stretch>true</stretch></empty>
|
<empty><stretch>true</stretch></empty>
|
||||||
</group>
|
</group>
|
||||||
|
|
||||||
<nasal>
|
<nasal>
|
||||||
<open><![CDATA[
|
<open><![CDATA[
|
||||||
var controller = gui.DirSelector.new(
|
var fg_scenery = props.globals.getNode("sim").getChildren("fg-scenery");
|
||||||
func(result) { setprop("/sim/terrasync/scenery-dir", result.getValue()); },
|
var fg_data = props.globals.getNode("sim").getChild("fg-root").getValue();
|
||||||
"Select Target Directory for Downloads", "Ok", getprop("/sim/terrasync/scenery-dir"));
|
var combo = cmdarg().getChildren("group")[1].getChildren("combo")[0];
|
||||||
|
var valid = 0;
|
||||||
|
|
||||||
|
for (var i = 0; i < size(fg_scenery); i = i + 1) {
|
||||||
|
var s = fg_scenery[i].getValue();
|
||||||
|
if ((s != fg_data ~ "/Scenery") and (s != fg_data ~ "\\Scenery")) {
|
||||||
|
# Do not allow Terrasync to run in the default directory.
|
||||||
|
combo.getNode("value[" ~ i ~ "]", 1).setValue(fg_scenery[i].getValue());
|
||||||
|
valid = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Add error text if the user only has fg-data/Scenery available and disable controls.
|
||||||
|
if (! valid) {
|
||||||
|
var warning = cmdarg().getChildren("group")[1].getChildren("text")[1];
|
||||||
|
var txt = "You must configure a separate FG_SCENERY directory for automatic scenery download";
|
||||||
|
warning.getNode("label").setValue(txt);
|
||||||
|
}
|
||||||
]]></open>
|
]]></open>
|
||||||
|
|
||||||
<close><![CDATA[
|
|
||||||
controller.close();
|
|
||||||
]]></close>
|
|
||||||
</nasal>
|
</nasal>
|
||||||
|
|
||||||
</PropertyList>
|
</PropertyList>
|
||||||
|
|
Loading…
Add table
Reference in a new issue