aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/FSE/Modules/Tango.FSE.Diagnostics/Project/Widgets/Dispenser/DispenserWidgetView.xaml
blob: 75294c59d9f1b32ac05d1c755125cb521a228739 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
<UserControl x:Class="Tango.FSE.Diagnostics.Project.Widgets.Dispenser.DispenserWidgetView"
             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:controls="clr-namespace:Tango.FSE.Common.Controls;assembly=Tango.FSE.Common"
             xmlns:material="http://materialdesigninxaml.net/winfx/xaml/themes"
             xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
             xmlns:local="clr-namespace:Tango.FSE.Diagnostics.Project.Widgets.Dispenser"
             xmlns:motor="clr-namespace:Tango.FSE.Diagnostics.Project.Widgets.Motor"
             mc:Ignorable="d" 
             d:DesignHeight="450" d:DesignWidth="640" d:DataContext="{d:DesignInstance Type=local:DispenserWidget,IsDesignTimeCreatable=False}">
    <Grid>
        <Viewbox Stretch="Uniform">
            <Grid Width="320" Height="400" Margin="70 0 0 0">
                <Grid.LayoutTransform>
                    <RotateTransform Angle="-90" />
                </Grid.LayoutTransform>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="25*"/>
                    <ColumnDefinition Width="100*"/>
                    <ColumnDefinition Width="25*"/>
                </Grid.ColumnDefinitions>

                <Grid.RowDefinitions>
                    <RowDefinition Height="87*" />
                    <RowDefinition Height="18*" />
                </Grid.RowDefinitions>

                <Grid Grid.Column="1">
                    <Border BorderThickness="1" BorderBrush="{StaticResource FSE_BorderBrush}" CornerRadius="10" Background="#252525">
                        <Grid>
                            <Grid.LayoutTransform>
                                <RotateTransform Angle="90" />
                            </Grid.LayoutTransform>
                            <Image Stretch="Fill" Source="../Dispenser/Images/dispenser_line.png" />
                            <Path HorizontalAlignment="Left" VerticalAlignment="Bottom" Width="100" RenderTransformOrigin="0.5,0.5" StrokeThickness="1" Stretch="Uniform" Margin="10" Data="M500.633 211.454l-58.729-14.443c-3.53-11.133-8.071-21.929-13.55-32.256c8.818-14.678 27.349-45.571 27.349-45.571    c3.545-5.903 2.607-13.462-2.256-18.325l-42.422-42.422c-4.863-4.878-12.407-5.815-18.325-2.256L347.055 83.53    c-10.269-5.435-21.006-9.932-32.065-13.433l-14.443-58.729C298.876 4.688 292.885 0 286 0h-60    c-6.885 0-12.891 4.688-14.546 11.367c0 0-10.005 40.99-14.429 58.715c-11.792 3.735-23.188 8.584-34.043 14.502l-47.329-28.403    c-5.918-3.516-13.447-2.607-18.325 2.256l-42.422 42.422c-4.863 4.863-5.801 12.422-2.256 18.325l29.268 48.882    c-4.717 9.302-8.672 18.984-11.821 28.901l-58.729 14.487C4.688 213.124 0 219.115 0 226v60c0 6.885 4.688 12.891 11.367 14.546    l58.744 14.443c3.56 11.294 8.188 22.266 13.799 32.798l-26.191 43.652c-3.545 5.903-2.607 13.462 2.256 18.325l42.422 42.422    c4.849 4.849 12.407 5.771 18.325 2.256c0 0 29.37-17.607 43.755-26.221c10.415 5.552 21.313 10.137 32.549 13.696l14.429 58.715    C213.109 507.313 219.115 512 226 512h60c6.885 0 12.876-4.688 14.546-11.367l14.429-58.715    c11.558-3.662 22.69-8.394 33.281-14.136c14.78 8.862 44.443 26.66 44.443 26.66c5.903 3.53 13.462 2.622 18.325-2.256    l42.422-42.422c4.863-4.863 5.801-12.422 2.256-18.325l-26.968-44.927c5.317-10.093 9.727-20.654 13.169-31.523l58.729-14.443    C507.313 298.876 512 292.885 512 286v-60C512 219.115 507.313 213.124 500.633 211.454z M256 361c-57.891 0-105-47.109-105-105    s47.109-105 105-105s105 47.109 105 105S313.891 361 256 361z">
                                <Path.Stroke>
                                    <SolidColorBrush Color="{Binding Settings.Color}" />
                                </Path.Stroke>
                                <Path.Style>
                                    <Style TargetType="Path">
                                        <Setter Property="RenderTransform">
                                            <Setter.Value>
                                                <RotateTransform x:Name="propRotate" Angle="0" />
                                            </Setter.Value>
                                        </Setter>
                                        <Style.Triggers>

                                            <DataTrigger Binding="{Binding State}" Value="{x:Static motor:MotorWidgetState.JoggingForward}">
                                                <DataTrigger.EnterActions>
                                                    <BeginStoryboard Name="joggingForward">
                                                        <Storyboard>
                                                            <DoubleAnimation Storyboard.TargetProperty="RenderTransform.Angle" To="360" Duration="00:00:01" RepeatBehavior="Forever" FillBehavior="HoldEnd" />
                                                        </Storyboard>
                                                    </BeginStoryboard>
                                                </DataTrigger.EnterActions>
                                                <DataTrigger.ExitActions>
                                                    <RemoveStoryboard BeginStoryboardName="joggingForward" />
                                                </DataTrigger.ExitActions>
                                            </DataTrigger>

                                            <DataTrigger Binding="{Binding State}" Value="{x:Static motor:MotorWidgetState.JoggingBackward}">
                                                <DataTrigger.EnterActions>
                                                    <BeginStoryboard Name="joggingBackward">
                                                        <Storyboard>
                                                            <DoubleAnimation Storyboard.TargetProperty="RenderTransform.Angle" To="-360" Duration="00:00:01" RepeatBehavior="Forever" FillBehavior="HoldEnd" />
                                                        </Storyboard>
                                                    </BeginStoryboard>
                                                </DataTrigger.EnterActions>
                                                <DataTrigger.ExitActions>
                                                    <RemoveStoryboard BeginStoryboardName="joggingBackward" />
                                                </DataTrigger.ExitActions>
                                            </DataTrigger>

                                            <DataTrigger Binding="{Binding State}" Value="{x:Static motor:MotorWidgetState.HomingForward}">
                                                <DataTrigger.EnterActions>
                                                    <BeginStoryboard Name="homingForward">
                                                        <Storyboard>
                                                            <DoubleAnimation Storyboard.TargetProperty="RenderTransform.Angle" To="360" Duration="00:00:01" RepeatBehavior="Forever" FillBehavior="HoldEnd" />
                                                        </Storyboard>
                                                    </BeginStoryboard>
                                                </DataTrigger.EnterActions>
                                                <DataTrigger.ExitActions>
                                                    <RemoveStoryboard BeginStoryboardName="homingForward" />
                                                </DataTrigger.ExitActions>
                                            </DataTrigger>

                                            <DataTrigger Binding="{Binding State}" Value="{x:Static motor:MotorWidgetState.HomingBackward}">
                                                <DataTrigger.EnterActions>
                                                    <BeginStoryboard Name="homingBackward">
                                                        <Storyboard>
                                                            <DoubleAnimation Storyboard.TargetProperty="RenderTransform.Angle" To="-360" Duration="00:00:01" RepeatBehavior="Forever" FillBehavior="HoldEnd" />
                                                        </Storyboard>
                                                    </BeginStoryboard>
                                                </DataTrigger.EnterActions>
                                                <DataTrigger.ExitActions>
                                                    <RemoveStoryboard BeginStoryboardName="homingBackward" />
                                                </DataTrigger.ExitActions>
                                            </DataTrigger>

                                        </Style.Triggers>
                                    </Style>
                                </Path.Style>
                                <Path.Fill>
                                    <LinearGradientBrush>
                                        <GradientStop Color="Black"/>
                                        <GradientStop Color="Transparent" Offset="0.8"/>
                                    </LinearGradientBrush>
                                </Path.Fill>
                            </Path>
                        </Grid>
                    </Border>
                </Grid>

                <Grid>
                    <Button Margin="0 60" Style="{StaticResource FSE_MotorWidgetButton_Left}" IsEnabled="{Binding IsHoming,Converter={StaticResource BooleanInverseConverter}}">
                        <i:Interaction.Triggers>
                            <i:EventTrigger EventName="PreviewMouseDown">
                                <i:InvokeCommandAction Command="{Binding ExecuteCommand}" CommandParameter="{x:Static motor:MotorWidgetState.JoggingBackward}" />
                            </i:EventTrigger>
                            <i:EventTrigger EventName="PreviewMouseUp">
                                <i:InvokeCommandAction Command="{Binding StopCommand}" />
                            </i:EventTrigger>
                        </i:Interaction.Triggers>
                        <Viewbox Stretch="Fill" Margin="-10 20">
                            <material:PackIcon Kind="ChevronLeft" HorizontalAlignment="Center" VerticalAlignment="Center" Width="24" Height="24" />
                        </Viewbox>
                    </Button>
                </Grid>

                <Grid Grid.Column="2">
                    <Button Margin="0 60" Style="{StaticResource FSE_MotorWidgetButton_Right}" IsEnabled="{Binding IsHoming,Converter={StaticResource BooleanInverseConverter}}">
                        <i:Interaction.Triggers>
                            <i:EventTrigger EventName="PreviewMouseDown">
                                <i:InvokeCommandAction Command="{Binding ExecuteCommand}" CommandParameter="{x:Static motor:MotorWidgetState.JoggingForward}" />
                            </i:EventTrigger>
                            <i:EventTrigger EventName="PreviewMouseUp">
                                <i:InvokeCommandAction Command="{Binding StopCommand}" />
                            </i:EventTrigger>
                        </i:Interaction.Triggers>
                        <Viewbox Stretch="Fill" Margin="-10 20">
                            <material:PackIcon Kind="ChevronRight" HorizontalAlignment="Center" VerticalAlignment="Center" Width="24" Height="24" />
                        </Viewbox>
                    </Button>
                </Grid>

                <Grid Grid.Column="1" Grid.Row="1" Visibility="Visible">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="20*"/>
                        <ColumnDefinition Width="115*"/>
                        <ColumnDefinition Width="20*"/>
                    </Grid.ColumnDefinitions>

                    <Grid Grid.Column="1">
                        <Border Style="{StaticResource FSE_MotorWidgetBorder_Center}">
                            <Grid x:Name="gridDefault">
                                <DockPanel>
                                    <controls:IconButton IsEnabled="{Binding IsHoming,Converter={StaticResource BooleanInverseConverter}}" Margin="5 0 0 0" HorizontalAlignment="Center" Command="{Binding ExecuteCommand}" CommandParameter="{x:Static motor:MotorWidgetState.HomingBackward}" Width="40" Height="40" Style="{StaticResource FSE_WidgetIconButton_Red}" DockPanel.Dock="Left" Icon="ChevronDoubleLeft"></controls:IconButton>
                                    <controls:IconButton IsEnabled="{Binding IsHoming,Converter={StaticResource BooleanInverseConverter}}" HorizontalAlignment="Center" Command="{Binding ExecuteCommand}" CommandParameter="{x:Static motor:MotorWidgetState.HomingForward}" Width="40" Height="40" Style="{StaticResource FSE_WidgetIconButton_Red}" DockPanel.Dock="Right" Icon="ChevronDoubleRight"></controls:IconButton>

                                    <Grid>
                                        <Grid.LayoutTransform>
                                            <RotateTransform Angle="90" />
                                        </Grid.LayoutTransform>
                                        <material:PackIcon Margin="-5 0 0 0" Visibility="{Binding IsHoming,Converter={StaticResource BooleanToVisibilityInverseConverter}}" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="{StaticResource FSE_PrimaryForegroundBrush}" Padding="0" Width="55" Height="55" Kind="Home"></material:PackIcon>

                                        <Grid Visibility="{Binding IsHoming,Converter={StaticResource BooleanToVisibilityConverter}}">

                                            <Viewbox Margin="0 5 5 5">
                                                <controls:ProgressRingDouble HorizontalAlignment="Center" VerticalAlignment="Center" Minimum="0" Maximum="100" IsIndeterminate="{Binding HomingProgress.IsIndeterminate}" Foreground="{StaticResource FSE_PrimaryForegroundBrush}" Value="{Binding HomingProgress.Value}" Thickness="5" Width="70" Height="70" />
                                            </Viewbox>

                                            <controls:IconButton Cursor="Hand" Padding="0" Command="{Binding StopCommand}" Icon="Stop" Width="42" Height="42" Foreground="{StaticResource FSE_RedBrush}" HorizontalAlignment="Center" VerticalAlignment="Center"></controls:IconButton>
                                        </Grid>
                                    </Grid>
                                </DockPanel>
                            </Grid>
                        </Border>
                    </Grid>
                </Grid>
            </Grid>
        </Viewbox>
    </Grid>
</UserControl>