AvalonLife Listing 3 – ALMainWin.xaml

<Window x:Class="AvalonLife.ALMainWin"
	xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
	xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
	Title="AvalonLife 1.0" Height="600" Width="600" Name="ALMainWindow" Background="#FFFFFFFF"
	Loaded="ALMainWin_OnLoaded" >
	<Window.Resources>
		<Style x:Key="RunSpeedSliderStyle" TargetType="{x:Type Slider}">
			<Setter Property="Width" Value="120" />
			<Setter Property="Value" Value="{Binding Path=TimerInterval, Mode=TwoWay}" />
			<Setter Property="Orientation" Value="Horizontal" />
			<Setter Property="HorizontalAlignment" Value="Left" />
			<Setter Property="IsSnapToTickEnabled" Value="True" />
			<Setter Property="Minimum" Value="100" />
			<Setter Property="Maximum" Value="1000" />
			<Setter Property="TickPlacement" Value="BottomRight" />
			<Setter Property="TickFrequency" Value="100" />
			<Setter Property="IsDirectionReversed" Value="True" />
			<Setter Property="IsMoveToPointEnabled" Value="True" />
		</Style>
		<Style x:Key="GenCountStyle" TargetType="{x:Type TextBlock}">
			<Setter Property="Foreground" Value="Blue" />
			<Setter Property="Text" Value="{Binding Path=Generation}" />
		</Style>
		<Style x:Key="BirthCountStyle" TargetType="{x:Type TextBlock}">
			<Setter Property="Foreground" Value="Blue" />
			<Setter Property="Text" Value="{Binding Path=CellBirths}" />
		</Style>
		<Style x:Key="DeathCountStyle" TargetType="{x:Type TextBlock}">
			<Setter Property="Foreground" Value="Blue" />
			<Setter Property="Text" Value="{Binding Path=CellDeaths}" />
		</Style>
		<Style x:Key="PopulationCountStyle" TargetType="{x:Type TextBlock}">
			<Setter Property="Foreground" Value="Blue" />
			<Setter Property="Text" Value="{Binding Path=Population}" />
		</Style>
		<Style x:Key="PeakPopulationCountStyle" TargetType="{x:Type TextBlock}">
			<Setter Property="Foreground" Value="Blue" />
			<Setter Property="Text" Value="{Binding Path=PeakPopulation}" />
		</Style>
	</Window.Resources>
	<Grid>
		<DockPanel>
			<DockPanel DockPanel.Dock="Top" LastChildFill="False"  
				Background="{DynamicResource {x:Static SystemColors.MenuBarBrushKey}}">
				<Menu Margin="0,5,5,2" DockPanel.Dock="Left" Width="Auto" HorizontalAlignment="Left" 
					Background="{DynamicResource {x:Static SystemColors.MenuBarBrushKey}}" >
						<MenuItem Header="Game">
						<MenuItem Name="MenuGameNew" Header="New" Click="Menu_OnGameNew" />
						<MenuItem Name="MenuGameReset" Header="Reset" Click="Menu_OnGameReset" />
						<MenuItem Name="MenuGameSave" Header="Save..." Click="Menu_OnGameSave" />
						<MenuItem Name="MenuGameSaveAs" Header="Save as..." Click="Menu_OnGameSaveAs" />
						<MenuItem Name="MenuGameLoad" Header="Load..." Click="Menu_OnGameLoad" />
						<Separator />
						<MenuItem Header="Exit" Click="Menu_OnGameExit" />
					</MenuItem>
					<MenuItem Header="Settings">
						<MenuItem Name="MenuSettingsGridLines" Header="Show Grid" Click="Menu_OnSettingsGridLines" />
						<MenuItem Name="MenuSettingsReticle" Header="Show Reticle" Click="Menu_OnSettingsReticle" />
						<MenuItem Name="MenuSettingsHaltStable" Header="Halt Stable Model" Click="Menu_OnSettingsHaltStable" />
						<Separator />
						<MenuItem Name="MenuSettingsGridBkgColor" Header="Grid Background..." Click="Menu_OnSettingsGridBackground" />
						<MenuItem Name="MenuSettingsReticleColor" Header="Reticle Color..." Click="Menu_OnSettingsReticleColor" />
						<MenuItem Name="MenuSettingsCellBrush" Header="Cell Color..." Click="Menu_OnSettingsCellBrush" />
						<Separator />
						<MenuItem Header="Grid Type">
							<MenuItem Name="MenuSettingsGridTorus" Header="Torus" Click="Menu_OnSettingsGridType" />
							<MenuItem Name="MenuSettingsGridXCyl" Header="X Cylinder" Click="Menu_OnSettingsGridType" />
							<MenuItem Name="MenuSettingsGridYCyl" Header="Y Cylinder" Click="Menu_OnSettingsGridType" />
							<MenuItem Name="MenuSettingsGridFinite" Header="Finite" Click="Menu_OnSettingsGridType" />
						</MenuItem>
						<MenuItem Header="Grid Size">
							<MenuItem Name="MenuSettingsGrid40x40" Header="40 x 40" Click="Menu_OnSettingsGridSize" />
							<MenuItem Name="MenuSettingsGrid50x50" Header="50 x 50" Click="Menu_OnSettingsGridSize" />
							<MenuItem Name="MenuSettingsGrid60x60" Header="60 x 60" Click="Menu_OnSettingsGridSize" />
							<MenuItem Name="MenuSettingsGrid70x70" Header="70 x 70" Click="Menu_OnSettingsGridSize" />
							<Separator />
							<MenuItem Name="MenuSettingsGridCustom" Header="Custom..." Click="Menu_OnSettingsGridSizeCustom" />
							<Separator />
							<MenuItem Name="MenuSettingsGridShrink" Header="Shrink to Model" Click="Menu_OnSettingsGridSizeShrink" />
						</MenuItem>
						<MenuItem Name="MenuSettingsGridSettings" Header="Grid Settings..." Click="Menu_OnSettingsGridSettings" />
						<Separator />
						<MenuItem Name="MenuSettingsModelName" Header="Model Name..." Click="Menu_OnSettingsModelName" />
					</MenuItem>
					<MenuItem Header="Help">
						<MenuItem Name="MenuHelpHowTo" Header="How to Play..." Click="Menu_OnHelpHowTo" />
						<MenuItem Name="MenuHelpAbout" Header="About AvalonLife..." Click="Menu_OnHelpAbout" />
						<MenuItem Name="MenuHelpAboutLife" Header="About the Game of Life..." Click="Menu_OnHelpAboutLife" />
					</MenuItem>
				</Menu>
				<Button Margin="10,5,5,2" DockPanel.Dock="Right" Name="RunButton" VerticalAlignment="Center" HorizontalAlignment="Right" 
					Click="RunButton_OnClick" Height="20" Width="60" Content="Run" />
				<TextBlock Margin="0,5,5,2" VerticalAlignment="Center" Width="60" Foreground="Blue" Name="MenuGridSizeText" DockPanel.Dock="Right" />
				<TextBlock Margin="0,5,5,2" VerticalAlignment="Center" Width="50" Text="Grid Size:" DockPanel.Dock="Right" />
			</DockPanel>
			<Canvas Name="TopWrapIndicator" Height="5" Width="Auto" DockPanel.Dock="Top" HorizontalAlignment="Stretch" Background="Gray" />
			<StatusBar Background="{DynamicResource {x:Static SystemColors.MenuBarBrushKey}}" 
				Height="30" DockPanel.Dock="Bottom" Padding="4,0,4,0">
				<StatusBarItem>
					<TextBlock Width="Auto" Text="Time:" />
				</StatusBarItem>
				<StatusBarItem>
					<TextBlock Name="StatusGenCount" Width="30" Style="{StaticResource GenCountStyle}" />
				</StatusBarItem>
				<StatusBarItem>
					<TextBlock Width="Auto" Text="Census:" />
				</StatusBarItem>
				<StatusBarItem>
					<TextBlock Name="PopulationCount" Width="30" Style="{StaticResource PopulationCountStyle}" />
				</StatusBarItem>
				<StatusBarItem>
					<TextBlock Width="Auto" Text="Peak:" />
				</StatusBarItem>
				<StatusBarItem>
					<TextBlock Name="PeakPopulationCount" Width="30" Style="{StaticResource PeakPopulationCountStyle}" />
				</StatusBarItem>
				<StatusBarItem>
					<TextBlock Width="Auto" Text="Born:" />
				</StatusBarItem>
				<StatusBarItem>
					<TextBlock Name="CellBirthCount" Width="40" Style="{StaticResource BirthCountStyle}" />
				</StatusBarItem>
				<StatusBarItem>
					<TextBlock Width="Auto" Text="Died:" />
				</StatusBarItem>
				<StatusBarItem>
					<TextBlock Name="CellDeathCount" Width="40" Style="{StaticResource DeathCountStyle}" />
				</StatusBarItem>
				<StatusBarItem>
					<TextBlock Width="Auto" Padding="10,0,0,0">Speed:</TextBlock>
				</StatusBarItem>
				<StatusBarItem>
					<Slider Name="RunSpeedSlider" Style="{StaticResource RunSpeedSliderStyle}" />
				</StatusBarItem>
			</StatusBar>
			<Canvas Name="BottomWrapIndicator" Height="5" Width="Auto" DockPanel.Dock="Bottom" HorizontalAlignment="Stretch" Background="Gray" />
			<Canvas Name="LeftWrapIndicator" Height="Auto" Width="4" DockPanel.Dock="Left" VerticalAlignment="Stretch" Background="Gray" />
			<Canvas Name="RightWrapIndicator" Height="Auto" Width="4" DockPanel.Dock="Right" VerticalAlignment="Stretch" Background="Gray" />
			<Grid Name="LifeGrid" Background="White" ForceCursor="True" AllowDrop="True" >
				<Grid.Resources>
					<Style TargetType="{x:Type Rectangle}">
						<Setter Property="Opacity" Value="{Binding Path=IsAlive}" />
					</Style>
					<Style BasedOn="{StaticResource {x:Type Rectangle}}" TargetType="{x:Type Rectangle}" x:Key="RectStyle" >
						<Setter Property="Fill" Value="Red" />
					</Style>
				</Grid.Resources>
			</Grid>
		</DockPanel>
	</Grid>
</Window>

Leave a Reply

Your email address will not be published. Required fields are marked *