OverviewFilesCommitsIssuesDocsReleasesPeers

ifsrenderer-linux / WpfDisplay / Views / Animation / DopeButtonResources.xaml

67 lines · xaml ref:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:sys="clr-namespace:System;assembly=mscorlib"
                    xmlns:anim="clr-namespace:IFSEngine.Animation;assembly=IFSEngine"
                    xmlns:md="http://materialdesigninxaml.net/winfx/xaml/themes" xmlns:local="clr-namespace:WpfDisplay.Views">
    <!--Enum providers for ComboBoxes-->
    <ObjectDataProvider x:Key="easingDirectionEnumItemsProvider"
                            MethodName="GetValues" 
                            ObjectType="{x:Type sys:Enum}">
        <ObjectDataProvider.MethodParameters>
            <x:Type TypeName="anim:EasingDirection"/>
        </ObjectDataProvider.MethodParameters>
    </ObjectDataProvider>
    <ObjectDataProvider x:Key="interpolationModeEnumItemsProvider"
                            MethodName="GetValues" 
                            ObjectType="{x:Type sys:Enum}">
        <ObjectDataProvider.MethodParameters>
            <x:Type TypeName="anim:InterpolationMode"/>
        </ObjectDataProvider.MethodParameters>
    </ObjectDataProvider>
    <!--Custom dope button style-->
    <Style x:Key="dopeButtonStyle" BasedOn="{StaticResource MaterialDesignFlatDarkBgButton}" TargetType="{x:Type Button}">
        <Style.Triggers>
            <DataTrigger Binding="{Binding IsSelected}" Value="True">
                <Setter Property="Background" Value="DarkOrange"/>
            </DataTrigger>
            <Trigger Property="IsMouseOver" Value="True">
                <Setter Property="Background" Value="Orange"/>
            </Trigger>
        </Style.Triggers>
    </Style>
    <TransformGroup x:Key="dopeButtonTransform">
        <RotateTransform CenterX="7.5" CenterY="7.5" Angle="45"/>
        <TranslateTransform X="-7.5"/>
        <ScaleTransform ScaleX="0.5"/>
    </TransformGroup>
    <!--Context menu-->
    <ContextMenu x:Key="dopeButtonContextMenu" StaysOpen="True">
        <MenuItem Icon="{md:PackIcon Kind=Stairs}" Height="55" StaysOpenOnClick="True">
            <MenuItem.Header>
                <ComboBox ItemsSource="{Binding Source={StaticResource interpolationModeEnumItemsProvider}}"
                              SelectedValue="{Binding SelectedInterpolationMode}"
                              Style="{StaticResource MaterialDesignFloatingHintComboBox}"
                              md:HintAssist.Hint="Interpolation mode"/>
            </MenuItem.Header>
        </MenuItem>
        <MenuItem Icon="↔️" Height="55" StaysOpenOnClick="True">
            <MenuItem.Header>
                <ComboBox ItemsSource="{Binding Source={StaticResource easingDirectionEnumItemsProvider}}"
                              SelectedValue="{Binding SelectedEasingDirection}"
                              Style="{StaticResource MaterialDesignFloatingHintComboBox}"
                              md:HintAssist.Hint="Easing direction"/>
            </MenuItem.Header>
        </MenuItem>
        <MenuItem Icon="{md:PackIcon Kind=Vitals}" Height="55" StaysOpenOnClick="True">
            <MenuItem.Header>
                <StackPanel>
                    <TextBlock Style="{StaticResource MaterialDesignOverlineTextBlock}" Foreground="DarkGray">Easing Power</TextBlock>
                    <local:ValueSlider Value="{Binding EasingPower}" 
                                       SliderSettings="{Binding EasingPowerSlider}"/>
                </StackPanel>
            </MenuItem.Header>
        </MenuItem>
        <Separator/>
        <MenuItem Icon="{md:PackIcon Kind=Trash}" Header="Remove keyframe" Command="{Binding RemoveKeyframeCommand}" Foreground="OrangeRed"/>
    </ContextMenu>
</ResourceDictionary>