Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 16 additions & 1 deletion Helios/HeliosBinding.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ namespace GadrocsWorkshop.Helios
using NLua;
using NLua.Exceptions;
using System;
using System.Text;

/// <summary>
/// A binding from a source trigger to a target action
Expand All @@ -33,6 +34,7 @@ public class HeliosBinding : NotificationObject, INamedBindingElement
private WeakReference _triggerSource = new WeakReference(null);
private WeakReference _targetAction = new WeakReference(null);
private bool _bypassTargetTriggers;
private bool _luaScriptUTF8Encoding = false;
private BindingValueSources _valueSource;
private BindingValue _value = BindingValue.Empty;
private string _condition = "";
Expand Down Expand Up @@ -263,14 +265,27 @@ public bool BypassCascadingTriggers
}
}
}

public bool LuaScriptUTF8Encoding
{
get => _luaScriptUTF8Encoding;
set
{
if (!_luaScriptUTF8Encoding.Equals(value))
{
bool oldValue = _luaScriptUTF8Encoding;
_luaScriptUTF8Encoding = value;
OnPropertyChanged("LuaScriptUTF8Encoding", oldValue, value, true);
}
}
}
private Lua LuaInterpreter
{
get
{
if (_luaInterpreter == null)
{
_luaInterpreter = new Lua();
_luaInterpreter.State.Encoding = _luaScriptUTF8Encoding ? Encoding.UTF8 : Encoding.ASCII;

// add lua environment variables
_luaInterpreter.DoString("HeliosPath = " + "'" + ConfigManager.DocumentPath.Replace("\\", "\\\\") + "'");
Expand Down
9 changes: 8 additions & 1 deletion Helios/HeliosSerializer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -276,7 +276,10 @@ public void SerializeBinding(HeliosBinding binding, XmlWriter xmlWriter)
xmlWriter.WriteStartElement("Binding");

xmlWriter.WriteAttributeString("BypassCascadingTriggers", boolConverter.ConvertToInvariantString(binding.BypassCascadingTriggers));

if (binding.LuaScriptUTF8Encoding)
{
xmlWriter.WriteAttributeString("LuaScriptUTF8Encoding", boolConverter.ConvertToInvariantString(binding.LuaScriptUTF8Encoding));
}
xmlWriter.WriteStartElement("Trigger");
xmlWriter.WriteAttributeString("Source", GetReferenceName(binding.Trigger.Source));
xmlWriter.WriteAttributeString("Name", binding.Trigger.TriggerID);
Expand Down Expand Up @@ -356,6 +359,10 @@ private HeliosBinding DeserializeBinding(HeliosProfile profile, HeliosVisual roo

HeliosBinding binding = (HeliosBinding)CreateNewObject("Binding", "");
binding.BypassCascadingTriggers = (bool)boolConverter.ConvertFromString(null, CultureInfo.InvariantCulture, xmlReader.GetAttribute("BypassCascadingTriggers"));
if(xmlReader.GetAttribute("LuaScriptUTF8Encoding") != null)
{
binding.LuaScriptUTF8Encoding = (bool)boolConverter.ConvertFromString(null, CultureInfo.InvariantCulture, xmlReader.GetAttribute("LuaScriptUTF8Encoding"));
}
xmlReader.ReadStartElement("Binding");

string sourcePath = xmlReader.GetAttribute("Source");
Expand Down
51 changes: 39 additions & 12 deletions Profile Editor/BindingsPanel.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
d:DesignHeight="300" d:DesignWidth="600" Background="{StaticResource ToolBackground}">
<UserControl.Resources>
<ResourceDictionary>

<helios:EnumConverter Type="{x:Type helios:BindingValueSources}" x:Key="BindingSourceValues" />

<Style x:Key="PropertiesTabs" TargetType="TabControl">
Expand All @@ -19,7 +19,7 @@
</DataTrigger>
</Style.Triggers>
</Style>

<Style x:Key="LuaHelpTextStyle" TargetType="TextBlock">
<Setter Property="Visibility" Value="Collapsed" />
<Style.Triggers>
Expand All @@ -42,8 +42,8 @@
</Style>

<local:BindingsDragDropAdvisor x:Key="DropAdvisor" />
<Style x:Key="ValueExpanderStyle" TargetType="Expander" BasedOn="{StaticResource {x:Type Expander}}">

<Style x:Key="ValueExpanderStyle" TargetType="Expander" BasedOn="{StaticResource {x:Type Expander}}">
<Style.Triggers>
<DataTrigger Binding="{Binding SelectedBinding.Action.ActionRequiresValue}" Value="false">
<Setter Property="Visibility" Value="Collapsed" />
Expand Down Expand Up @@ -78,13 +78,13 @@
</DataTrigger>
</Style.Triggers>
</Style>

<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="ProfileExplorerResources.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</ResourceDictionary>
</UserControl.Resources>
<Grid>
<Grid Margin="0,0,0,0">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
Expand All @@ -94,7 +94,7 @@
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TabControl Name="IOTab" Grid.RowSpan="2" Grid.ColumnSpan="3" Margin="6" SelectedValuePath="Tag" SelectedValue="{Binding BindingType}">
<TabControl Name="IOTab" Grid.RowSpan="2" Grid.ColumnSpan="3" Margin="6,6,6,6" SelectedValuePath="Tag" SelectedValue="{Binding BindingType}">
<TabItem Header="Input" Tag="Input" />
<TabItem Header="Output" Tag="Output" />
</TabControl>
Expand All @@ -117,7 +117,7 @@
<ColumnDefinition Style="{StaticResource TriggerColumn}" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>

<StackPanel Orientation="Horizontal" Grid.Row="0" Grid.ColumnSpan="2" Margin="6,0,4,0">
<TextBlock Style="{StaticResource PropertyName}" VerticalAlignment="Center">Value Source</TextBlock>
<ComboBox MinWidth="120" ItemsSource="{Binding Source={StaticResource BindingSourceValues}, Path=DisplayNames}" SelectedItem="{Binding SelectedBinding.ValueSource, Converter={StaticResource BindingSourceValues}, Mode=TwoWay}" SelectionChanged="ValueSource_SelectionChanged" HorizontalAlignment="Left" FontSize="10" Margin="4" />
Expand Down Expand Up @@ -305,14 +305,41 @@ Other Global Variables:
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<CheckBox Grid.Row="0" Grid.Column="0" IsChecked="{Binding SelectedBinding.BypassCascadingTriggers}" HorizontalAlignment="Center" Margin="4,12,8,4" />
<TextBlock Grid.Row="0" Grid.Column="1" Margin="4,8,0,0" Style="{StaticResource PropertyName}" VerticalAlignment="Center">Bypass Cascading Triggers</TextBlock>
<TextBlock Grid.Row="1" Grid.Column="1" Style="{StaticResource Documentation}">When checked any triggers which would normally occur because of this action are surpressed.</TextBlock>
<TextBlock Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2" Margin="4,12,0,0" Style="{StaticResource PropertyName}" VerticalAlignment="Center">Conditional Expression</TextBlock>
<TextBox Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="2" Margin="4,4,4,0" Height="60" Text="{Binding SelectedBinding.Condition}" AcceptsReturn="True" TextWrapping="Wrap" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" />
<TextBlock Grid.Row="4" Grid.Column="0" Grid.ColumnSpan="2" Margin="4,0,0,0" Style="{StaticResource Documentation}">If this LUA script returns false then this binding will abort without executing the action.</TextBlock>
<StackPanel Grid.Row="2" Grid.RowSpan="2" Grid.Column="0" Grid.ColumnSpan="2">
<StackPanel.Style>
<Style TargetType="StackPanel">
<Setter Property="Visibility" Value="Collapsed" />
<Style.Triggers>
<DataTrigger Binding="{Binding SelectedBinding.ValueSource}" Value="LuaScript">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
</Style.Triggers>
</Style>
</StackPanel.Style>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<CheckBox Grid.Row="0" Grid.Column="0" IsChecked="{Binding SelectedBinding.LuaScriptUTF8Encoding}" HorizontalAlignment="Center" Margin="4,12,8,4" />
<TextBlock Grid.Row="0" Grid.Column="1" Margin="4,8,0,0" Style="{StaticResource PropertyName}" VerticalAlignment="Center">Use UTF-8</TextBlock>
<TextBlock Grid.Row="1" Grid.Column="1" Style="{StaticResource Documentation}">When checked strings in the LuaScript interpreter will be UTF-8 encoded.</TextBlock>
</Grid>
</StackPanel>
<TextBlock Grid.Row="4" Grid.Column="0" Grid.ColumnSpan="2" Margin="4,12,0,0" Style="{StaticResource PropertyName}" VerticalAlignment="Center">Conditional Expression</TextBlock>
<TextBox Grid.Row="5" Grid.Column="0" Grid.ColumnSpan="2" Margin="4,4,4,0" Height="60" Text="{Binding SelectedBinding.Condition}" AcceptsReturn="True" TextWrapping="Wrap" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" />
<TextBlock Grid.Row="6" Grid.Column="0" Grid.ColumnSpan="2" Margin="4,0,0,0" Style="{StaticResource Documentation}">If this LUA script returns false then this binding will abort without executing the action.</TextBlock>
</Grid>
</Expander>
</StackPanel>
Expand Down