From f31f09e4d58f77817ea0bb381ea2eff10c0a039e Mon Sep 17 00:00:00 2001 From: ThorstenB <brehmt@gmail.com> Date: Sun, 9 Oct 2011 20:23:16 +0200 Subject: [PATCH] replay system: gui update --- gui/dialogs/replay.xml | 201 ++++++++++++++++++++++++++++++----------- 1 file changed, 148 insertions(+), 53 deletions(-) diff --git a/gui/dialogs/replay.xml b/gui/dialogs/replay.xml index acaef886c..d584a4c83 100644 --- a/gui/dialogs/replay.xml +++ b/gui/dialogs/replay.xml @@ -20,14 +20,40 @@ 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.maxListenerId = setlistener( "/sim/speed-up", func(n) { me.updateListener(n); }, 1, 1 ); + 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 @@ -45,10 +71,12 @@ SpeedUp = "1/" ~ SpeedUp; } setprop("/sim/gui/dialogs/replay/time-factor","" ~ SpeedUp ~ "x"); + me.initViews(0); }, close : func { - #removelistener( me.maxListenerId ); + removelistener( me.speedUpListenerId ); + removelistener( me.viewListenerId ); }, findElementByName : func(base,name) { @@ -66,6 +94,8 @@ var controller = ReplayDialogController.new( cmdarg() ); controller.open(); + if (props.globals.getNode("/rotors",0)!=nil) + setprop("/sim/replay/disable-my-controls",1); ]]></open> <close><![CDATA[ @@ -218,24 +248,7 @@ </button> <empty><stretch>1</stretch></empty> -<!-- - <button> - <pref-width>16</pref-width> - <pref-height>16</pref-height> - <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> - <legend></legend> - <keynum>27</keynum> - <border>2</border> - <binding> - <command>dialog-close</command> - </binding> - </button> ---> + <button> <legend>Hide</legend> <border>1</border> @@ -378,10 +391,12 @@ <group> <layout>hbox</layout> - <halign>center</halign> - <stretch>false</stretch> + <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> @@ -394,7 +409,7 @@ </color> <property>/sim/freeze/master</property> <live>true</live> - <pref-width>47</pref-width> + <pref-width>70</pref-width> <binding> <command>property-toggle</command> <property>/sim/freeze/clock</property> @@ -405,52 +420,68 @@ </binding> </button> + <empty><pref-width>80</pref-width></empty> + <button> - <legend>End Replay</legend> - <key>Esc</key> - <border>1</border> + <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> - <!--<pref-width>47</pref-width>--> + <halign>left</halign> + <property>/sim/replay/mute</property> + <live>true</live> <binding> - <command>property-assign</command> - <property>/sim/replay/disable</property> - <value type="bool">true</value> - </binding> - <binding> - <command>dialog-close</command> + <command>nasal</command> + <script><![CDATA[ + var mute = !getprop("/sim/replay/mute"); + setprop("/sim/replay/mute",mute); + setprop("/sim/sound/enabled",!mute); + ]]></script> </binding> </button> -<!-- Future features... - <button> - <legend>My controls!</legend> - <border>1</border> + <combo> + <name>view-selector</name> + <halign>left</halign> + <pref-width>150</pref-width> <color> - <red>1</red> - <green>0.3</green> - <blue>0.3</blue> - <alpha>0.8</alpha> + <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>80</pref-width> + <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>property-assign</command> - <property>/sim/freeze/replay-state</property> - <value type="int">3</value> + <command>dialog-apply</command> + <object-name>view-selector</object-name> </binding> <binding> - <command>property-assign</command> - <property>/sim/replay/disable</property> - <value type="bool">true</value> + <command>nasal</command> + <script> + var index = view.indexof(getprop("/sim/replay/view-name")); + setprop("/sim/current-view/view-number", index); + </script> </binding> - <binding> - <command>dialog-close</command> - </binding> - </button> + </combo> + + <empty><pref-width>30</pref-width></empty> + +<!-- Future features... + <empty><pref-width>10</pref-width></empty> + <button> <legend>Save</legend> <border>1</border> @@ -476,12 +507,76 @@ <blue type="float">0.3</blue> <alpha type="float">0.8</alpha> </color> - <pref-width>40</pref-width> + <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>