Browse Source

BuildOptions

pull/30/head
PeterForstmeier 14 years ago
parent
commit
d3ff0ad029
  1. 480
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/BuildOptions.xaml
  2. 62
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/BuildOptions.xaml.cs

480
src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/BuildOptions.xaml

@ -1,12 +1,12 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<optionpanels:ProjectOptionPanel <optionpanels:ProjectOptionPanel
x:Class="CSharpBinding.OptionPanels.BuildOptions" x:Class="CSharpBinding.OptionPanels.BuildOptions"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:gui="clr-namespace:ICSharpCode.SharpDevelop.Gui;assembly=ICSharpCode.SharpDevelop" xmlns:gui="clr-namespace:ICSharpCode.SharpDevelop.Gui;assembly=ICSharpCode.SharpDevelop"
xmlns:core="http://icsharpcode.net/sharpdevelop/core" xmlns:core="http://icsharpcode.net/sharpdevelop/core"
xmlns:optionpanels="clr-namespace:ICSharpCode.SharpDevelop.Gui.OptionPanels;assembly=ICSharpCode.SharpDevelop" xmlns:optionpanels="clr-namespace:ICSharpCode.SharpDevelop.Gui.OptionPanels;assembly=ICSharpCode.SharpDevelop"
xmlns:project="clr-namespace:ICSharpCode.SharpDevelop.Project;assembly=ICSharpCode.SharpDevelop" xmlns:project="clr-namespace:ICSharpCode.SharpDevelop.Project;assembly=ICSharpCode.SharpDevelop"
xmlns:local="clr-namespace:CSharpBinding.OptionPanels" xmlns:local="clr-namespace:CSharpBinding.OptionPanels"
xmlns:widgets="http://icsharpcode.net/sharpdevelop/widgets"> xmlns:widgets="http://icsharpcode.net/sharpdevelop/widgets">
@ -33,70 +33,55 @@
<RowDefinition Height="Auto"></RowDefinition> <RowDefinition Height="Auto"></RowDefinition>
</Grid.RowDefinitions> </Grid.RowDefinitions>
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="30"></ColumnDefinition> <ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition> <ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<Label
Grid.ColumnSpan="2" <Label Grid.ColumnSpan="2"
Content="{core:Localize Dialog.ProjectOptions.BuildOptions.ConditionalSymbols}"></Label> Content="{core:Localize Dialog.ProjectOptions.BuildOptions.ConditionalSymbols}"></Label>
<optionpanels:StorageLocationPicker <optionpanels:StorageLocationPicker
Grid.Row="1" Grid.Row="1"
Location="{Binding DefineConstants.Location}" Location="{Binding DefineConstants.Location}"
DockPanel.Dock="Left" /> DockPanel.Dock="Left" />
<TextBox
x:Name="conditionalSymbolsTextBox" <!--x:Name="conditionalSymbolsTextBox"-->
Margin="5,2,5,2" <TextBox Grid.Row="1" Grid.Column="1" Margin="5,2,5,2" HorizontalAlignment="Stretch"
Grid.Row="1" Text="{Binding DefineConstants.Value, UpdateSourceTrigger=PropertyChanged}"></TextBox>
Grid.Column="1"
HorizontalAlignment="Stretch" <optionpanels:StorageLocationPicker Grid.Row="2" DockPanel.Dock="Left" Location="{Binding Optimize.Location}"/>
Text="{Binding DefineConstants.Value, UpdateSourceTrigger=PropertyChanged}"></TextBox>
<optionpanels:StorageLocationPicker <!--x:Name="optimizeCodeCheckBox"-->
Grid.Row="2" <CheckBox Grid.Row="2" Grid.Column="1" VerticalAlignment="Center"
Location="{Binding Optimize.Location}"
DockPanel.Dock="Left" />
<CheckBox
x:Name="optimizeCodeCheckBox"
Grid.Row="2"
Grid.Column="1"
VerticalAlignment="Center"
IsChecked="{Binding Optimize.Value,Converter={StaticResource strTobool}}" IsChecked="{Binding Optimize.Value,Converter={StaticResource strTobool}}"
Content="{core:Localize Dialog.ProjectOptions.BuildOptions.OptimizeCode}"></CheckBox> Content="{core:Localize Dialog.ProjectOptions.BuildOptions.OptimizeCode}"></CheckBox>
<optionpanels:StorageLocationPicker
Grid.Row="3" <optionpanels:StorageLocationPicker Grid.Row="3" DockPanel.Dock="Left"
Location="{Binding AllowUnsafeBlocks.Location}" Location="{Binding AllowUnsafeBlocks.Location}"/>
DockPanel.Dock="Left" />
<CheckBox <!--x:Name="allowUnsafeCodeCheckBox"-->
x:Name="allowUnsafeCodeCheckBox" <CheckBox Grid.Row="3" Grid.Column="1" VerticalAlignment="Center"
Grid.Row="3"
Grid.Column="1"
VerticalAlignment="Center"
IsChecked="{Binding AllowUnsafeBlocks.Value,Converter={StaticResource strTobool}}" IsChecked="{Binding AllowUnsafeBlocks.Value,Converter={StaticResource strTobool}}"
Content="{core:Localize Dialog.ProjectOptions.BuildOptions.AllowUnsafeCode}"></CheckBox> Content="{core:Localize Dialog.ProjectOptions.BuildOptions.AllowUnsafeCode}"></CheckBox>
<optionpanels:StorageLocationPicker
Grid.Row="4" <optionpanels:StorageLocationPicker Grid.Row="4" DockPanel.Dock="Left" Location="{Binding CheckForOverflowUnderflow.Location}"/>
Location="{Binding CheckForOverflowUnderflow.Location}"
DockPanel.Dock="Left" /> <!--x:Name="checkForOverflowCheckBox"-->
<CheckBox <CheckBox Grid.Row="4" Grid.Column="1" VerticalAlignment="Center"
x:Name="checkForOverflowCheckBox"
Grid.Row="4"
Grid.Column="1"
VerticalAlignment="Center"
IsChecked="{Binding CheckForOverflowUnderflow.Value,Converter={StaticResource strTobool}}" IsChecked="{Binding CheckForOverflowUnderflow.Value,Converter={StaticResource strTobool}}"
Content="{core:Localize Dialog.ProjectOptions.BuildOptions.CheckForOverflow}"></CheckBox> Content="{core:Localize Dialog.ProjectOptions.BuildOptions.CheckForOverflow}"></CheckBox>
<optionpanels:StorageLocationPicker Grid.Row="5" DockPanel.Dock="Left" Location="{Binding NoStdLib.Location}"/> <optionpanels:StorageLocationPicker Grid.Row="5" DockPanel.Dock="Left" Location="{Binding NoStdLib.Location}"/>
<CheckBox
x:Name="noCorlibCheckBox" <!--x:Name="noCorlibCheckBox"-->
Grid.Row="5" <CheckBox Grid.Row="5" Grid.Column="1" VerticalAlignment="Center"
Grid.Column="1"
VerticalAlignment="Center"
IsChecked="{Binding NoStdLib.Value,Converter={StaticResource strTobool}}" IsChecked="{Binding NoStdLib.Value,Converter={StaticResource strTobool}}"
Content="{core:Localize Dialog.ProjectOptions.BuildOptions.NoCorlib}"></CheckBox> Content="{core:Localize Dialog.ProjectOptions.BuildOptions.NoCorlib}"></CheckBox>
</Grid> </Grid>
</GroupBox> </GroupBox>
<GroupBox <GroupBox
Header="{core:Localize Dialog.ProjectOptions.Build.Output}"> Header="{core:Localize Dialog.ProjectOptions.Build.Output}">
<Grid> <Grid >
<Grid.RowDefinitions> <Grid.RowDefinitions>
<RowDefinition Height="Auto"></RowDefinition> <RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition> <RowDefinition Height="Auto"></RowDefinition>
@ -106,73 +91,66 @@
<RowDefinition></RowDefinition> <RowDefinition></RowDefinition>
</Grid.RowDefinitions> </Grid.RowDefinitions>
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="25"></ColumnDefinition> <ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition> <ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="3*"></ColumnDefinition>
<ColumnDefinition Width="50"></ColumnDefinition> <ColumnDefinition Width="50"></ColumnDefinition>
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<Label Grid.ColumnSpan="2" Content="{core:Localize Dialog.ProjectOptions.Build.OutputPath}"></Label> <Label Grid.ColumnSpan="2" Content="{core:Localize Dialog.ProjectOptions.Build.OutputPath}"></Label>
<optionpanels:StorageLocationPicker
Grid.Row="1" <optionpanels:StorageLocationPicker Grid.Row="1" DockPanel.Dock="Left"
Location="{Binding OutputPath.Location}" Location="{Binding OutputPath.Location}"/>
DockPanel.Dock="Left" />
<TextBox x:Name="outputPathTextBox" Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2" <TextBox x:Name="outputPathTextBox" Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2"
Text="{Binding OutputPath.Value, UpdateSourceTrigger=PropertyChanged}"></TextBox> Text="{Binding OutputPath.Value, UpdateSourceTrigger=PropertyChanged}"></TextBox>
<Button
Grid.Row="1" <Button Grid.Row="1" Grid.Column="3" Margin="3,0,3,0"
Grid.Column="3" VerticalAlignment="Center"
Margin="3,0,3,0" Content="..."
Content="..." Command="{Binding ChangeOutputPath}"></Button>
Command="{Binding ChangeOutputPath}"></Button>
<optionpanels:StorageLocationPicker Grid.Row="2" DockPanel.Dock="Left" Location="{Binding DocumentationFile.Location}"/> <optionpanels:StorageLocationPicker Grid.Row="2" DockPanel.Dock="Left" Location="{Binding DocumentationFile.Location}"/>
<CheckBox x:Name="xmlDocumentationCheckBox" Grid.Row="2" Grid.Column="1"
VerticalAlignment="Center"
IsChecked="{Binding DocumentFileIsChecked}"
Content="{core:Localize Dialog.ProjectOptions.Build.XmlDocumentationFile}"></CheckBox>
<TextBox x:Name="xmlDocumentationTextBox"
Grid.ColumnSpan="2"
Grid.Row="2"
Grid.Column="2"
IsEnabled="{Binding DocumentFileIsChecked}"
Text="{Binding DocumentationFile.Value, UpdateSourceTrigger=PropertyChanged}"></TextBox>
<CheckBox x:Name="xmlDocumentationCheckBox" Grid.Row="2" Grid.Column="1"
VerticalAlignment="Center"
Margin="3,0,3,0"
IsChecked="{Binding DocumentFileIsChecked}"
Content="{core:Localize Dialog.ProjectOptions.Build.XmlDocumentationFile}"></CheckBox>
<TextBox x:Name="xmlDocumentationTextBox" Grid.Row="2" Grid.Column="2" Grid.ColumnSpan="2"
IsEnabled="{Binding DocumentFileIsChecked}"
Text="{Binding DocumentationFile.Value, UpdateSourceTrigger=PropertyChanged}"></TextBox>
<optionpanels:StorageLocationPicker Grid.Row="3" DockPanel.Dock="Left" Location="{Binding DebugType.Location}" /> <optionpanels:StorageLocationPicker Grid.Row="3" DockPanel.Dock="Left" Location="{Binding DebugType.Location}" />
<Label
Grid.Row="3" <Label Grid.Row="3" Grid.Column="1" Margin="3,0,3,0"
Grid.Column="1" HorizontalAlignment="Right"
HorizontalAlignment="Right" Content="{core:Localize Dialog.ProjectOptions.Build.DebugInfo}"></Label>
Content="{core:Localize Dialog.ProjectOptions.Build.DebugInfo}"></Label>
<ComboBox Grid.Row="3" Grid.Column="2" Width="150"
<ComboBox VerticalAlignment="Center"
Grid.Row="3" HorizontalAlignment="Left"
Grid.Column="2" SelectedValue="{Binding Path=DebugType.Value}"
Width="150" gui:EnumBinding.EnumType="{x:Type project:DebugSymbolType}"></ComboBox>
HorizontalAlignment="Left"
SelectedIndex="1" <Label Grid.Row="4" Grid.Column="1" Margin="3,0,3,0"
SelectedValue="{Binding Path=DebugType.Value}" HorizontalAlignment="Right"
gui:EnumBinding.EnumType="{x:Type project:DebugSymbolType}"></ComboBox> Content="{core:Localize Dialog.ProjectOptions.Build.TargetFramework}"></Label>
<Label
Grid.Row="4" <StackPanel Orientation="Horizontal" Grid.Row="4" Grid.Column="2" Grid.ColumnSpan="2">
Grid.Column="1"
HorizontalAlignment="Right" <ComboBox x:Name="targetFrameworkComboBox" Width="200" Margin="0,0,3,0"
Content="{core:Localize Dialog.ProjectOptions.Build.TargetFramework}"></Label> VerticalAlignment="Center"
<StackPanel Orientation="Horizontal" Grid.Row="4" Grid.Column="2"> IsEnabled="False"></ComboBox>
<ComboBox
x:Name="targetFrameworkComboBox" <Button Margin="3,0,3,0" VerticalAlignment="Center"
Width="200"
Margin="0,0,3,0"
IsEnabled="False"></ComboBox>
<Button
Width="100"
Content="Change" Content="Change"
Command="{Binding UpdateProjectCommand}" Command="{Binding UpdateProjectCommand}"
Style="{x:Static core:GlobalStyles.ButtonStyle}" Style="{x:Static core:GlobalStyles.ButtonStyle}"></Button>
Margin="3,0,3,0"></Button>
</StackPanel> </StackPanel>
<GroupBox Grid.Row="5" Grid.ColumnSpan="3" Margin="5,10,0,0"
<GroupBox Grid.Row="5" Grid.ColumnSpan="4" Margin="5,10,0,0"
Header="{core:Localize Dialog.ProjectOptions.Build.Advanced}"> Header="{core:Localize Dialog.ProjectOptions.Build.Advanced}">
<Grid> <Grid>
<Grid.RowDefinitions> <Grid.RowDefinitions>
@ -188,97 +166,69 @@
<RowDefinition Height="Auto"></RowDefinition> <RowDefinition Height="Auto"></RowDefinition>
</Grid.RowDefinitions> </Grid.RowDefinitions>
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="25"></ColumnDefinition> <ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition> <ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition MinWidth="120"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition> <ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition> <ColumnDefinition Width="50"></ColumnDefinition>
<ColumnDefinition
Width="50"></ColumnDefinition>
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<optionpanels:StorageLocationPicker Grid.Row="1" VerticalAlignment="Center"> <optionpanels:StorageLocationPicker Grid.Row="1" VerticalAlignment="Center">
<optionpanels:StorageLocationPicker.Location> <optionpanels:StorageLocationPicker.Location>
<MultiBinding <MultiBinding Converter="{StaticResource converter}">
Converter="{StaticResource converter}"> <Binding Path="RegisterForComInterop.Location" />
<Binding <Binding Path="GenerateSerializationAssemblies.Location" />
Path="RegisterForComInterop.Location" /> <Binding Path="PlatformTarget.Location" />
<Binding <Binding Path="FileAlignment.Location" />
Path="GenerateSerializationAssemblies.Location" /> <Binding Path="BaseAddress.Location" />
<Binding
Path="PlatformTarget.Location" />
<Binding
Path="FileAlignment.Location" />
<Binding
Path="BaseAddress.Location" />
</MultiBinding> </MultiBinding>
</optionpanels:StorageLocationPicker.Location> </optionpanels:StorageLocationPicker.Location>
</optionpanels:StorageLocationPicker> </optionpanels:StorageLocationPicker>
<CheckBox <!--x:Name="registerCOMInteropCheckBox"-->
x:Name="registerCOMInteropCheckBox" <CheckBox Grid.Column="2"
Grid.Column="2" IsChecked="{Binding RegisterForComInterop.Value,Converter={StaticResource strTobool}}"
IsChecked="{Binding RegisterForComInterop.Value,Converter={StaticResource strTobool}}" Content="{core:Localize Dialog.ProjectOptions.Build.RegisterForCOM}"></CheckBox>
Content="{core:Localize Dialog.ProjectOptions.Build.RegisterForCOM}"></CheckBox>
<Label <Label Grid.Row="1" Grid.Column="1"
Grid.Row="1" HorizontalAlignment="Right"
Grid.Column="1" Content="{core:Localize Dialog.ProjectOptions.Build.GenerateSerializationAssembly}"></Label>
HorizontalAlignment="Right"
Content="{core:Localize Dialog.ProjectOptions.Build.GenerateSerializationAssembly}"></Label>
<ComboBox <!--x:Name="generateSerializationAssemblyComboBox"-->
x:Name="generateSerializationAssemblyComboBox" <ComboBox Grid.Row="1" Grid.Column="2"
Grid.Row="1" VerticalAlignment="Center"
Grid.Column="2" ItemsSource="{Binding Path=DataContext.SerializationInfo}"
ItemsSource="{Binding Path=DataContext.SerializationInfo}" SelectedValue="{Binding Path=GenerateSerializationAssemblies.Value}"
SelectedValue="{Binding Path=GenerateSerializationAssemblies.Value}" DisplayMemberPath="DisplayValue"
DisplayMemberPath="DisplayValue" SelectedValuePath="Key"></ComboBox>
SelectedValuePath="Key"
SelectedIndex="2"></ComboBox>
<Label <Label Grid.Row="2" Grid.Column="1" HorizontalAlignment="Right"
Grid.Row="2" Content="{core:Localize Dialog.ProjectOptions.Build.TargetCPU}"></Label>
Grid.Column="1"
HorizontalAlignment="Right"
Content="{core:Localize Dialog.ProjectOptions.Build.TargetCPU}"></Label>
<!--x:Name="targetCpuComboBox"-->
<ComboBox Grid.Row="2" Grid.Column="2" VerticalAlignment="Center"
ItemsSource="{Binding Path=DataContext.TargetCPU}"
SelectedValue="{Binding Path=PlatformTarget.Value}"
DisplayMemberPath="DisplayValue"
SelectedValuePath="Key"></ComboBox>
<ComboBox <Label Grid.Row="3" Grid.Column="1" HorizontalAlignment="Right"
x:Name="targetCpuComboBox" Content="{core:Localize Dialog.ProjectOptions.Build.FileAlignment}"></Label>
Grid.Row="2"
Grid.Column="2"
ItemsSource="{Binding Path=DataContext.TargetCPU}"
SelectedValue="{Binding Path=PlatformTarget.Value}"
DisplayMemberPath="DisplayValue"
SelectedValuePath="Key"
SelectedIndex="1"></ComboBox>
<Label
Grid.Row="3"
Grid.Column="1"
HorizontalAlignment="Right"
Content="{core:Localize Dialog.ProjectOptions.Build.FileAlignment}"></Label>
<ComboBox <!--x:Name="fileAlignmentComboBox"-->
x:Name="fileAlignmentComboBox" <ComboBox Grid.Row="3" Grid.Column="2" VerticalAlignment="Center"
Grid.Row="3" ItemsSource="{Binding Path=DataContext.FileAlign}"
Grid.Column="2" SelectedValue="{Binding Path=FileAlignment.Value}"
ItemsSource="{Binding Path=DataContext.FileAlign}" DisplayMemberPath="DisplayValue"
SelectedValue="{Binding Path=FileAlignment.Value}" SelectedValuePath="Key"></ComboBox>
DisplayMemberPath="DisplayValue"
SelectedValuePath="Key" <Label Grid.Row="4" Grid.Column="1" HorizontalAlignment="Right"
SelectedIndex="3"></ComboBox> Content="{core:Localize Dialog.ProjectOptions.Build.DLLBaseAddress}"></Label>
<Label
Grid.Row="4"
Grid.Column="1"
HorizontalAlignment="Right"
Content="{core:Localize Dialog.ProjectOptions.Build.DLLBaseAddress}"></Label>
<!-- Hex binding --> <!-- Hex binding -->
<TextBox <!--x:Name="dllBaseAddressTextBox"-->
x:Name="dllBaseAddressTextBox" <TextBox Grid.Row="4" Grid.Column="2">
Grid.Row="4"
Grid.Column="2">
<TextBox.Text> <TextBox.Text>
<Binding Path="BaseAddress.Value" UpdateSourceTrigger="PropertyChanged"> <Binding Path="BaseAddress.Value" UpdateSourceTrigger="PropertyChanged">
<Binding.ValidationRules> <Binding.ValidationRules>
@ -289,131 +239,105 @@
</TextBox> </TextBox>
<!-- location multibinding --> <!-- location multibinding -->
<Label <Label Grid.Row="6" Grid.ColumnSpan="2"
Grid.Row="6" Content="{core:Localize Dialog.ProjectOptions.Build.BaseIntermediateOutputPath}"></Label>
Grid.ColumnSpan="2"
Content="{core:Localize Dialog.ProjectOptions.Build.BaseIntermediateOutputPath}"></Label>
<optionpanels:StorageLocationPicker <optionpanels:StorageLocationPicker Grid.Row="7"
Grid.Row="7"
Location="{Binding BaseIntermediateOutputPath.Location}" Location="{Binding BaseIntermediateOutputPath.Location}"
DockPanel.Dock="Left" /> DockPanel.Dock="Left" />
<TextBox
x:Name="baseIntermediateOutputPathTextBox" <TextBox x:Name="baseIntermediateOutputPathTextBox" Grid.Row="7" Grid.Column="1" Grid.ColumnSpan="3"
Grid.Row="7" Text="{Binding BaseIntermediateOutputPath.Value, UpdateSourceTrigger=PropertyChanged}"></TextBox>
Grid.Column="1"
Grid.ColumnSpan="2" <Button Grid.Row="7" Grid.Column="4" Margin="3,0,3,0"
Text="{Binding BaseIntermediateOutputPath.Value, UpdateSourceTrigger=PropertyChanged}"></TextBox> Content="..."
<Button VerticalAlignment="Center"
Grid.Row="7" Command="{Binding BaseIntermediateOutputPathCommand}"></Button>
Grid.Column="4"
Margin="3,0,3,0" <Label Grid.Row="8" Grid.ColumnSpan="2" Content="{core:Localize Dialog.ProjectOptions.Build.IntermediateOutputPath}"></Label>
Content="..."
Command="{Binding BaseIntermediateOutputPathCommand}"></Button> <optionpanels:StorageLocationPicker Grid.Row="9" DockPanel.Dock="Left"
<Label Location="{Binding IntermediateOutputPath.Location}"/>
Grid.Row="8"
Grid.ColumnSpan="2" <TextBox x:Name="intermediateOutputPathTextBox" Grid.Row="9" Grid.Column="1" Grid.ColumnSpan="3"
Content="{core:Localize Dialog.ProjectOptions.Build.IntermediateOutputPath}"></Label> Text="{Binding IntermediateOutputPath.Value, UpdateSourceTrigger=PropertyChanged}"></TextBox>
<optionpanels:StorageLocationPicker
Grid.Row="9" <Button Grid.Row="9" Grid.Column="4" Margin="3,0,3,0"
Location="{Binding IntermediateOutputPath.Location}" Content="..."
DockPanel.Dock="Left" /> VerticalAlignment="Center"
<TextBox Command="{Binding IntermediateOutputPathCommand}"></Button>
x:Name="intermediateOutputPathTextBox"
Grid.Row="9"
Grid.Column="1"
Grid.ColumnSpan="2"
Text="{Binding IntermediateOutputPath.Value, UpdateSourceTrigger=PropertyChanged}"></TextBox>
<Button
Grid.Row="9"
Grid.Column="4"
Margin="3,0,3,0"
Content="..."
Command="{Binding IntermediateOutputPathCommand}"></Button>
</Grid> </Grid>
</GroupBox> </GroupBox>
</Grid> </Grid>
</GroupBox> </GroupBox>
<GroupBox
Margin="0,8,0,0" <GroupBox Margin="0,8,0,0"
Header="{core:Localize Dialog.ProjectOptions.Build.ErrorsAndWarnings}"> Header="{core:Localize Dialog.ProjectOptions.Build.ErrorsAndWarnings}">
<Grid> <Grid>
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="25"></ColumnDefinition> <ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition> <ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="3*"></ColumnDefinition>
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<Grid.RowDefinitions> <Grid.RowDefinitions>
<RowDefinition Height="Auto"></RowDefinition> <RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition> <RowDefinition Height="Auto"></RowDefinition>
</Grid.RowDefinitions> </Grid.RowDefinitions>
<Label
Grid.Column="1" <Label Grid.Column="1" Content="{core:Localize Dialog.ProjectOptions.Build.WarningLevel}"></Label>
Content="{core:Localize Dialog.ProjectOptions.Build.WarningLevel}"></Label>
<!--x:Name="warningLevelComboBox"-->
<ComboBox <ComboBox Grid.Column="2" Width="40" VerticalAlignment="Center" HorizontalAlignment="Left"
x:Name="warningLevelComboBox" ItemsSource="{Binding Path=DataContext.WarnLevel}"
Width="40" SelectedValue="{Binding Path=DataContext.SelectedWarningLevel}"
Grid.Column="2" DisplayMemberPath="DisplayValue"
HorizontalAlignment="Left" SelectedValuePath="Key"
ItemsSource="{Binding Path=DataContext.WarnLevel}" SelectedIndex="4"></ComboBox>
SelectedValue="{Binding Path=DataContext.SelectedWarningLevel}"
DisplayMemberPath="DisplayValue" <optionpanels:StorageLocationPicker Grid.Row="1" Location="{Binding NoWarn.Location}" DockPanel.Dock="Left" />
SelectedValuePath="Key"
SelectedIndex="4"></ComboBox> <Label Grid.Row="1" Grid.Column="1"
<optionpanels:StorageLocationPicker Content="{core:Localize Dialog.ProjectOptions.Build.SuppressWarnings}"></Label>
Grid.Row="1"
Location="{Binding NoWarn.Location}" <!--x:Name="suppressWarningsTextBox"-->
DockPanel.Dock="Left" /> <TextBox Grid.Row="1" Grid.Column="2"
<Label Text="{Binding NoWarn.Value, UpdateSourceTrigger=PropertyChanged}"></TextBox>
Grid.Row="1"
Grid.Column="1"
Content="{core:Localize Dialog.ProjectOptions.Build.SuppressWarnings}"></Label>
<TextBox
x:Name="suppressWarningsTextBox"
Grid.Row="1"
Grid.Column="2"
Text="{Binding NoWarn.Value, UpdateSourceTrigger=PropertyChanged}"></TextBox>
</Grid> </Grid>
</GroupBox> </GroupBox>
<GroupBox
Margin="0,8,0,0" <GroupBox Margin="0,8,0,0"
Header="{core:Localize Dialog.ProjectOptions.Build.TreatWarningsAsErrors}"> Header="{core:Localize Dialog.ProjectOptions.Build.TreatWarningsAsErrors}">
<Grid> <Grid>
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="25"></ColumnDefinition> <ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition> <ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition Width="3*"></ColumnDefinition> <ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<Grid.RowDefinitions> <Grid.RowDefinitions>
<RowDefinition Height="Auto"></RowDefinition> <RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition> <RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition> <RowDefinition Height="Auto"></RowDefinition>
</Grid.RowDefinitions> </Grid.RowDefinitions>
<optionpanels:StorageLocationPicker Grid.Row="1" <optionpanels:StorageLocationPicker Grid.Row="1" Location="{Binding TreatWarningsAsErrors.Location}">
Location="{Binding TreatWarningsAsErrors.Location}">
</optionpanels:StorageLocationPicker> </optionpanels:StorageLocationPicker>
<RadioButton
x:Name="noneRadioButton" <RadioButton x:Name="noneRadioButton" Grid.Column="1" VerticalAlignment="Center" Margin="3,0,3,0"
Grid.Column="1" Content="{core:Localize Dialog.ProjectOptions.Build.TreatWarningsAsErrors.None}"></RadioButton>
Content="{core:Localize Dialog.ProjectOptions.Build.TreatWarningsAsErrors.None}"></RadioButton>
<RadioButton <RadioButton x:Name="specificWarningsRadioButton" Grid.Row="1" Grid.Column="1" VerticalAlignment="Center" Margin="3,0,3,0"
x:Name="specificWarningsRadioButton" Content="{core:Localize Dialog.ProjectOptions.Build.TreatWarningsAsErrors.Specific}"></RadioButton>
Grid.Row="1"
Grid.Column="1" <TextBox x:Name="specificWarningsTextBox" Grid.Row="1" Grid.Column="2" VerticalAlignment="Center"
Content="{core:Localize Dialog.ProjectOptions.Build.TreatWarningsAsErrors.Specific}"></RadioButton> Margin="3,0,3,0"
<TextBox IsEnabled="{Binding ElementName=specificWarningsRadioButton, Path=IsChecked}"
x:Name="specificWarningsTextBox" Text="{Binding WarningsAsErrors.Value, UpdateSourceTrigger=PropertyChanged}"></TextBox>
Grid.Row="1"
Grid.Column="2" <RadioButton x:Name="allRadioButton" Grid.Row="2" Grid.Column="1"
IsEnabled="{Binding ElementName=specificWarningsRadioButton, Path=IsChecked}" Margin="3,0,3,0"
Text="{Binding WarningsAsErrors.Value, UpdateSourceTrigger=PropertyChanged}"></TextBox> VerticalAlignment="Center"
<RadioButton Content="{core:Localize Dialog.ProjectOptions.Build.TreatWarningsAsErrors.All}"></RadioButton>
x:Name="allRadioButton"
Grid.Row="2"
Grid.Column="1"
Content="{core:Localize Dialog.ProjectOptions.Build.TreatWarningsAsErrors.All}"></RadioButton>
</Grid> </Grid>
</GroupBox> </GroupBox>
</StackPanel> </StackPanel>

62
src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/BuildOptions.xaml.cs

@ -7,18 +7,10 @@
*/ */
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel;
using System.Globalization;
using System.IO; using System.IO;
using System.Linq;
using System.Windows.Controls;
using System.Windows.Input;
using Gui.Dialogs.OptionPanels.ProjectOptions; using Gui.Dialogs.OptionPanels.ProjectOptions;
using ICSharpCode.Core; using ICSharpCode.Core;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Gui.OptionPanels; using ICSharpCode.SharpDevelop.Gui.OptionPanels;
using ICSharpCode.SharpDevelop.Project; using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.SharpDevelop.Project.Converter; using ICSharpCode.SharpDevelop.Project.Converter;
@ -93,33 +85,30 @@ namespace CSharpBinding.OptionPanels
this.BaseIntermediateOutputPathCommand = new RelayCommand(BaseIntermediateOutputPathExecute); this.BaseIntermediateOutputPathCommand = new RelayCommand(BaseIntermediateOutputPathExecute);
this.IntermediateOutputPathCommand = new RelayCommand(IntermediateOutputPathExecute); this.IntermediateOutputPathCommand = new RelayCommand(IntermediateOutputPathExecute);
SetTreatWarningAsErrorRadioButtons(); SetTreatWarningAsErrorRadioButtons();
this.DefineConstants.Location = PropertyStorageLocations.ConfigurationSpecific;
this.Optimize.Location = PropertyStorageLocations.ConfigurationSpecific;
this.AllowUnsafeBlocks.Location = PropertyStorageLocations.ConfigurationSpecific;
this.CheckForOverflowUnderflow.Location = PropertyStorageLocations.ConfigurationSpecific;
} }
#region properties #region properties
public ProjectProperty<string> DefineConstants { public ProjectProperty<string> DefineConstants {
get {return GetProperty("DefineConstants", "", TextBoxEditMode.EditRawProperty); } get {return GetProperty("DefineConstants", "",
TextBoxEditMode.EditRawProperty,PropertyStorageLocations.ConfigurationSpecific); }
} }
public ProjectProperty<string> Optimize { public ProjectProperty<string> Optimize {
get {return GetProperty("Optimize", "", TextBoxEditMode.EditRawProperty); } get {return GetProperty("Optimize", "",
TextBoxEditMode.EditRawProperty,PropertyStorageLocations.ConfigurationSpecific); }
} }
public ProjectProperty<string> AllowUnsafeBlocks { public ProjectProperty<string> AllowUnsafeBlocks {
get {return GetProperty("AllowUnsafeBlocks", "", TextBoxEditMode.EditRawProperty); } get {return GetProperty("AllowUnsafeBlocks", "", TextBoxEditMode.EditRawProperty); }
} }
public ProjectProperty<string> CheckForOverflowUnderflow { public ProjectProperty<string> CheckForOverflowUnderflow {
get {return GetProperty("CheckForOverflowUnderflow", "", TextBoxEditMode.EditRawProperty); } get {return GetProperty("CheckForOverflowUnderflow", "",
TextBoxEditMode.EditRawProperty,PropertyStorageLocations.ConfigurationSpecific); }
} }
public ProjectProperty<string> NoStdLib { public ProjectProperty<string> NoStdLib {
get {return GetProperty("NoStdLib", "", TextBoxEditMode.EditRawProperty); } get {return GetProperty("NoStdLib", "", TextBoxEditMode.EditRawProperty); }
} }
@ -140,31 +129,37 @@ namespace CSharpBinding.OptionPanels
// used in multibinding // used in multibinding
public ProjectProperty<string> RegisterForComInterop { public ProjectProperty<string> RegisterForComInterop {
get {return GetProperty("RegisterForComInterop","",TextBoxEditMode.EditRawProperty ); } get {return GetProperty("RegisterForComInterop","",
TextBoxEditMode.EditRawProperty, PropertyStorageLocations.PlatformSpecific ); }
} }
public ProjectProperty<string> GenerateSerializationAssemblies { public ProjectProperty<string> GenerateSerializationAssemblies {
get {return GetProperty("GenerateSerializationAssemblies","",TextBoxEditMode.EditRawProperty ); } get {return GetProperty("GenerateSerializationAssemblies","Auto",
TextBoxEditMode.EditRawProperty,PropertyStorageLocations.PlatformSpecific ); }
} }
public ProjectProperty<string> PlatformTarget { public ProjectProperty<string> PlatformTarget {
get {return GetProperty("PlatformTarget","",TextBoxEditMode.EditRawProperty ); } get {return GetProperty("PlatformTarget","AnyCPU",
TextBoxEditMode.EditRawProperty,PropertyStorageLocations.PlatformSpecific ); }
} }
public ProjectProperty<string> FileAlignment { public ProjectProperty<string> FileAlignment {
get {return GetProperty("FileAlignment","",TextBoxEditMode.EditRawProperty ); } get {return GetProperty("FileAlignment","4096",
TextBoxEditMode.EditRawProperty,PropertyStorageLocations.PlatformSpecific ); }
} }
public ProjectProperty<string> BaseAddress { public ProjectProperty<string> BaseAddress {
get {return GetProperty("BaseAddress","0x400000",TextBoxEditMode.EditRawProperty ); } get {return GetProperty("BaseAddress","0x400000",
TextBoxEditMode.EditRawProperty,PropertyStorageLocations.PlatformSpecific ); }
} }
public ProjectProperty<string> BaseIntermediateOutputPath { public ProjectProperty<string> BaseIntermediateOutputPath {
get {return GetProperty("BaseIntermediateOutputPath",@"obj\",TextBoxEditMode.EditRawProperty ); } get {return GetProperty("BaseIntermediateOutputPath",@"obj\",
TextBoxEditMode.EditRawProperty,PropertyStorageLocations.ConfigurationSpecific ); }
} }
@ -208,6 +203,7 @@ namespace CSharpBinding.OptionPanels
protected override bool Save(MSBuildBasedProject project, string configuration, string platform) protected override bool Save(MSBuildBasedProject project, string configuration, string platform)
{ {
SaveTreatWarningAsErrorRadioButtons(); SaveTreatWarningAsErrorRadioButtons();
return base.Save(project, configuration, platform); return base.Save(project, configuration, platform);
} }
#endregion #endregion
@ -265,6 +261,7 @@ namespace CSharpBinding.OptionPanels
#endregion #endregion
#region ChangeOutputPathCommand #region ChangeOutputPathCommand
public System.Windows.Input.ICommand ChangeOutputPath public System.Windows.Input.ICommand ChangeOutputPath
@ -359,6 +356,7 @@ namespace CSharpBinding.OptionPanels
base.BaseDirectory,base.BaseDirectory,this.intermediateOutputPathTextBox.Text); base.BaseDirectory,base.BaseDirectory,this.intermediateOutputPathTextBox.Text);
base.RaisePropertyChanged(()=> IntermediateOutputPath); base.RaisePropertyChanged(()=> IntermediateOutputPath);
} }
#endregion #endregion
#region WarningLevel #region WarningLevel
@ -386,7 +384,9 @@ namespace CSharpBinding.OptionPanels
private void SetTreatWarningAsErrorRadioButtons() private void SetTreatWarningAsErrorRadioButtons()
{ {
if (bool.Parse(this.TreatWarningsAsErrors.Value)) { bool result;
bool.TryParse(this.TreatWarningsAsErrors.Value,out result);
if (result) {
this.allRadioButton.IsChecked = true; this.allRadioButton.IsChecked = true;
} else { } else {
if (WarningsAsErrors.Value.Length > 0) { if (WarningsAsErrors.Value.Length > 0) {
@ -395,20 +395,34 @@ namespace CSharpBinding.OptionPanels
this.noneRadioButton.IsChecked = true; this.noneRadioButton.IsChecked = true;
} }
} }
this.noneRadioButton.Checked += ErrorButton_Checked;
this.allRadioButton.Checked += ErrorButton_Checked;
this.specificWarningsRadioButton.Checked += ErrorButton_Checked;
} }
private void SaveTreatWarningAsErrorRadioButtons() private void SaveTreatWarningAsErrorRadioButtons()
{ {
if ((bool)this.noneRadioButton.IsChecked){ if ((bool)this.noneRadioButton.IsChecked){
this.specificWarningsTextBox.Text = string.Empty; this.specificWarningsTextBox.Text = string.Empty;
} }
if ((bool)this.allRadioButton.IsChecked) { if ((bool)this.allRadioButton.IsChecked) {
this.TreatWarningsAsErrors.Value = "true"; this.TreatWarningsAsErrors.Value = "true";
} else { } else {
this.TreatWarningsAsErrors.Value = "false"; this.TreatWarningsAsErrors.Value = "false";
} }
this.noneRadioButton.Checked -= ErrorButton_Checked;
this.allRadioButton.Checked -= ErrorButton_Checked;
this.specificWarningsRadioButton.Checked -= ErrorButton_Checked;
}
void ErrorButton_Checked(object sender, System.Windows.RoutedEventArgs e)
{
IsDirty = true;
} }

Loading…
Cancel
Save