using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Tango.Scripting { public class CompilerError { public String File { get; set; } public String Error { get; set; } public int Line { get; set; } public int Character { get; set; } public override string ToString() { return String.Format("{0} {1} ({2},{3})", Error, File, Line, Character); } } }
<UserControl x:Class="Tango.MachineStudio.MachineDesigner.Views.MachineView"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
              xmlns:dragAndDrop="clr-namespace:Tango.DragAndDrop;assembly=Tango.DragAndDrop"
             xmlns:global="clr-namespace:Tango.MachineStudio.MachineDesigner"
             xmlns:fa="http://schemas.fontawesome.io/icons/"
             xmlns:providers="clr-namespace:Tango.MachineStudio.MachineDesigner.AutoComplete"
             xmlns:autoComplete="clr-namespace:Tango.AutoComplete.Editors;assembly=Tango.AutoComplete"
             xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
             xmlns:sharedConverters="clr-namespace:Tango.SharedUI.Converters;assembly=Tango.SharedUI"
             xmlns:vm="clr-namespace:Tango.MachineStudio.MachineDesigner.ViewModels"
             xmlns:local="clr-namespace:Tango.MachineStudio.MachineDesigner.Views"
             mc:Ignorable="d" 
             d:DesignHeight="720" d:DesignWidth="1280" d:DataContext="{d:DesignInstance Type=vm:MainViewVM, IsDesignTimeCreatable=False}">

    <UserControl.Resources>
        <sharedConverters:ColorToIntegerConverter x:Key="ColorToIntegerConverter" />
        <providers:MachinesProvider x:Key="MachinesProvider"></providers:MachinesProvider>

        <Style x:Key="draggableGrid" TargetType="Grid">
            <Setter Property="RenderTransform">
                <Setter.Value>
                    <ScaleTransform ScaleX="1" ScaleY="1"></ScaleTransform>
                </Setter.Value>
            </Setter>
            <Setter Property="RenderTransformOrigin" Value="0.5,0.5"></Setter>
            <Setter Property="Background" Value="Transparent"></Setter>
        </Style>

        <Style TargetType="Expander" BasedOn="{StaticResource {x:Type Expander}}">
            <Setter Property="HeaderTemplate">
                <Setter.Value>
                    <DataTemplate>
                        <TextBlock Text="{Binding}" FontSize="13"></TextBlock>
                    </DataTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </UserControl.Resources>

    <Grid>
        <Viewbox MaxWidth="1200" Grid.Row="1" >
            <Grid VerticalAlignment="Top">

                <Image IsHitTestVisible="False" Source="../Images/machine-full-fx.png" MaxWidth="800" RenderOptions.BitmapScalingMode="Fant">
                    <Image.Effect>
                        <DropShadowEffect ShadowDepth="0" BlurRadius="20" Opacity="1" RenderingBias="Performance" Color="DimGray"></DropShadowEffect>
                    </Image.Effect>
                </Image>

                <Canvas ClipToBounds="False" x:Name="canvas">

                    <Grid x:Name="hardwareGrid" Style="{StaticResource draggableGrid}" Width="118" Height="27" Canvas.Left="342" Canvas.Top="80" Background="#6B303030" IsHitTestVisible="True">
                        <Border BorderBrush="#6C6C6C" BorderThickness="1" IsHitTestVisible="False">
                            <StackPanel Orientation="Horizontal">
                                <Image Source="../Images/hardware.png" Width="10" VerticalAlignment="Center" Margin="5" RenderOptions.BitmapScalingMode="Fant"></Image>
                                <TextBlock Padding="2 0 2 0" VerticalAlignment="Center" TextAlignment="Center" Foreground="Gainsboro" IsHitTestVisible="False" FontSize="6" TextWrapping="Wrap">
                                            <Run Text="{Binding Configuration.HardwareVersions.Name}"></Run>
                                            <Run Text="{Binding Configuration.HardwareVersions.Version}"></Run>
                                </TextBlock>
                            </StackPanel>
                        </Border>
                    </Grid>

                    <TextBlock Canvas.Left="532" FontStyle="Italic" Foreground="Gray" Canvas.Top="-22">Hardware</TextBlock>
                    <Grid Width="97" Height="90" Canvas.Left="431" Canvas.Top="-13">
                        <Rectangle Stroke="Gray" VerticalAlignment="Top" StrokeThickness="1" StrokeDashArray="5" RenderTransformOrigin="0.5,0.5"/>
                        <Rectangle Stroke="Gray" HorizontalAlignment="Left" StrokeThickness="1" StrokeDashArray="5" RenderTransformOrigin="0.5,0.5"/>
                    </Grid>

                    <TextBlock Canvas.Top="222" Canvas.Left="446" FontStyle="Italic" Foreground="Gray">Add IDS</TextBlock>
                    <Grid Width="23" Height="20" Canvas.Top="231" Canvas.Left="414">
                        <Rectangle Stroke="Gray" VerticalAlignment="Top" StrokeThickness="1" StrokeDashArray="5" RenderTransformOrigin="0.5,0.5"/>
                        <Rectangle Stroke="Gray" HorizontalAlignment="Left" StrokeThickness="1" StrokeDashArray="5" RenderTransformOrigin="0.5,0.5"/>
                    </Grid>

                    <TextBlock Canvas.Top="255" Canvas.Left="500" FontStyle="Italic" Foreground="Gray">Remove IDS</TextBlock>
                    <Grid Width="35" Height="8" Canvas.Top="264" Canvas.Left="460">
                        <Rectangle Stroke="Gray" VerticalAlignment="Top" StrokeThickness="1" StrokeDashArray="5" RenderTransformOrigin="0.5,0.5"/>
                    </Grid>

                    <Button Command="{Binding AddIdsCommand}" Style="{StaticResource MaterialDesignFlatButton}" Height="24" Width="24" Padding="0" Canvas.Left="402" Canvas.Top="253">
                        <materialDesign:PackIcon Kind="Plus" Width="24" Height="24"></materialDesign:PackIcon>
                    </Button>

                    <Button Command="{Binding RemoveIdsCommand}" Style="{StaticResource MaterialDesignFlatButton}" Height="24" Width="24" Padding="0" Canvas.Left="430" Canvas.Top="252">
                        <materialDesign:PackIcon Kind="Minus" Width="24" Height="24"></materialDesign:PackIcon>
                    </Button>

                    <Grid x:Name="gridIds" Width="310" Height="195" Canvas.Top="314" Canvas.Left="420">
                        <ListBox ItemsSource="{Binding Configuration.IdsPacks}" SelectedItem="{Binding SelectedIds}" ScrollViewer.VerticalScrollBarVisibility="Disabled" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
                            <ListBox.ItemContainerStyle>
                                <Style TargetType="ListBoxItem" BasedOn="{StaticResource {x:Type ListBoxItem}}">
                                    <Setter Property="Padding" Value="0"></Setter>
                                    <Setter Property="VerticalContentAlignment" Value="Stretch"></Setter>
                                    <Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
                                </Style>
                            </ListBox.ItemContainerStyle>
                            <ItemsControl.ItemsPanel>
                                <ItemsPanelTemplate>
                                    <UniformGrid Columns="8"></UniformGrid>
                                </ItemsPanelTemplate>
                            </ItemsControl.ItemsPanel>
                            <ItemsControl.ItemTemplate>
                                <DataTemplate>
                                    <Grid dragAndDrop:DragAndDropService.DraggableBorderBrush="{StaticResource AccentColorBrush}">
                                        <Grid.RowDefinitions>
                                            <RowDefinition Height="1*"/>
                                            <RowDefinition Height="30"/>
                                        </Grid.RowDefinitions>
                                        <Grid.Style>
                                            <Style TargetType="Grid" BasedOn="{StaticResource draggableGrid}">
                                                <Style.Triggers>

                                                </Style.Triggers>
                                            </Style>
                                        </Grid.Style>
                                        <UniformGrid Columns="1" Rows="2">
                                            <Grid Margin="2">
                                                <Image IsHitTestVisible="False" Source="../Images/dispenser.png" RenderOptions.BitmapScalingMode="Fant">
                                                    <Image.Style>
                                                        <Style TargetType="Image">
                                                            <Style.Triggers>
                                                                <DataTrigger Binding="{Binding DispenserTypes}" Value="{x:Null}">
                                                                    <Setter Property="Opacity" Value="0.2"></Setter>
                                                                </DataTrigger>
                                                            </Style.Triggers>
                                                        </Style>
                                                    </Image.Style>
                                                </Image>
                                                <Rectangle IsHitTestVisible="False" Margin="14 25 13 34">
                                                    <Rectangle.Fill>
                                                        <LinearGradientBrush StartPoint="0,0" EndPoint="0,0.8" Opacity="0.8">
                                                            <GradientStop Offset="0" Color="Transparent" />
                                                            <GradientStop Offset="1" Color="{Binding LiquidTypes.Color,Converter={StaticResource ColorToIntegerConverter}}"/>
                                                        </LinearGradientBrush>
                                                    </Rectangle.Fill>
                                                </Rectangle>
                                            </Grid>

                                            <Grid Margin="2">
                                                <Image IsHitTestVisible="False" Stretch="Fill" Source="../Images/mid-tank.png" RenderOptions.BitmapScalingMode="Fant">
                                                    <Image.Style>
                                                        <Style TargetType="Image">
                                                            <Style.Triggers>
                                                                <DataTrigger Binding="{Binding MidTankTypes}" Value="{x:Null}">
                                                                    <Setter Property="Opacity" Value="0.2"></Setter>
                                                                </DataTrigger>
                                                            </Style.Triggers>
                                                        </Style>
                                                    </Image.Style>
                                                </Image>
                                                <Rectangle IsHitTestVisible="False" Margin="4 25 4 1">
                                                    <Rectangle.Fill>
                                                        <LinearGradientBrush StartPoint="0,0" EndPoint="0,0.8" Opacity="0.8">
                                                            <GradientStop Offset="0" Color="Transparent" />
                                                            <GradientStop Offset="1" Color="{Binding LiquidTypes.Color,Converter={StaticResource ColorToIntegerConverter}}"/>
                                                        </LinearGradientBrush>
                                                    </Rectangle.Fill>
                                                </Rectangle>
                                            </Grid>
                                        </UniformGrid>

                                        <Grid Grid.Row="1" Margin="3" IsHitTestVisible="False">
                                            <Grid.Style>
                                                <Style TargetType="Grid">
                                                    <Style.Triggers>
                                                        <DataTrigger Binding="{Binding CartridgeTypes}" Value="{x:Null}">
                                                            <Setter Property="Opacity" Value="0.2"></Setter>
                                                        </DataTrigger>
                                                    </Style.Triggers>
                                                </Style>
                                            </Grid.Style>
                                            <Border BorderBrush="#252525" BorderThickness="1" CornerRadius="3">
                                                <Border.Background>
                                                    <LinearGradientBrush>
                                                        <GradientStop Color="#FF252525"/>
                                                        <GradientStop Color="#FF838383" Offset="1"/>
                                                    </LinearGradientBrush>
                                                </Border.Background>
                                            </Border>
                                            <Border BorderBrush="#252525" BorderThickness="1" CornerRadius="3">
                                                <Border.Background>
                                                    <LinearGradientBrush Opacity="0.7">
                                                        <GradientStop Offset="0" Color="Transparent" />
                                                        <GradientStop Offset="1" Color="{Binding LiquidTypes.Color,Converter={StaticResource ColorToIntegerConverter}}"/>
                                                    </LinearGradientBrush>
                                                </Border.Background>
                                            </Border>
                                        </Grid>
                                    </Grid>
                                </DataTemplate>
                            </ItemsControl.ItemTemplate>
                        </ListBox>

                        <Grid Margin="0 50 0 0">
                            <Grid.Style>
                                <Style TargetType="Grid">
                                    <Setter Property="Visibility" Value="Hidden"></Setter>
                                    <Style.Triggers>
                                        <DataTrigger Binding="{Binding Configuration.IdsPacks.Count}" Value="0">
                                            <Setter Property="Visibility" Value="Visible"></Setter>
                                        </DataTrigger>
                                    </Style.Triggers>
                                </Style>
                            </Grid.Style>
                            <TextBlock VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="20" FontWeight="Bold" Foreground="Gainsboro">NO IDS PACKS</TextBlock>
                        </Grid>

                        <Rectangle VerticalAlignment="Bottom" Stroke="DimGray" StrokeThickness="1">
                            <Rectangle.Effect>
                                <DropShadowEffect ShadowDepth="1" Opacity="1" Color="Black" />
                            </Rectangle.Effect>
                        </Rectangle>
                    </Grid>

                    <Grid x:Name="gridEmbedded" Style="{StaticResource draggableGrid}" Width="70" Height="100" Canvas.Left="80" Canvas.Top="331" IsHitTestVisible="True" SnapsToDevicePixels="True">
                        <Image Source="../Images/ti-tm4c129x.png" RenderOptions.BitmapScalingMode="Fant"></Image>
                    </Grid>

                    <Grid Width="61" IsHitTestVisible="True" SnapsToDevicePixels="True" ClipToBounds="True" Height="42" Canvas.Left="85" Canvas.Top="385">
                        <Grid.RowDefinitions>
                            <RowDefinition Height="1*" />
                            <RowDefinition Height="1*" />
                        </Grid.RowDefinitions>

                        <StackPanel Orientation="Horizontal">
                            <Image Source="../Images/embedded.png" Width="10" VerticalAlignment="Center" Margin="1" RenderOptions.BitmapScalingMode="Fant"></Image>
                            <TextBlock VerticalAlignment="Center" Padding="1" Foreground="Gainsboro"  IsHitTestVisible="False" FontSize="5" TextAlignment="Center" TextWrapping="Wrap" Height="15" Margin="0,6,0,0" Width="47"><Run Text="{Binding Configuration.EmbeddedFirmwareVersions.Name}"/><Run Text=" "/><Run Text="{Binding Configuration.EmbeddedFirmwareVersions.Version}"/></TextBlock>
                        </StackPanel>
                        <StackPanel Grid.Row="1" Orientation="Horizontal">
                            <Image Source="../Images/embedded-software.png" Width="10" VerticalAlignment="Center" Margin="1" RenderOptions.BitmapScalingMode="Fant"></Image>
                            <TextBlock Padding="1" IsHitTestVisible="False" VerticalAlignment="Center" Foreground="Gainsboro" FontSize="5" TextAlignment="Center" TextWrapping="Wrap" Height="14" Margin="0,6,0,1" Width="47">
                                        <Run Text="{Binding Configuration.EmbeddedSoftwareVersions.Name}"></Run>
                                        <Run Text="{Binding Configuration.EmbeddedSoftwareVersions.Version}"></Run>
                            </TextBlock>
                        </StackPanel>
                    </Grid>

                    <TextBlock Canvas.Top="163" Canvas.Left="288" FontStyle="Italic" Foreground="Gray">Touch Panel</TextBlock>
                    <Grid Width="53" Height="55" Canvas.Top="184" Canvas.Left="279">
                        <Rectangle Stroke="Gray" VerticalAlignment="Bottom" StrokeThickness="1" StrokeDashArray="5" RenderTransformOrigin="0.5,0.5"/>
                        <Rectangle Stroke="Gray" HorizontalAlignment="Right" StrokeThickness="1" StrokeDashArray="5" RenderTransformOrigin="0.5,0.5"/>
                    </Grid>

                    <TextBlock Canvas.Top="441" Canvas.Left="156" FontStyle="Italic" Foreground="Gray">Embedded Firmware</TextBlock>
                    <Grid Width="82" Height="26" Canvas.Top="410" Canvas.Left="158">
                        <Rectangle Stroke="Gray" VerticalAlignment="Top" StrokeThickness="1" StrokeDashArray="5" RenderTransformOrigin="0.5,0.5"/>
                        <Rectangle Stroke="Gray" HorizontalAlignment="Right" StrokeThickness="1" StrokeDashArray="6" RenderTransformOrigin="0.5,0.5"/>
                    </Grid>

                    <TextBlock Canvas.Top="310" Canvas.Left="340" FontStyle="Italic" Foreground="Gray">Dispensers</TextBlock>
                    <Grid Width="53" Height="20" Canvas.Top="331" Canvas.Left="377">
                        <Rectangle Stroke="Gray" VerticalAlignment="Bottom" StrokeThickness="1" StrokeDashArray="5" RenderTransformOrigin="0.5,0.5"/>
                        <Rectangle Stroke="Gray" HorizontalAlignment="Left" StrokeThickness="1" StrokeDashArray="5" RenderTransformOrigin="0.5,0.5"/>
                    </Grid>

                    <TextBlock Canvas.Top="395" Canvas.Left="331" FontStyle="Italic" Foreground="Gray">Mid Tanks</TextBlock>
                    <Grid Width="62" Height="29" Canvas.Top="418" Canvas.Left="357">
                        <Rectangle Stroke="Gray" VerticalAlignment="Bottom" StrokeThickness="1" StrokeDashArray="5" RenderTransformOrigin="0.5,0.5"/>
                        <Rectangle Stroke="Gray" HorizontalAlignment="Left" StrokeThickness="1" StrokeDashArray="5" RenderTransformOrigin="0.5,0.5"/>
                    </Grid>

                    <TextBlock Canvas.Top="469" Canvas.Left="304" FontStyle="Italic" Foreground="Gray">Cartridges</TextBlock>
                    <Grid Width="87" Height="10" Canvas.Top="487" Canvas.Left="332">
                        <Rectangle Stroke="Gray" VerticalAlignment="Bottom" StrokeThickness="1" StrokeDashArray="5" RenderTransformOrigin="0.5,0.5"/>
                        <Rectangle Stroke="Gray" HorizontalAlignment="Left" StrokeThickness="1" StrokeDashArray="5" RenderTransformOrigin="0.5,0.5"/>
                    </Grid>

                    <Grid x:Name="gridTablet" Width="67" IsHitTestVisible="True" SnapsToDevicePixels="True" ClipToBounds="True" Height="90" Canvas.Left="188" Canvas.Top="198">
                        <Grid.Style>
                            <Style TargetType="Grid" BasedOn="{StaticResource draggableGrid}">
                                <Setter Property="Background" Value="#2B2B2B"></Setter>
                                <Style.Triggers>
                                    <Trigger Property="dragAndDrop:DragAndDropService.IsDraggableOver" Value="True">
                                        <Setter Property="Background" Value="Black"></Setter>
                                    </Trigger>
                                </Style.Triggers>
                            </Style>
                        </Grid.Style>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="1*" />
                            <RowDefinition Height="1*" />
                            <RowDefinition Height="1*" />
                            <RowDefinition Height="1*" />
                        </Grid.RowDefinitions>

                        <StackPanel>
                            <Image Source="../Images/tablet.png" Width="10" Margin="2" RenderOptions.BitmapScalingMode="Fant"></Image>
                            <TextBlock Padding="2 0 2 0" Foreground="Gainsboro"  IsHitTestVisible="False" FontSize="6" TextAlignment="Center" TextWrapping="Wrap">
                                        <Run Text="{Binding Configuration.ApplicationDisplayPanelVersions.Name}"></Run>
                                        <Run Text="{Binding Configuration.ApplicationDisplayPanelVersions.Version}"></Run>
                            </TextBlock>
                        </StackPanel>

                        <StackPanel Grid.Row="2" >
                            <Image Source="../Images/app.png" Width="10" Margin="2" RenderOptions.BitmapScalingMode="Fant"></Image>
                            <TextBlock Padding="2 0 2 0" IsHitTestVisible="False" Foreground="Gainsboro" FontSize="6" TextAlignment="Center" TextWrapping="Wrap">
                                        <Run Text="{Binding Configuration.ApplicationVersions.Name}"></Run>
                                        <Run Text="{Binding Configuration.ApplicationVersions.Version}"></Run>
                            </TextBlock>
                        </StackPanel>


                        <StackPanel Grid.Row="3" >
                            <Image Source="../Images/application-firmware.png" Width="10" Margin="2" RenderOptions.BitmapScalingMode="Fant"></Image>
                            <TextBlock Padding="2 0 2 0" IsHitTestVisible="False" Foreground="Gainsboro" FontSize="6" TextAlignment="Center" TextWrapping="Wrap">
                                        <Run Text="{Binding Configuration.ApplicationFirmwareVersions.Name}"></Run>
                                        <Run Text="{Binding Configuration.ApplicationFirmwareVersions.Version}"></Run>
                            </TextBlock>
                        </StackPanel>

                        <StackPanel Grid.Row="1" >
                            <Image Source="../Images/android.png" Width="10" Margin="2" RenderOptions.BitmapScalingMode="Fant"></Image>
                            <TextBlock Padding="2 0 2 0" IsHitTestVisible="False" Foreground="Gainsboro" FontSize="6" TextAlignment="Center" TextWrapping="Wrap">
                                        <Run Text="{Binding Configuration.ApplicationOsVersions.Name}"></Run>
                                        <Run Text="{Binding Configuration.ApplicationOsVersions.Version}"></Run>
                            </TextBlock>
                        </StackPanel>
                    </Grid>
                </Canvas>
            </Grid>
        </Viewbox>
    </Grid>
</UserControl>