OverviewFilesCommitsIssuesDocsReleasesPeers

ifsrenderer-linux / WpfDisplay / Views / IteratorEditor.xaml

122 lines · xaml ref:
<UserControl x:Class="WpfDisplay.Views.IteratorEditor"
             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:local="clr-namespace:WpfDisplay.Views"
             xmlns:vm="clr-namespace:WpfDisplay.ViewModels"
             xmlns:md="http://materialdesigninxaml.net/winfx/xaml/themes"
             d:DataContext="{d:DesignInstance Type=vm:IteratorViewModel}"
             x:Name="iteratorEditor"
             mc:Ignorable="d"
             d:DesignHeight="450" d:DesignWidth="300">
    <UserControl.Resources>
        <BooleanToVisibilityConverter x:Key="conv1"/>
    </UserControl.Resources>
    <StackPanel>
        <TextBlock Margin="0 8" FontWeight="Bold" Style="{DynamicResource MaterialDesignSubtitle1TextBlock}">
                Selected Iterator
        </TextBlock>
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="auto"/>
            </Grid.ColumnDefinitions>
            <TextBox Grid.Column="0" VerticalAlignment="Top"
                    Text="{Binding IteratorName, UpdateSourceTrigger=PropertyChanged}"
                    md:HintAssist.Hint="Name"
                    Style="{StaticResource MaterialDesignFloatingHintTextBox}"/>
            <Button Grid.Column="1"
                    Command="{Binding RemoveCommand}" CommandParameter="{Binding}"
                    ToolTip="Remove (Delete)"
                    Style="{StaticResource MaterialDesignFlatButton}"
                    Margin="4" Padding="6" >
                🗑️
            </Button>
        </Grid>
        <StackPanel>
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="auto"/>
                    <ColumnDefinition Width="*"/>
                    <ColumnDefinition Width="*"/>
                </Grid.ColumnDefinitions>
                <Button Grid.Column="0"
                        Command="{Binding FlipWeightCommand}"
                        Style="{StaticResource MaterialDesignFlatButton}"
                        ToolTip="Enable/Disable (Ctrl+W)"
                        Margin="4,4,4,0" Padding="6" VerticalAlignment="Bottom">
                    ⚖
                </Button>
                <local:ValueSlider Grid.Column="1" Value="{Binding Iterator.StartWeight}" SliderSettings="{Binding StartWeightSlider}"/>
                <local:ValueSlider Grid.Column="2" Value="{Binding BaseWeight}" SliderSettings="{Binding BaseWeightSlider}"/>
            </Grid>
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="auto"/>
                    <ColumnDefinition Width="*"/>
                </Grid.ColumnDefinitions>
                <Button Grid.Column="0"
                        Command="{Binding FlipOpacityCommand}"
                        Style="{StaticResource MaterialDesignFlatButton}"
                        ToolTip="Show/Hide (Ctrl+O)"
                        Margin="4,4,4,0" Padding="6" VerticalAlignment="Bottom">
                    👁️
                </Button>
                <local:ValueSlider Grid.Column="1" Value="{Binding Opacity}" SliderSettings="{Binding OpacitySlider}"/>
            </Grid>
            <Separator Margin="10"/>
            <StackPanel>
                <Grid>
                    <Label>Coloring</Label>
                    <CheckBox IsChecked="{Binding DeltaColoring}"
                              HorizontalAlignment="Right" Foreground="LightGray">
                        <CheckBox.ToolTip>
                            <ToolTip Width="500">
                                <StackPanel Margin="8">
                                    <TextBlock Style="{StaticResource MaterialDesignHeadline6TextBlock}">Alternative Coloring (Delta-P coloring mode)</TextBlock>
                                    <TextBlock Style="{StaticResource MaterialDesignBody1TextBlock}" TextWrapping="Wrap">
                                        An experimental coloring mode which makes hard-to-color structures (such as 1-iterator fractals, gnarl, ..) easier to color.
                                    </TextBlock>
                                    <Image Source="/IFSRenderer;component/Resources/deltap-tooltip.jpg" HorizontalAlignment="Center" />
                                </StackPanel>
                            </ToolTip>
                        </CheckBox.ToolTip>
                        Alternative Coloring
                    </CheckBox>
                </Grid>
                <local:ValueSlider Value="{Binding ColorIndex}" SliderSettings="{Binding ColorIndexSlider}"/>
                <local:PaletteSlider Margin="0 4"
                    ToolTip="The color of the iterator."
                    ColorIndex="{Binding ColorIndex}"
                    Palette="{Binding Path=DataContext.Palette, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}"/>
                <local:ValueSlider Value="{Binding Iterator.ColorSpeed}" SliderSettings="{Binding ColorSpeedSlider}"/>
            </StackPanel>
        </StackPanel>
        <Separator Margin="10"/>
        <StackPanel>
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*"/>
                    <ColumnDefinition Width="*"/>
                </Grid.ColumnDefinitions>
                <local:ValueSlider Grid.Column="0" Value="{Binding Iterator.Mix}" SliderSettings="{Binding MixSlider}"/>
                <local:ValueSlider Grid.Column="1" Value="{Binding Iterator.Add}" SliderSettings="{Binding AddSlider}"/>
            </Grid>
            <TextBlock Text="{Binding TransformName}" Margin="0 8" FontWeight="Bold" Style="{DynamicResource MaterialDesignSubtitle1TextBlock}" />
            <ItemsControl ItemsSource="{Binding Parameters}" IsTabStop="False">
                <ItemsControl.Resources>
                    <!--real-->
                    <DataTemplate DataType="{x:Type vm:RealParamViewModel}">
                        <local:ValueSlider Value="{Binding RealParamValue}" SliderSettings="{Binding RealParamSlider}"/>
                    </DataTemplate>
                    <!--vec3-->
                    <DataTemplate DataType="{x:Type vm:Vec3ParamViewModel}">
                        <local:Vec3Control XValue="{Binding XValue}" YValue="{Binding YValue}" ZValue="{Binding ZValue}" Vec3Settings="{Binding}"/>
                    </DataTemplate>
                </ItemsControl.Resources>
            </ItemsControl>
        </StackPanel>
    </StackPanel>
</UserControl>