<?xml version="1.0"?> <PropertyList> <name>replay</name> <layout>vbox</layout> <modal>false</modal> <default-padding>1</default-padding> <y>5</y> <color> <red>0.2</red> <green>0.2</green> <blue>0.2</blue> <alpha>0.7</alpha> </color> <nasal> <open><![CDATA[ var ReplayDialogController = { new : func( dlgRoot ) { var obj = { parents: [ReplayDialogController] }; obj.dlgRoot = dlgRoot; obj.initViews(1); return obj; }, # Populate the view combo box with a list of the available views initViews : func(update) { var combo = me.findElementByName( me.dlgRoot, "view-selector" ); if (update) combo.removeChildren("value"); var current_view = getprop("/sim/current-view/view-number"); var i = 0; foreach (var v; view.views) { var name = "Unnamed view " ~ v.getIndex(); if (v.getNode("name") != nil) { name = v.getNode("name").getValue(); } # Pre-populate the combo box selected value if (i == current_view) { setprop("/sim/replay/view-name", name); } if (update) combo.getNode("value[" ~ i ~ "]", 1).setValue(name); i = i + 1; } }, open : func { var replaySlider = me.findElementByName( me.dlgRoot, "replay-time-slider" ); me.maxProp = replaySlider.getChild("max"); me.minProp = replaySlider.getChild("min"); me.speedUpListenerId = setlistener( "/sim/speed-up", func(n) { me.updateListener(n); }, 1, 1 ); me.viewListenerId = setlistener( "/sim/current-view/view-number", func(n) { me.updateListener(n); }, 1, 1 ); if (getprop("/sim/replay/end-time")!=nil) { # update max/min range of replay-time slider me.maxProp.setValue(getprop("/sim/replay/end-time")); me.minProp.setValue(getprop("/sim/replay/start-time")); } me.updateListener(1); }, updateListener : func( n ) { var SpeedUp = getprop("/sim/speed-up"); if (SpeedUp<0.9) { SpeedUp=1/SpeedUp; SpeedUp = "1/" ~ SpeedUp; } setprop("/sim/gui/dialogs/replay/time-factor","" ~ SpeedUp ~ "x"); me.initViews(0); }, close : func { removelistener( me.speedUpListenerId ); removelistener( me.viewListenerId ); }, findElementByName : func(base,name) { foreach( var child; base.getChildren() ) { var n = child.getNode( "name" ); if( n != nil and n.getValue() == name ) return child; var f = me.findElementByName(child,name); if( f != nil ) return f; } return nil; }, }; var controller = ReplayDialogController.new( cmdarg() ); controller.open(); if (props.globals.getNode("/rotors",0)!=nil) setprop("/sim/replay/disable-my-controls",1); ]]></open> <close><![CDATA[ controller.close(); ]]></close> </nasal> <group> <layout>hbox</layout> <halign>fill</halign> <pref-height>28</pref-height> <text> <font> <name>SANS_12B</name> </font> <label>REPLAY</label> <color> <red>0.9</red> <green>0.9</green> <blue>0.9</blue> <alpha>1</alpha> </color> <pref-width>70</pref-width> </text> <text> <label>Loop:</label> <color> <red>0.7</red> <green>0.7</green> <blue>0.7</blue> <alpha>1</alpha> </color> </text> <checkbox> <name>replay-looped</name> <halign>left</halign> <color-highlight> <red type="float">0.6</red> <green type="float">0.6</green> <blue type="float">0.6</blue> <alpha type="float">0.8</alpha> </color-highlight> <property>/sim/replay/looped</property> <binding> <command>dialog-apply</command> <object-name>replay-looped</object-name> </binding> </checkbox> <input> <name>replay-duration</name> <pref-width>40</pref-width> <color> <red>0.5</red> <green>0.5</green> <blue>0.5</blue> <alpha type="float">0.8</alpha> </color> <property>/sim/replay/duration</property> <binding> <command>dialog-apply</command> <object-name>replay-duration</object-name> </binding> </input> <empty><pref-width>40</pref-width></empty> <text> <label>Time: 99:99:99.9</label> <format>Time: %s</format> <color> <red>0.7</red> <green>0.7</green> <blue>0.7</blue> <alpha>1</alpha> </color> <live>true</live> <property>/sim/replay/time-str</property> </text> <empty><pref-width>10</pref-width></empty> <text> <label>Size: 999.9MB</label> <format>Size: %.1fMB</format> <color> <red>0.7</red> <green>0.7</green> <blue>0.7</blue> <alpha>1</alpha> </color> <property>/sim/replay/buffer-size-mbyte</property> </text> <empty><pref-width>40</pref-width></empty> <text> <label>Speed:</label> <color> <red>0.7</red> <green>0.7</green> <blue>0.7</blue> <alpha>1</alpha> </color> </text> <button> <legend><![CDATA[-]]></legend> <pref-width>20</pref-width> <border>1</border> <color> <red type="float">0.3</red> <green type="float">0.3</green> <blue type="float">0.3</blue> <alpha type="float">0.8</alpha> </color> <binding> <command>nasal</command> <script>controls.speedup(-1);</script> </binding> </button> <text> <label>1/16x</label> <pref-width>28</pref-width> <format>%s</format> <color> <red>0.7</red> <green>0.7</green> <blue>0.7</blue> <alpha>1</alpha> </color> <live>true</live> <property>/sim/gui/dialogs/replay/time-factor</property> </text> <button> <legend><![CDATA[+]]></legend> <pref-width>20</pref-width> <border>1</border> <color> <red type="float">0.3</red> <green type="float">0.3</green> <blue type="float">0.3</blue> <alpha type="float">0.8</alpha> </color> <binding> <command>nasal</command> <script>controls.speedup(1);</script> </binding> </button> <empty><stretch>1</stretch></empty> <button> <legend>Hide</legend> <border>1</border> <color> <red type="float">0.3</red> <green type="float">0.3</green> <blue type="float">0.3</blue> <alpha type="float">0.8</alpha> </color> <pref-width>40</pref-width> <binding> <command>nasal</command> <script><![CDATA[ setprop("/sim/messages/copilot", "Replay active. 'Esc' to stop. 'Ctrl-R' to show replay controls."); ]]></script> </binding> <binding> <command>dialog-close</command> </binding> </button> </group> <group> <layout>hbox</layout> <halign>center</halign> <button> <legend><![CDATA[<<]]></legend> <pref-width>30</pref-width> <border>1</border> <color> <red type="float">0.3</red> <green type="float">0.3</green> <blue type="float">0.3</blue> <alpha type="float">0.8</alpha> </color> <binding> <command>nasal</command> <script>controls.replaySkip(-30);</script> </binding> </button> <button> <legend><![CDATA[<]]></legend> <pref-width>30</pref-width> <border>1</border> <color> <red type="float">0.3</red> <green type="float">0.3</green> <blue type="float">0.3</blue> <alpha type="float">0.8</alpha> </color> <binding> <command>nasal</command> <script>controls.replaySkip(-5);</script> </binding> </button> <text> <label>9:99:99</label> <color> <red>0.7</red> <green>0.7</green> <blue>0.7</blue> <alpha>1</alpha> </color> <format>%8s</format> <halign>right</halign> <live>true</live> <property>/sim/replay/start-time-str</property> </text> <slider> <name>replay-time-slider</name> <border>0</border> <color> <red>0.4</red> <green>0.4</green> <blue>0.4</blue> <alpha>1</alpha> </color> <halign>left</halign> <pref-width>350</pref-width> <min>0</min><!-- property is updated on "dialog open" --> <max>1.0</max><!-- property is updated on "dialog open" --> <property>/sim/replay/time</property> <live>true</live> <binding> <command>dialog-apply</command> <object-name>replay-time-slider</object-name> </binding> </slider> <text> <label>9:99:99</label> <color> <red>0.7</red> <green>0.7</green> <blue>0.7</blue> <alpha>1</alpha> </color> <format>%s</format> <halign>left</halign> <live>true</live> <property>/sim/replay/end-time-str</property> </text> <button> <legend><![CDATA[>]]></legend> <pref-width>30</pref-width> <border>1</border> <color> <red type="float">0.3</red> <green type="float">0.3</green> <blue type="float">0.3</blue> <alpha type="float">0.8</alpha> </color> <binding> <command>nasal</command> <script>controls.replaySkip(5);</script> </binding> </button> <button> <legend><![CDATA[>>]]></legend> <pref-width>30</pref-width> <border>1</border> <color> <red type="float">0.3</red> <green type="float">0.3</green> <blue type="float">0.3</blue> <alpha type="float">0.8</alpha> </color> <binding> <command>nasal</command> <script>controls.replaySkip(30);</script> </binding> </button> </group> <group> <layout>hbox</layout> <halign>fill</halign> <stretch>true</stretch> <default-padding>3</default-padding> <empty><pref-width>26</pref-width></empty> <button> <legend>Pause</legend> <default>true</default> <border>2</border> <color> <red type="float">0.3</red> <green type="float">0.3</green> <blue type="float">0.3</blue> <alpha type="float">0.8</alpha> </color> <property>/sim/freeze/master</property> <live>true</live> <pref-width>70</pref-width> <binding> <command>property-toggle</command> <property>/sim/freeze/clock</property> </binding> <binding> <command>property-toggle</command> <property>/sim/freeze/master</property> </binding> </button> <empty><pref-width>80</pref-width></empty> <button> <name>mute</name> <legend>Mute</legend> <border>2</border> <pref-width>55</pref-width> <color> <red type="float">0.3</red> <green type="float">0.3</green> <blue type="float">0.3</blue> <alpha type="float">0.8</alpha> </color> <halign>left</halign> <property>/sim/replay/mute</property> <live>true</live> <binding> <command>nasal</command> <script><![CDATA[ var mute = !getprop("/sim/replay/mute"); setprop("/sim/replay/mute",mute); setprop("/sim/sound/enabled",!mute); ]]></script> </binding> </button> <combo> <name>view-selector</name> <halign>left</halign> <pref-width>150</pref-width> <color> <red type="float">0.3</red> <green type="float">0.3</green> <blue type="float">0.3</blue> <alpha type="float">0.8</alpha> </color> <color-highlight> <red type="float">0.6</red> <green type="float">0.6</green> <blue type="float">0.6</blue> <alpha type="float">0.8</alpha> </color-highlight> <live>true</live> <property>/sim/replay/view-name</property> <binding> <command>dialog-apply</command> <object-name>view-selector</object-name> </binding> <binding> <command>nasal</command> <script> var index = view.indexof(getprop("/sim/replay/view-name")); setprop("/sim/current-view/view-number", index); </script> </binding> </combo> <empty><pref-width>30</pref-width></empty> <!-- Future features... <empty><pref-width>10</pref-width></empty> <button> <legend>Save</legend> <border>1</border> <color> <red type="float">0.3</red> <green type="float">0.3</green> <blue type="float">0.3</blue> <alpha type="float">0.8</alpha> </color> <pref-width>43</pref-width> <binding> <command>nasal</command> <script>gui.popupTip("Not implemented yet. Comming soon.");</script> </binding> </button> <button> <legend>Load</legend> <border>1</border> <enable>0</enable> <color> <red type="float">0.3</red> <green type="float">0.3</green> <blue type="float">0.3</blue> <alpha type="float">0.8</alpha> </color> <pref-width>43</pref-width> <binding> <command>nasal</command> <script>gui.popupTip("Not implemented yet. Comming soon.");</script> </binding> </button> --> <button> <legend>My Controls!</legend> <border>1</border> <color> <red>1</red> <green>0.3</green> <blue>0.3</blue> <alpha>0.8</alpha> </color> <visible> <and> <not><property>/sim/replay/disable-my-controls</property></not> <or> <equals> <property>/sim/flight-model</property> <value>yasim</value> </equals> <!-- Not supported yet... <equals> <property>/sim/flight-model</property> <value>jsb</value> </equals> --> </or> </and> </visible> <pref-width>90</pref-width> <binding> <command>property-assign</command> <property>/sim/freeze/replay-state</property> <value type="int">3</value> </binding> <binding> <command>property-assign</command> <property>/sim/replay/disable</property> <value type="bool">true</value> </binding> <binding> <command>dialog-close</command> </binding> </button> <button> <legend>End Replay</legend> <key>Esc</key> <border>1</border> <pref-width>90</pref-width> <color> <red type="float">0.3</red> <green type="float">0.3</green> <blue type="float">0.3</blue> <alpha type="float">0.8</alpha> </color> <binding> <command>property-assign</command> <property>/sim/replay/disable</property> <value type="bool">true</value> </binding> <binding> <command>dialog-close</command> </binding> </button> </group> </PropertyList>