Files
gtav-src/tools_ng/wildwest/script/3dsMax/UI/ProceduralEditor.xaml
T
2025-09-29 00:52:08 +02:00

667 lines
54 KiB
XML
Executable File

<Grid Name="Root" Width="Auto"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:system="clr-namespace:System;assembly=mscorlib"
SnapsToDevicePixels="True">
<Grid.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="X:\gta5\tools_ng\wildwest\script\3dsMax\UI\Resources\Base.xaml"></ResourceDictionary>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Grid.Resources>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="7"></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Frame Content="{StaticResource ToolHeader}"/>
<TabControl SelectedIndex="1" Padding="0" Grid.Row="3" BorderThickness="0,4,0,0" BorderBrush="{StaticResource BackgroundLightBrush}">
<TabItem Header="Load/Save" ToolTip="Load a set data .xml file." >
<GroupBox Width="250" Header="Selected Set File (.xml)">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Button Name="LoadSetFileButton" Grid.Column="0">Load</Button>
<Button Name="SaveSetFileButton" Grid.Column="1">Save</Button>
</Grid>
</GroupBox>
</TabItem>
<TabItem Name="TabProcedurals" Header="Procedurals" ToolTip="Controls for editing and managing procedurals." >
<StackPanel MinWidth="450" MaxWidth="450">
<GroupBox Header="Selected Procedural">
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<ComboBox Name="SelectedProceduralCombo"
Height="22"
Grid.Column="0"
Grid.ColumnSpan="2"
ItemsSource="{Binding Path=SetData.ProceduralList}"
DisplayMemberPath="Name"
SelectedItem="{Binding Path=SelectedProcedural}"
ToolTip="Select a procedural."/>
<Button Name="DeleteProceduralButton"
Grid.Row="1"
Grid.Column="0"
Content="Delete"
ToolTip="Deletes selected procedural."/>
<Button Name="NewProceduralButton"
Grid.Row="1"
Grid.Column="1"
Content="New"
ToolTip="Create a new procedural."/>
</Grid>
</GroupBox>
<GroupBox Header="Procedural Details" DataContext="{Binding ElementName=SelectedProceduralCombo, Path=SelectedItem}" >
<Grid>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition Width="4"/>
<ColumnDefinition Width="155"/>
</Grid.ColumnDefinitions>
<Grid>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition Height="4"></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition Height="4"></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition Height="4"></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition Height="4"></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="72"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition Width="72"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Label Grid.Column="0" VerticalAlignment="Center" HorizontalAlignment="Right" >Name:</Label>
<TextBox Grid.Column="1" Grid.ColumnSpan="3" BorderBrush="Black" BorderThickness="1" VerticalContentAlignment="Center" Text="{Binding Path=Name}" ToolTip="Click to edit the procedural name."/>
<Label Grid.Column="0" Grid.Row="2" VerticalAlignment="Center" HorizontalAlignment="Right">Target Tag:</Label>
<ComboBox Grid.Column="1" Grid.Row="2" Grid.ColumnSpan="3"
ItemsSource="{Binding ElementName=Root, Path=DataContext.Metadata.ProceduralTags}"
SelectedItem="{Binding Path=TargetTag}"
ToolTip="Select a procedural tag."/>
<Label Grid.Column="0" Grid.Row="4" VerticalAlignment="Center" HorizontalAlignment="Right">Hue:</Label>
<TextBox Grid.Column="1"
Grid.Row="4"
BorderBrush="Black"
BorderThickness="1"
VerticalContentAlignment="Center"
Foreground="{StaticResource DefaultForegroundFontBrush}"
Text="{Binding Path=ColorHue}"
ToolTip="Click to edit the procedural name.">
<TextBox.Background>
<SolidColorBrush Color="{Binding Path=ColorHexCode}"/>
</TextBox.Background>
</TextBox>
<Label Grid.Column="2" Grid.Row="4" VerticalAlignment="Center" HorizontalAlignment="Right">Spacing:</Label>
<TextBox Grid.Column="3" Grid.Row="4" BorderBrush="Black" BorderThickness="1" VerticalContentAlignment="Center" Text="{Binding Path=Spacing}" ToolTip="Click to edit the spacing on the procedural."/>
<Label Grid.Column="0" Grid.Row="6" VerticalAlignment="Top" HorizontalAlignment="Right" >Description:</Label>
<TextBox TextWrapping="Wrap" Grid.ColumnSpan="3" Grid.Column="1" Height="60" Grid.Row="6" BorderBrush="Black" BorderThickness="1" VerticalContentAlignment="Top" Text="{Binding Path=Description}" ToolTip="Type a description."/>
<ToggleButton Grid.Column="1" Grid.Row="8" Grid.ColumnSpan="3" IsChecked="{Binding Path=CullImmune}" ToolTip="Indicates whether the procedural should be applied with the 'ProcCullImmune' flag set. This will force the procedural to draw even on small triangles.">Cull Immune</ToggleButton>
</Grid>
<Button Name="Select_Thumbnail_Button" Grid.Column="3" ToolTip="Click to select/alter thumbnail" >
<Image Source="{Binding Path=ThumbnailImageFilePath}" Grid.RowSpan="3" Grid.Column="3" Stretch="Fill" StretchDirection="Both" ></Image>
</Button>
</Grid>
</GroupBox>
<GroupBox Header="Painting Levels" DataContext="{Binding ElementName=SelectedProceduralCombo, Path=SelectedItem}" >
<StackPanel>
<ListBox Background="Transparent" BorderThickness="0" ItemsSource="{Binding Path=LevelList}" HorizontalContentAlignment="Stretch">
<ListBox.ItemTemplate>
<DataTemplate>
<Border Background="{StaticResource White_10}" Margin="0,0,0,4" BorderBrush="{StaticResource Black_20}" BorderThickness="0,4,0,0">
<Grid >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="25"/>
</Grid.ColumnDefinitions>
<StackPanel>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="50"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Label HorizontalAlignment="Right">Name:</Label>
<TextBox Grid.Column="1" Height="20" VerticalContentAlignment="Center" Text="{Binding Path=Name}" ToolTip="Click to change the level name. E.g. 'Full' or 'Thick'"/>
</Grid>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="50"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Label HorizontalAlignment="Right">Tag:</Label>
<ComboBox Grid.Column="1" Height="20"
ItemsSource="{Binding ElementName=Root, Path=DataContext.Metadata.ProceduralTags}"
SelectedItem="{Binding Path=TargetTag}"
ToolTip="Select a procedural tag."/>
</Grid>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="90"/>
<ColumnDefinition Width="90"/>
<ColumnDefinition Width="90"/>
<ColumnDefinition Width="60"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<!--Density-->
<Grid Grid.Column="0">
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Label HorizontalAlignment="Center">Density</Label>
<ComboBox Height="20" Grid.Row="1" SelectedIndex="{Binding Path=DensityLevel}" ToolTip="Click to change the density for this level.">
<!--0-->
<StackPanel Orientation="Horizontal">
<Grid>
<Rectangle Height="25" Width="25" Fill="{StaticResource Black_60}" Stroke="Black" StrokeThickness="2" />
<Label VerticalAlignment="Top" HorizontalAlignment="Center">0</Label>
</Grid>
<Grid Width="5"/>
<TextBlock VerticalAlignment="Center">- No Change</TextBlock>
</StackPanel>
<!--1-->
<StackPanel Orientation="Horizontal">
<Grid>
<Polygon Fill="{StaticResource Black_60}" Stroke="Black" StrokeThickness="2">
<Polygon.Points>
<Point X="0" Y="0"/>
<Point X="24" Y="0"/>
<Point X="12" Y="24"/>
</Polygon.Points>
</Polygon>
<Label Margin="4,-3,0,0">1</Label>
</Grid>
<Grid Width="5"/>
<TextBlock VerticalAlignment="Center">- Minimum density decrement</TextBlock>
</StackPanel>
<!--2-->
<StackPanel Orientation="Horizontal">
<Grid>
<Polygon Fill="{StaticResource Black_60}" Stroke="Black" StrokeThickness="2">
<Polygon.Points>
<Point X="0" Y="0"/>
<Point X="24" Y="0"/>
<Point X="12" Y="24"/>
</Polygon.Points>
</Polygon>
<Label Margin="4,-3,0,0">2</Label>
</Grid>
<Grid Width="5"/>
<TextBlock VerticalAlignment="Center">-</TextBlock>
</StackPanel>
<!--3-->
<StackPanel Orientation="Horizontal">
<Grid>
<Polygon Fill="{StaticResource Black_60}" Stroke="Black" StrokeThickness="2">
<Polygon.Points>
<Point X="0" Y="0"/>
<Point X="24" Y="0"/>
<Point X="12" Y="24"/>
</Polygon.Points>
</Polygon>
<Label Margin="4,-3,0,0">3</Label>
</Grid>
<Grid Width="5"/>
<TextBlock VerticalAlignment="Center">- Maximum density decrement</TextBlock>
</StackPanel>
</ComboBox>
</Grid>
<!--ScaleXYZ-->
<Grid Grid.Column="1">
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Label HorizontalAlignment="Center">ScaleXYZ</Label>
<ComboBox Grid.Row="1" MaxDropDownHeight="700" Height="20" SelectedIndex="{Binding Path=ScaleXYZLevel}" ToolTip="Click to change the scale in X,Y and Z for this level.">
<StackPanel Orientation="Horizontal">
<Grid>
<Polygon Fill="{StaticResource Black_60}" Stroke="Black" StrokeThickness="2">
<Polygon.Points>
<Point X="0" Y="24"/>
<Point X="24" Y="24"/>
<Point X="12" Y="0"/>
</Polygon.Points>
</Polygon>
<Label Margin="4,4,0,0">0</Label>
</Grid>
<Grid Width="5"/>
<TextBlock VerticalAlignment="Center">- Maximum scale increment</TextBlock>
</StackPanel>
<!--1-->
<StackPanel Orientation="Horizontal">
<Grid>
<Polygon Fill="{StaticResource Black_60}" Stroke="Black" StrokeThickness="2">
<Polygon.Points>
<Point X="0" Y="24"/>
<Point X="24" Y="24"/>
<Point X="12" Y="0"/>
</Polygon.Points>
</Polygon>
<Label Margin="4,4,0,0">1</Label>
</Grid>
<Grid Width="5"/>
<TextBlock VerticalAlignment="Center">-</TextBlock>
</StackPanel>
<!--2-->
<StackPanel Orientation="Horizontal">
<Grid>
<Polygon Fill="{StaticResource Black_60}" Stroke="Black" StrokeThickness="2">
<Polygon.Points>
<Point X="0" Y="24"/>
<Point X="24" Y="24"/>
<Point X="12" Y="0"/>
</Polygon.Points>
</Polygon>
<Label Margin="4,4,0,0">2</Label>
</Grid>
<Grid Width="5"/>
<TextBlock VerticalAlignment="Center">-</TextBlock>
</StackPanel>
<!--3-->
<StackPanel Orientation="Horizontal">
<Grid>
<Polygon Fill="{StaticResource Black_60}" Stroke="Black" StrokeThickness="2">
<Polygon.Points>
<Point X="0" Y="24"/>
<Point X="24" Y="24"/>
<Point X="12" Y="0"/>
</Polygon.Points>
</Polygon>
<Label Margin="4,4,0,0">3</Label>
</Grid>
<Grid Width="5"/>
<TextBlock VerticalAlignment="Center">-</TextBlock>
</StackPanel>
<!--4-->
<StackPanel Orientation="Horizontal">
<Grid>
<Polygon Fill="{StaticResource Black_60}" Stroke="Black" StrokeThickness="2">
<Polygon.Points>
<Point X="0" Y="24"/>
<Point X="24" Y="24"/>
<Point X="12" Y="0"/>
</Polygon.Points>
</Polygon>
<Label Margin="4,4,0,0">4</Label>
</Grid>
<Grid Width="5"/>
<TextBlock VerticalAlignment="Center">-</TextBlock>
</StackPanel>
<!--5-->
<StackPanel Orientation="Horizontal">
<Grid>
<Polygon Fill="{StaticResource Black_60}" Stroke="Black" StrokeThickness="2">
<Polygon.Points>
<Point X="0" Y="24"/>
<Point X="24" Y="24"/>
<Point X="12" Y="0"/>
</Polygon.Points>
</Polygon>
<Label Margin="4,4,0,0">5</Label>
</Grid>
<Grid Width="5"/>
<TextBlock VerticalAlignment="Center">-</TextBlock>
</StackPanel>
<!--6-->
<StackPanel Orientation="Horizontal">
<Grid>
<Polygon Fill="{StaticResource Black_60}" Stroke="Black" StrokeThickness="2">
<Polygon.Points>
<Point X="0" Y="24"/>
<Point X="24" Y="24"/>
<Point X="12" Y="0"/>
</Polygon.Points>
</Polygon>
<Label Margin="4,4,0,0">6</Label>
</Grid>
<Grid Width="5"/>
<TextBlock VerticalAlignment="Center">-</TextBlock>
</StackPanel>
<!--7-->
<StackPanel Orientation="Horizontal">
<Grid>
<Polygon Fill="{StaticResource Black_60}" Stroke="Black" StrokeThickness="2">
<Polygon.Points>
<Point X="0" Y="24"/>
<Point X="24" Y="24"/>
<Point X="12" Y="0"/>
</Polygon.Points>
</Polygon>
<Label Margin="4,4,0,0">7</Label>
</Grid>
<Grid Width="5"/>
<TextBlock VerticalAlignment="Center">- Minimal scale increment</TextBlock>
</StackPanel>
<!--8-->
<StackPanel Orientation="Horizontal">
<Grid>
<Polygon Fill="{StaticResource Black_60}" Stroke="Black" StrokeThickness="2">
<Polygon.Points>
<Point X="0" Y="0"/>
<Point X="24" Y="0"/>
<Point X="12" Y="24"/>
</Polygon.Points>
</Polygon>
<Label Margin="4,-3,0,0">8</Label>
</Grid>
<Grid Width="5"/>
<TextBlock VerticalAlignment="Center">- Minimal scale decrement</TextBlock>
</StackPanel>
<!--9-->
<StackPanel Orientation="Horizontal">
<Grid>
<Polygon Fill="{StaticResource Black_60}" Stroke="Black" StrokeThickness="2">
<Polygon.Points>
<Point X="0" Y="0"/>
<Point X="24" Y="0"/>
<Point X="12" Y="24"/>
</Polygon.Points>
</Polygon>
<Label Margin="4,-3,0,0">9</Label>
</Grid>
<Grid Width="5"/>
<TextBlock VerticalAlignment="Center">-</TextBlock>
</StackPanel>
<!--10-->
<StackPanel Orientation="Horizontal">
<Grid>
<Polygon Fill="{StaticResource Black_60}" Stroke="Black" StrokeThickness="2">
<Polygon.Points>
<Point X="0" Y="0"/>
<Point X="24" Y="0"/>
<Point X="12" Y="24"/>
</Polygon.Points>
</Polygon>
<Label Margin="0,-3,0,0">10</Label>
</Grid>
<Grid Width="5"/>
<TextBlock VerticalAlignment="Center">-</TextBlock>
</StackPanel>
<!--11-->
<StackPanel Orientation="Horizontal">
<Grid>
<Polygon Fill="{StaticResource Black_60}" Stroke="Black" StrokeThickness="2">
<Polygon.Points>
<Point X="0" Y="0"/>
<Point X="24" Y="0"/>
<Point X="12" Y="24"/>
</Polygon.Points>
</Polygon>
<Label Margin="0,-3,0,0">11</Label>
</Grid>
<Grid Width="5"/>
<TextBlock VerticalAlignment="Center">-</TextBlock>
</StackPanel>
<!--12-->
<StackPanel Orientation="Horizontal">
<Grid>
<Polygon Fill="{StaticResource Black_60}" Stroke="Black" StrokeThickness="2">
<Polygon.Points>
<Point X="0" Y="0"/>
<Point X="24" Y="0"/>
<Point X="12" Y="24"/>
</Polygon.Points>
</Polygon>
<Label Margin="0,-3,0,0">12</Label>
</Grid>
<Grid Width="5"/>
<TextBlock VerticalAlignment="Center">-</TextBlock>
</StackPanel>
<!--13-->
<StackPanel Orientation="Horizontal">
<Grid>
<Polygon Fill="{StaticResource Black_60}" Stroke="Black" StrokeThickness="2">
<Polygon.Points>
<Point X="0" Y="0"/>
<Point X="24" Y="0"/>
<Point X="12" Y="24"/>
</Polygon.Points>
</Polygon>
<Label Margin="0,-3,0,0">13</Label>
</Grid>
<Grid Width="5"/>
<TextBlock VerticalAlignment="Center">-</TextBlock>
</StackPanel>
<!--14-->
<StackPanel Orientation="Horizontal">
<Grid>
<Polygon Fill="{StaticResource Black_60}" Stroke="Black" StrokeThickness="2">
<Polygon.Points>
<Point X="0" Y="0"/>
<Point X="24" Y="0"/>
<Point X="12" Y="24"/>
</Polygon.Points>
</Polygon>
<Label Margin="0,-3,0,0">14</Label>
</Grid>
<Grid Width="5"/>
<TextBlock VerticalAlignment="Center">-</TextBlock>
</StackPanel>
<!--15-->
<StackPanel Orientation="Horizontal">
<Grid>
<Polygon Fill="{StaticResource Black_60}" Stroke="Black" StrokeThickness="2">
<Polygon.Points>
<Point X="0" Y="0"/>
<Point X="24" Y="0"/>
<Point X="12" Y="24"/>
</Polygon.Points>
</Polygon>
<Label Margin="0,-3,0,0">15</Label>
</Grid>
<Grid Width="5"/>
<TextBlock VerticalAlignment="Center">- Maximum scale decrement</TextBlock>
</StackPanel>
</ComboBox>
</Grid>
<!--ScaleZ-->
<Grid Grid.Column="2">
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Label HorizontalAlignment="Center">ScaleZ</Label>
<ComboBox Grid.Row="1" Height="20" SelectedIndex="{Binding Path=ScaleZLevel}" ToolTip="Click to change the scale in Z for this level.">
<!--0-->
<StackPanel Orientation="Horizontal">
<Grid>
<Rectangle Height="25" Width="25" Fill="{StaticResource Black_60}" Stroke="Black" StrokeThickness="2" />
<Label VerticalAlignment="Top" HorizontalAlignment="Center">0</Label>
</Grid>
<Grid Width="5"/>
<TextBlock VerticalAlignment="Center">- No Change</TextBlock>
</StackPanel>
<!--1-->
<StackPanel Orientation="Horizontal">
<Grid>
<Polygon Fill="{StaticResource Black_60}" Stroke="Black" StrokeThickness="2">
<Polygon.Points>
<Point X="0" Y="0"/>
<Point X="24" Y="0"/>
<Point X="12" Y="24"/>
</Polygon.Points>
</Polygon>
<Label Margin="4,-3,0,0">1</Label>
</Grid>
<Grid Width="5"/>
<TextBlock VerticalAlignment="Center">- Minimum scale decrement</TextBlock>
</StackPanel>
<!--2-->
<StackPanel Orientation="Horizontal">
<Grid>
<Polygon Fill="{StaticResource Black_60}" Stroke="Black" StrokeThickness="2">
<Polygon.Points>
<Point X="0" Y="0"/>
<Point X="24" Y="0"/>
<Point X="12" Y="24"/>
</Polygon.Points>
</Polygon>
<Label Margin="4,-3,0,0">2</Label>
</Grid>
<Grid Width="5"/>
<TextBlock VerticalAlignment="Center">-</TextBlock>
</StackPanel>
<!--3-->
<StackPanel Orientation="Horizontal">
<Grid>
<Polygon Fill="{StaticResource Black_60}" Stroke="Black" StrokeThickness="2">
<Polygon.Points>
<Point X="0" Y="0"/>
<Point X="24" Y="0"/>
<Point X="12" Y="24"/>
</Polygon.Points>
</Polygon>
<Label Margin="4,-3,0,0">3</Label>
</Grid>
<Grid Width="5"/>
<TextBlock VerticalAlignment="Center">- Maximum scale decrement</TextBlock>
</StackPanel>
</ComboBox>
</Grid>
<Grid Grid.Column="3">
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Label HorizontalAlignment="Center">Blend Dist</Label>
<TextBox Grid.Row="1" Text="{Binding Path=BlendDistance}"></TextBox>
</Grid>
<Grid Grid.Column="4">
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Label HorizontalAlignment="Center">Ground Tint</Label>
<TextBox VerticalContentAlignment="Center" Grid.Row="1" Text="{Binding Path=GroundTintHexCode}" Foreground="Black" Width="Auto" Height="Auto" Cursor="Hand" ToolTip="Click to change the ground tint colour. (Colour picker not yet implemented).">
<TextBox.Background>
<SolidColorBrush Color="{Binding Path=GroundTint.HexCode}" />
</TextBox.Background>
</TextBox>
</Grid>
</Grid>
</StackPanel>
<Button Name="Remove_Level_Button" Grid.Column="1" Content="X" ToolTip="Click to remove the procedural level"/>
</Grid>
</Border>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<Button Name="AddProceduralLevelButton" ToolTip="Click to add a new painting level." IsEnabled="{Binding Path=WithinMaximumLevelLimit}">Add Level</Button>
</StackPanel>
</GroupBox>
</StackPanel>
</TabItem>
<TabItem Name="TabSets" Header="Sets" ToolTip="Controls for editing and managing sets of procedurals." >
<StackPanel Width="280">
<GroupBox Header="Selected Set">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition Width="Auto"></ColumnDefinition>
</Grid.ColumnDefinitions>
<ComboBox Name="SelectedSetCombo" SelectedItem="{Binding Path=SelectedSet}" ItemsSource="{Binding Path=SetData.SetList}" DisplayMemberPath="Name" Grid.Column="0" />
<Button Name="NewSetButton" Grid.Column="1">New</Button>
</Grid>
</GroupBox>
<GroupBox Header="Set Details" DataContext="{Binding ElementName=SelectedSetCombo, Path=SelectedItem}" >
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="67"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Label Grid.Column="0" VerticalAlignment="Center" HorizontalAlignment="Right">Name:</Label>
<TextBox Grid.Column="1" BorderBrush="Black" BorderThickness="1" VerticalContentAlignment="Center" Text="{Binding Path=Name}"></TextBox>
</Grid>
</GroupBox>
<GroupBox Header="Procedural List">
<StackPanel>
<ListBox Padding="0"
Margin="-1,0,-1,0"
Background="Transparent"
ItemsSource="{Binding ElementName=SelectedSetCombo, Path=SelectedItem.ProceduralList}"
BorderThickness="0"
HorizontalContentAlignment="Stretch"
SelectionMode="Single"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
ScrollViewer.CanContentScroll="False">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="Padding" Value="0"></Setter>
<Setter Property="Margin" Value="0,1,0,1"></Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListBoxItem}">
<ContentPresenter />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Margin="0">
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition Width="Auto"></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBox IsReadOnly="True" Text="{Binding Name}"/>
<Button Name="RemoveProceduralButton" Grid.Column="1" Width="65" ToolTip="Remove this procedural from the set.">Remove</Button>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<Border Background="{StaticResource White_50}" Height="1" Margin="0,4,0,4"></Border>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition Width="Auto"></ColumnDefinition>
</Grid.ColumnDefinitions>
<ComboBox Name="ProceduralToAddCombo" ItemsSource="{Binding Path=ValidProceduralList}" DisplayMemberPath="Name"></ComboBox>
<Button Name="AddProceduralToSetButton" DataContext="{Binding ElementName=ProceduralToAddCombo, Path=SelectedItem}" Grid.Column="1" Width="65">Add</Button>
</Grid>
</StackPanel>
</GroupBox>
</StackPanel>
</TabItem>
</TabControl>
</Grid>