diff --git a/Nasal/view.nas b/Nasal/view.nas
index a612de557..9d41bc091 100644
--- a/Nasal/view.nas
+++ b/Nasal/view.nas
@@ -70,14 +70,19 @@ var resetViewDir = func {
}
##
-# Handler. Step to the next view.
+# Handler. Step to the next (force=1) or next enabled view.
#
-var stepView = func(n) {
- var i = getprop("/sim/current-view/view-number") + n;
- if (i < 0)
- i = size(views) - 1;
- elsif (i >= size(views))
- i = 0;
+var stepView = func(n, force = 0) {
+ var i = getprop("/sim/current-view/view-number");
+ while (1) {
+ i += n;
+ if (i < 0)
+ i = size(views) - 1;
+ elsif (i >= size(views))
+ i = 0;
+ if (!i or force or (var e = views[i].getNode("enabled")) == nil or e.getValue())
+ break;
+ }
setprop("/sim/current-view/view-number", i);
# And pop up a nice reminder
diff --git a/gui/dialogs/view.xml b/gui/dialogs/view.xml
new file mode 100644
index 000000000..06519c730
--- /dev/null
+++ b/gui/dialogs/view.xml
@@ -0,0 +1,72 @@
+
+
+
+ view
+ false
+ vbox
+
+
+
+
+
+
+
+
+
+ var group = cmdarg().getNode("group");
+ var ac = getprop("/sim/aircraft");
+ group.removeChildren("checkbox");
+ group.removeChildren("hrule");
+ group.removeChildren("text");
+ var system = 1;
+ foreach (var v; view.views) {
+ var index = v.getIndex();
+ if (index == 0 or index >= 200)
+ continue;
+
+ if (index >= 100) {
+ if (system) {
+ group.getNode("hrule", 1);
+ var t = group.getNode("text", 1);
+ t.getNode("label", 1).setValue("\"" ~ ac ~ "\" Specific Views");
+ system = 0;
+ }
+ aircraft.data.add(v.getPath() ~ "/enabled");
+ }
+ if (v.getNode("enabled") == nil)
+ v.getNode("enabled", 1).setBoolValue(1);
+
+ var target = group.getChild("checkbox", index, 1);
+ props.copy(group.getNode("checkbox-template"), target);
+ target.getNode("label").setValue(v.getNode("name").getValue());
+ target.getNode("property").setValue(v.getPath() ~ "/enabled");
+ }
+
+
+
+
+ vbox
+ center
+
+
+ left
+
+
+
+ dialog-apply
+
+
+
+
+
+
diff --git a/gui/menubar.xml b/gui/menubar.xml
index 65a833442..9a7157b4d 100644
--- a/gui/menubar.xml
+++ b/gui/menubar.xml
@@ -19,16 +19,6 @@
-
-
-
@@ -117,7 +107,15 @@
-
-
+
+
+ dialog-show
+ view
+
+
+
+ -
+
dialog-show
rendering
@@ -156,7 +154,6 @@
-
-
@@ -164,7 +161,7 @@
chat
-
+