Browse Source

BuildOptions - BuildAdvanced UserControl

pull/30/head
PeterForstmeier 13 years ago
parent
commit
072d0ed8a0
  1. 157
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/BuildOptions.xaml
  2. 204
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/BuildOptions.xaml.cs
  3. 10
      src/AddIns/BackendBindings/VBNetBinding/Project/Src/OptionPanels/BuildOptionsXaml.xaml.cs
  4. 5
      src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
  5. 121
      src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/BuildAdvanced.xaml
  6. 237
      src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/BuildAdvanced.xaml.cs
  7. 21
      src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/ErrorsAndWarnings.xaml.cs
  8. 4
      src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/ProjectOptionPanel.cs
  9. 40
      src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/TreatErrorsAndWarnings.xaml.cs

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

@ -10,10 +10,6 @@ @@ -10,10 +10,6 @@
xmlns:local="clr-namespace:CSharpBinding.OptionPanels"
xmlns:widgets="http://icsharpcode.net/sharpdevelop/widgets">
<optionpanels:ProjectOptionPanel.Resources>
<optionpanels:StorageLocationConverter
x:Key="converter" />
</optionpanels:ProjectOptionPanel.Resources>
<ScrollViewer
VerticalScrollBarVisibility="Auto">
@ -149,158 +145,17 @@ @@ -149,158 +145,17 @@
Style="{x:Static core:GlobalStyles.ButtonStyle}"></Button>
</StackPanel>
<GroupBox Grid.Row="5" Grid.ColumnSpan="4" Margin="5,10,0,0"
Header="{core:Localize Dialog.ProjectOptions.Build.Advanced}">
<Grid>
<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>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition MinWidth="120"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition Width="50"></ColumnDefinition>
</Grid.ColumnDefinitions>
<optionpanels:StorageLocationPicker Grid.Row="1" VerticalAlignment="Center">
<optionpanels:StorageLocationPicker.Location>
<MultiBinding Converter="{StaticResource converter}">
<Binding Path="RegisterForComInterop.Location" />
<Binding Path="GenerateSerializationAssemblies.Location" />
<Binding Path="PlatformTarget.Location" />
<Binding Path="FileAlignment.Location" />
<Binding Path="BaseAddress.Location" />
</MultiBinding>
</optionpanels:StorageLocationPicker.Location>
</optionpanels:StorageLocationPicker>
<!--x:Name="registerCOMInteropCheckBox"-->
<CheckBox Grid.Column="2"
IsChecked="{Binding RegisterForComInterop.Value}"
Content="{core:Localize Dialog.ProjectOptions.Build.RegisterForCOM}"></CheckBox>
<Label Grid.Row="1" Grid.Column="1"
HorizontalAlignment="Right"
Content="{core:Localize Dialog.ProjectOptions.Build.GenerateSerializationAssembly}"></Label>
<!--x:Name="generateSerializationAssemblyComboBox"-->
<ComboBox Grid.Row="1" Grid.Column="2"
VerticalAlignment="Center"
ItemsSource="{Binding Path=DataContext.SerializationInfo}"
SelectedValue="{Binding Path=GenerateSerializationAssemblies.Value}"
DisplayMemberPath="DisplayValue"
SelectedValuePath="Key"></ComboBox>
<Label Grid.Row="2" 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>
<Label Grid.Row="3" Grid.Column="1" HorizontalAlignment="Right"
Content="{core:Localize Dialog.ProjectOptions.Build.FileAlignment}"></Label>
<!--x:Name="fileAlignmentComboBox"-->
<ComboBox Grid.Row="3" Grid.Column="2" VerticalAlignment="Center"
ItemsSource="{Binding Path=DataContext.FileAlign}"
SelectedValue="{Binding Path=FileAlignment.Value}"
DisplayMemberPath="DisplayValue"
SelectedValuePath="Key"></ComboBox>
<Label Grid.Row="4" Grid.Column="1" HorizontalAlignment="Right"
Content="{core:Localize Dialog.ProjectOptions.Build.DLLBaseAddress}"></Label>
<!--x:Name="dllBaseAddressTextBox"-->
<TextBox Grid.Row="4" Grid.Column="2"
Text="{Binding DllBaseAdress, UpdateSourceTrigger=PropertyChanged}">
</TextBox>
<!-- location multibinding -->
<Label Grid.Row="6" Grid.ColumnSpan="2"
Content="{core:Localize Dialog.ProjectOptions.Build.BaseIntermediateOutputPath}"></Label>
<optionpanels:StorageLocationPicker Grid.Row="7"
Location="{Binding BaseIntermediateOutputPath.Location}"
DockPanel.Dock="Left" />
<TextBox x:Name="baseIntermediateOutputPathTextBox" Grid.Row="7" Grid.Column="1" Grid.ColumnSpan="3"
Text="{Binding BaseIntermediateOutputPath.Value, UpdateSourceTrigger=PropertyChanged}"></TextBox>
<Button Grid.Row="7" Grid.Column="4" Margin="3,0,3,0"
Content="..."
VerticalAlignment="Center"
Command="{Binding BaseIntermediateOutputPathCommand}"></Button>
<Label Grid.Row="8" Grid.ColumnSpan="2" Content="{core:Localize Dialog.ProjectOptions.Build.IntermediateOutputPath}"></Label>
<optionpanels:StorageLocationPicker Grid.Row="9" DockPanel.Dock="Left"
Location="{Binding IntermediateOutputPath.Location}"/>
<TextBox x:Name="intermediateOutputPathTextBox" Grid.Row="9" Grid.Column="1" Grid.ColumnSpan="3"
Text="{Binding IntermediateOutputPath.Value, UpdateSourceTrigger=PropertyChanged}"></TextBox>
<Button Grid.Row="9" Grid.Column="4" Margin="3,0,3,0"
Content="..."
VerticalAlignment="Center"
Command="{Binding IntermediateOutputPathCommand}"></Button>
</Grid>
<GroupBox Grid.Row="5" Grid.ColumnSpan="4" Margin="5,10,0,0" Header="{core:Localize Dialog.ProjectOptions.Build.Advanced}">
<optionpanels:BuildAdvanced x:Name="buildAdvanced">
</optionpanels:BuildAdvanced>
</GroupBox>
</Grid>
</GroupBox>
<GroupBox Margin="0,8,0,0"
Header="{core:Localize Dialog.ProjectOptions.Build.ErrorsAndWarnings}">
<optionpanels:ErrorsAndWarnings x:Name="errorsAndWarnings">
<GroupBox Margin="0,8,0,0" Header="{core:Localize Dialog.ProjectOptions.Build.ErrorsAndWarnings}">
<optionpanels:ErrorsAndWarnings x:Name="errorsAndWarnings">
</optionpanels:ErrorsAndWarnings>
<!--<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
</Grid.RowDefinitions>
<Label Grid.Column="1" Content="{core:Localize Dialog.ProjectOptions.Build.WarningLevel}"></Label>
<ComboBox Grid.Column="2" Width="40" VerticalAlignment="Center" HorizontalAlignment="Left"
ItemsSource="{Binding Path=DataContext.WarnLevel}"
SelectedValue="{Binding Path=WarningLevel.Value}"
DisplayMemberPath="DisplayValue"
SelectedValuePath="Key"
SelectedIndex="4"></ComboBox>
<optionpanels:StorageLocationPicker Grid.Row="1" Location="{Binding NoWarn.Location}" DockPanel.Dock="Left" />
<Label Grid.Row="1" Grid.Column="1"
Content="{core:Localize Dialog.ProjectOptions.Build.SuppressWarnings}"></Label>
<TextBox Grid.Row="1" Grid.Column="2"
Text="{Binding NoWarn.Value, UpdateSourceTrigger=PropertyChanged}"></TextBox>
</Grid>-->
</GroupBox>
<GroupBox Margin="0,8,0,0" Header="{core:Localize Dialog.ProjectOptions.Build.ErrorsAndWarnings}">

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

@ -26,50 +26,13 @@ namespace CSharpBinding.OptionPanels @@ -26,50 +26,13 @@ namespace CSharpBinding.OptionPanels
public partial class BuildOptions : ProjectOptionPanel
{
private List<KeyItemPair> serializationInfo;
private List<KeyItemPair> targetCPU;
private List<KeyItemPair> fileAlignment;
private List<KeyItemPair> warnLevel;
private System.Windows.Input.ICommand updateProjectCommand;
private System.Windows.Input.ICommand changeOutputPath;
private System.Windows.Input.ICommand baseIntermediateOutputPathCommand;
private System.Windows.Input.ICommand intermediateOutputPathCommand;
public BuildOptions()
{
InitializeComponent();
this.serializationInfo = new List<KeyItemPair>();
this.serializationInfo.Add (new KeyItemPair("Off",StringParser.Parse("${res:Dialog.ProjectOptions.Build.Off}")));
this.serializationInfo.Add (new KeyItemPair("On",StringParser.Parse("${res:Dialog.ProjectOptions.Build.On}")));
this.serializationInfo.Add (new KeyItemPair("Auto",StringParser.Parse( "${res:Dialog.ProjectOptions.Build.Auto}")));
this.SerializationInfo = this.serializationInfo;
this.targetCPU = new List<KeyItemPair>();
this.targetCPU.Add(new KeyItemPair( "AnyCPU",StringParser.Parse("${res:Dialog.ProjectOptions.Build.TargetCPU.Any}")));
this.targetCPU.Add(new KeyItemPair( "x86",StringParser.Parse("${res:Dialog.ProjectOptions.Build.TargetCPU.x86}")));
this.targetCPU.Add(new KeyItemPair( "x64",StringParser.Parse("${res:Dialog.ProjectOptions.Build.TargetCPU.x64}")));
this.targetCPU.Add(new KeyItemPair( "Itanium",StringParser.Parse("${res:Dialog.ProjectOptions.Build.TargetCPU.Itanium}")));
this.TargetCPU = targetCPU;
fileAlignment = new List<KeyItemPair>();
fileAlignment.Add( new KeyItemPair("512", "512"));
fileAlignment.Add( new KeyItemPair("1024", "1024"));
fileAlignment.Add(new KeyItemPair("2048", "2048"));
fileAlignment.Add(new KeyItemPair("4096", "4096"));
fileAlignment.Add(new KeyItemPair("8192", "8192"));
FileAlign = fileAlignment;
/*
this.warnLevel = new List<KeyItemPair>();
this.warnLevel.Add(new KeyItemPair("0","0"));
this.warnLevel.Add(new KeyItemPair("1","1"));
this.warnLevel.Add(new KeyItemPair("2","2"));
this.warnLevel.Add(new KeyItemPair("3","3"));
this.warnLevel.Add(new KeyItemPair("4","4"));
this.WarnLevel = warnLevel;
*/
this.DataContext = this;
}
@ -80,14 +43,17 @@ namespace CSharpBinding.OptionPanels @@ -80,14 +43,17 @@ namespace CSharpBinding.OptionPanels
TextBoxEditMode.EditRawProperty,PropertyStorageLocations.ConfigurationSpecific); }
}
public ProjectProperty<bool> Optimize {
get { return GetProperty("Optimize", false, PropertyStorageLocations.ConfigurationSpecific); }
}
public ProjectProperty<bool> AllowUnsafeBlocks {
get { return GetProperty("AllowUnsafeBlocks", false); }
}
public ProjectProperty<bool> CheckForOverflowUnderflow {
get { return GetProperty("CheckForOverflowUnderflow", false, PropertyStorageLocations.ConfigurationSpecific); }
}
@ -101,6 +67,7 @@ namespace CSharpBinding.OptionPanels @@ -101,6 +67,7 @@ namespace CSharpBinding.OptionPanels
get {return GetProperty("OutputPath", "", TextBoxEditMode.EditRawProperty); }
}
public ProjectProperty<string> DocumentationFile {
get {return GetProperty("DocumentationFile", "", TextBoxEditMode.EditRawProperty);}
}
@ -110,49 +77,7 @@ namespace CSharpBinding.OptionPanels @@ -110,49 +77,7 @@ namespace CSharpBinding.OptionPanels
get {return GetProperty("DebugType",ICSharpCode.SharpDevelop.Project.DebugSymbolType.Full ); }
}
// used in multibinding
public ProjectProperty<bool> RegisterForComInterop {
get {return GetProperty("RegisterForComInterop", false, PropertyStorageLocations.PlatformSpecific ); }
}
public ProjectProperty<string> GenerateSerializationAssemblies {
get {return GetProperty("GenerateSerializationAssemblies","Auto",
TextBoxEditMode.EditEvaluatedProperty, PropertyStorageLocations.PlatformSpecific ); }
}
public ProjectProperty<string> PlatformTarget {
get {return GetProperty("PlatformTarget","AnyCPU",
TextBoxEditMode.EditEvaluatedProperty, PropertyStorageLocations.PlatformSpecific ); }
}
public ProjectProperty<string> FileAlignment {
get {return GetProperty("FileAlignment","4096",
TextBoxEditMode.EditEvaluatedProperty, PropertyStorageLocations.PlatformSpecific ); }
}
public ProjectProperty<string> BaseAddress {
get {return GetProperty("BaseAddress","1000",
TextBoxEditMode.EditEvaluatedProperty,PropertyStorageLocations.PlatformSpecific ); }
}
public ProjectProperty<string> BaseIntermediateOutputPath {
get {return GetProperty("BaseIntermediateOutputPath",@"obj\",
TextBoxEditMode.EditRawProperty,PropertyStorageLocations.ConfigurationSpecific ); }
}
public ProjectProperty<string> IntermediateOutputPath {
get {return GetProperty("IntermediateOutputPath",@"obj\$(Configuration)\",TextBoxEditMode.EditRawProperty ); }
}
public ProjectProperty<string> NoWarn {
get {return GetProperty("NoWarn","",TextBoxEditMode.EditRawProperty ); }
}
#endregion
#region overrides
@ -166,42 +91,26 @@ namespace CSharpBinding.OptionPanels @@ -166,42 +91,26 @@ namespace CSharpBinding.OptionPanels
documentFileIsChecked = true;
}
XmlDocHelper();
this.BaseIntermediateOutputPathCommand = new RelayCommand(BaseIntermediateOutputPathExecute);
this.IntermediateOutputPathCommand = new RelayCommand(IntermediateOutputPathExecute);
treatErrorsAndWarnings.SetProjectOptions(this);
}
protected override void Load(MSBuildBasedProject project, string configuration, string platform)
{
base.Load(project, configuration, platform);
int val;
if (!int.TryParse(BaseAddress.Value, NumberStyles.Integer, NumberFormatInfo.InvariantInfo, out val)) {
val = 0x400000;
}
DllBaseAdress = "0x" + val.ToString("x", NumberFormatInfo.InvariantInfo);
errorsAndWarnings.SetProjectOptions(this);
treatErrorsAndWarnings.SetProjectOptions(this);
this.buildAdvanced.SetProjectOptions(this);
this.errorsAndWarnings.SetProjectOptions(this);
this.treatErrorsAndWarnings.SetProjectOptions(this);
IsDirty = false;
}
protected override bool Save(MSBuildBasedProject project, string configuration, string platform)
{
NumberStyles style = NumberStyles.Integer;
if (dllBaseAdress.StartsWith("0x")) {
dllBaseAdress = dllBaseAdress.Substring(2);
style = NumberStyles.HexNumber;
if (buildAdvanced.SaveProjectOptions()) {
treatErrorsAndWarnings.SaveProjectOptions();
return base.Save(project, configuration, platform);
}
int val;
if (int.TryParse(dllBaseAdress, style, NumberFormatInfo.InvariantInfo, out val)) {
BaseAddress.Value = val.ToString(NumberFormatInfo.InvariantInfo);
} else {
MessageService.ShowMessage("${res:Dialog.ProjectOptions.PleaseEnterValidNumber}");
return false;
}
treatErrorsAndWarnings.SaveTreatWarningAsErrorRadioButtons();
return base.Save(project, configuration, platform);
return false;
}
@ -279,86 +188,35 @@ namespace CSharpBinding.OptionPanels @@ -279,86 +188,35 @@ namespace CSharpBinding.OptionPanels
#region SerializationInfo
public List<KeyItemPair> SerializationInfo {
get {return this.serializationInfo;}
set {this.serializationInfo = value;
base.RaisePropertyChanged(() => SerializationInfo);
}
}
// public List<KeyItemPair> SerializationInfo {
// get {return this.serializationInfo;}
// set {this.serializationInfo = value;
// base.RaisePropertyChanged(() => SerializationInfo);
// }
// }
#endregion
#region TargetCPU
public List<KeyItemPair> TargetCPU {
get { return targetCPU; }
set { targetCPU = value;
base.RaisePropertyChanged(() => TargetCPU);
}
}
// public List<KeyItemPair> TargetCPU {
// get { return targetCPU; }
// set { targetCPU = value;
// base.RaisePropertyChanged(() => TargetCPU);
// }
// }
#endregion
#region FileAlignment
public List<KeyItemPair> FileAlign {
get { return fileAlignment; }
set { fileAlignment = value;
base.RaisePropertyChanged(() => FileAlign);
}
}
#endregion
#region DLL BaseAdress
private string dllBaseAdress;
// public List<KeyItemPair> FileAlign {
// get { return fileAlignment; }
// set { fileAlignment = value;
// base.RaisePropertyChanged(() => FileAlign);
// }
// }
public string DllBaseAdress {
get {
return dllBaseAdress;
}
set {
dllBaseAdress = value;
IsDirty = true;
base.RaisePropertyChanged(() => DllBaseAdress);
}
}
#endregion
#region BaseIntermediateOutputPath
public System.Windows.Input.ICommand BaseIntermediateOutputPathCommand {
get{return this.baseIntermediateOutputPathCommand;}
set {this.baseIntermediateOutputPathCommand = value;
base.RaisePropertyChanged(() => BaseIntermediateOutputPathCommand);}
}
private void BaseIntermediateOutputPathExecute ()
{
BrowseForFolder(BaseIntermediateOutputPath, "${res:Dialog.Options.PrjOptions.Configuration.FolderBrowserDescription}");
}
#endregion
#region IntermediateOutputPath
public System.Windows.Input.ICommand IntermediateOutputPathCommand {
get{return this.intermediateOutputPathCommand;}
set {this.intermediateOutputPathCommand = value;
base.RaisePropertyChanged(() => IntermediateOutputPathCommand);}
}
private void IntermediateOutputPathExecute ()
{
BrowseForFolder(IntermediateOutputPath, "${res:Dialog.Options.PrjOptions.Configuration.FolderBrowserDescription}");
}
#endregion
}
}

10
src/AddIns/BackendBindings/VBNetBinding/Project/Src/OptionPanels/BuildOptionsXaml.xaml.cs

@ -57,11 +57,6 @@ namespace ICSharpCode.VBNetBinding.OptionPanels @@ -57,11 +57,6 @@ namespace ICSharpCode.VBNetBinding.OptionPanels
IsDirty = false;
}
// public ProjectOptionPanel.ProjectProperty<bool> TreatWarningsAsErrors {
// get {
// return GetProperty("TreatWarningsAsErrors", false); }
// }
public ProjectProperty<string> DefineConstants {
get { return GetProperty("DefineConstants", "", TextBoxEditMode.EditRawProperty); }
@ -134,12 +129,10 @@ namespace ICSharpCode.VBNetBinding.OptionPanels @@ -134,12 +129,10 @@ namespace ICSharpCode.VBNetBinding.OptionPanels
}
#endregion
#region overrides
protected override void Load(MSBuildBasedProject project, string configuration, string platform)
{
base.Load(project, configuration, platform);
@ -150,8 +143,7 @@ namespace ICSharpCode.VBNetBinding.OptionPanels @@ -150,8 +143,7 @@ namespace ICSharpCode.VBNetBinding.OptionPanels
protected override bool Save(MSBuildBasedProject project, string configuration, string platform)
{
Console.WriteLine(OptionExplicit.Value);
treatErrorsAndWarnings.SaveTreatWarningAsErrorRadioButtons();
treatErrorsAndWarnings.SaveProjectOptions();
return base.Save(project, configuration, platform);
}

5
src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj

@ -275,6 +275,10 @@ @@ -275,6 +275,10 @@
<DependentUpon>ApplicationSettings.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
<Compile Include="Src\Gui\Dialogs\OptionPanels\ProjectOptions\BuildAdvanced.xaml.cs">
<DependentUpon>BuildAdvanced.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
<Compile Include="Src\Gui\Dialogs\OptionPanels\ProjectOptions\DebugOptions.xaml.cs">
<DependentUpon>DebugOptions.xaml</DependentUpon>
<SubType>Code</SubType>
@ -918,6 +922,7 @@ @@ -918,6 +922,7 @@
<Page Include="Src\Gui\Dialogs\OptionPanels\IDEOptions\SelectStylePanel.xaml" />
<Page Include="Src\Gui\Dialogs\OptionPanels\IDEOptions\TaskListOptionsl.xaml" />
<Page Include="Src\Gui\Dialogs\OptionPanels\ProjectOptions\ApplicationSettings.xaml" />
<Page Include="Src\Gui\Dialogs\OptionPanels\ProjectOptions\BuildAdvanced.xaml" />
<Page Include="Src\Gui\Dialogs\OptionPanels\ProjectOptions\BuildEvents.xaml" />
<Page Include="Src\Gui\Dialogs\OptionPanels\ProjectOptions\DebugOptions.xaml" />
<Page Include="Src\Gui\Dialogs\OptionPanels\ProjectOptions\ErrorsAndWarnings.xaml" />

121
src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/BuildAdvanced.xaml

@ -0,0 +1,121 @@ @@ -0,0 +1,121 @@
<UserControl x:Class="ICSharpCode.SharpDevelop.Gui.OptionPanels.BuildAdvanced"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:optionpanels="clr-namespace:ICSharpCode.SharpDevelop.Gui.OptionPanels;assembly=ICSharpCode.SharpDevelop"
xmlns:core="http://icsharpcode.net/sharpdevelop/core">
<UserControl.Resources>
<optionpanels:StorageLocationConverter x:Key="converter" />
</UserControl.Resources>
<Grid>
<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>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition MinWidth="120"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition Width="50"></ColumnDefinition>
</Grid.ColumnDefinitions>
<optionpanels:StorageLocationPicker Grid.Row="1" VerticalAlignment="Center">
<optionpanels:StorageLocationPicker.Location>
<MultiBinding Converter="{StaticResource converter}">
<Binding Path="RegisterForComInterop.Location" />
<Binding Path="GenerateSerializationAssemblies.Location" />
<Binding Path="PlatformTarget.Location" />
<Binding Path="FileAlignment.Location" />
<Binding Path="BaseAddress.Location" />
</MultiBinding>
</optionpanels:StorageLocationPicker.Location>
</optionpanels:StorageLocationPicker>
<!--x:Name="registerCOMInteropCheckBox"-->
<CheckBox Grid.Column="2"
IsChecked="{Binding RegisterForComInterop.Value}"
Content="{core:Localize Dialog.ProjectOptions.Build.RegisterForCOM}"></CheckBox>
<Label Grid.Row="1" Grid.Column="1"
HorizontalAlignment="Right"
Content="{core:Localize Dialog.ProjectOptions.Build.GenerateSerializationAssembly}"></Label>
<!--x:Name="generateSerializationAssemblyComboBox"-->
<ComboBox Grid.Row="1" Grid.Column="2"
VerticalAlignment="Center"
ItemsSource="{Binding Path=DataContext.SerializationInfo}"
SelectedValue="{Binding Path=GenerateSerializationAssemblies.Value}"
DisplayMemberPath="DisplayValue"
SelectedValuePath="Key"></ComboBox>
<Label Grid.Row="2" 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>
<Label Grid.Row="3" Grid.Column="1" HorizontalAlignment="Right"
Content="{core:Localize Dialog.ProjectOptions.Build.FileAlignment}"></Label>
<!--x:Name="fileAlignmentComboBox"-->
<ComboBox Grid.Row="3" Grid.Column="2" VerticalAlignment="Center"
ItemsSource="{Binding Path=DataContext.FileAlign}"
SelectedValue="{Binding Path=FileAlignment.Value}"
DisplayMemberPath="DisplayValue"
SelectedValuePath="Key"></ComboBox>
<Label Grid.Row="4" Grid.Column="1" HorizontalAlignment="Right"
Content="{core:Localize Dialog.ProjectOptions.Build.DLLBaseAddress}"></Label>
<!--x:Name="dllBaseAddressTextBox"-->
<TextBox Grid.Row="4" Grid.Column="2"
Text="{Binding DllBaseAdress, UpdateSourceTrigger=PropertyChanged}">
</TextBox>
<!-- location multibinding -->
<Label Grid.Row="6" Grid.ColumnSpan="2"
Content="{core:Localize Dialog.ProjectOptions.Build.BaseIntermediateOutputPath}"></Label>
<optionpanels:StorageLocationPicker Grid.Row="7"
Location="{Binding BaseIntermediateOutputPath.Location}"
DockPanel.Dock="Left" />
<TextBox x:Name="baseIntermediateOutputPathTextBox" Grid.Row="7" Grid.Column="1" Grid.ColumnSpan="3"
Text="{Binding BaseIntermediateOutputPath.Value, UpdateSourceTrigger=PropertyChanged}"></TextBox>
<Button Grid.Row="7" Grid.Column="4" Margin="3,0,3,0"
Content="..."
VerticalAlignment="Center"
Command="{Binding BaseIntermediateOutputPathCommand}"></Button>
<Label Grid.Row="8" Grid.ColumnSpan="2" Content="{core:Localize Dialog.ProjectOptions.Build.IntermediateOutputPath}"></Label>
<optionpanels:StorageLocationPicker Grid.Row="9" DockPanel.Dock="Left"
Location="{Binding IntermediateOutputPath.Location}"/>
<TextBox x:Name="intermediateOutputPathTextBox" Grid.Row="9" Grid.Column="1" Grid.ColumnSpan="3"
Text="{Binding IntermediateOutputPath.Value, UpdateSourceTrigger=PropertyChanged}"></TextBox>
<Button Grid.Row="9" Grid.Column="4" Margin="3,0,3,0"
Content="..."
VerticalAlignment="Center"
Command="{Binding IntermediateOutputPathCommand}"></Button>
</Grid>
</UserControl>

237
src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/BuildAdvanced.xaml.cs

@ -0,0 +1,237 @@ @@ -0,0 +1,237 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 24.09.2012
* Time: 19:54
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Globalization;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.SharpDevelop.Widgets;
namespace ICSharpCode.SharpDevelop.Gui.OptionPanels
{
/// <summary>
/// Interaction logic for BuildAdvenced.xaml
/// </summary>
public partial class BuildAdvanced : UserControl,IProjectUserControl, INotifyPropertyChanged
{
private List<KeyItemPair> serializationInfo;
private List<KeyItemPair> targetCPU;
private string dllBaseAdress;
private List<KeyItemPair> fileAlignment;
private System.Windows.Input.ICommand baseIntermediateOutputPathCommand;
private System.Windows.Input.ICommand intermediateOutputPathCommand;
private ProjectOptionPanel projectOptions;
public BuildAdvanced()
{
InitializeComponent();
this.DataContext = this;
this.serializationInfo = new List<KeyItemPair>();
this.serializationInfo.Add (new KeyItemPair("Off",StringParser.Parse("${res:Dialog.ProjectOptions.Build.Off}")));
this.serializationInfo.Add (new KeyItemPair("On",StringParser.Parse("${res:Dialog.ProjectOptions.Build.On}")));
this.serializationInfo.Add (new KeyItemPair("Auto",StringParser.Parse( "${res:Dialog.ProjectOptions.Build.Auto}")));
this.SerializationInfo = this.serializationInfo;
this.targetCPU = new List<KeyItemPair>();
this.targetCPU.Add(new KeyItemPair( "AnyCPU",StringParser.Parse("${res:Dialog.ProjectOptions.Build.TargetCPU.Any}")));
this.targetCPU.Add(new KeyItemPair( "x86",StringParser.Parse("${res:Dialog.ProjectOptions.Build.TargetCPU.x86}")));
this.targetCPU.Add(new KeyItemPair( "x64",StringParser.Parse("${res:Dialog.ProjectOptions.Build.TargetCPU.x64}")));
this.targetCPU.Add(new KeyItemPair( "Itanium",StringParser.Parse("${res:Dialog.ProjectOptions.Build.TargetCPU.Itanium}")));
this.TargetCPU = targetCPU;
fileAlignment = new List<KeyItemPair>();
fileAlignment.Add( new KeyItemPair("512", "512"));
fileAlignment.Add( new KeyItemPair("1024", "1024"));
fileAlignment.Add(new KeyItemPair("2048", "2048"));
fileAlignment.Add(new KeyItemPair("4096", "4096"));
fileAlignment.Add(new KeyItemPair("8192", "8192"));
FileAlign = fileAlignment;
}
#region IProjectUserControl
public void SetProjectOptions (ProjectOptionPanel projectOptions)
{
if (projectOptions == null) {
throw new ArgumentNullException("projectOptions");
}
this.projectOptions = projectOptions;
this.BaseIntermediateOutputPathCommand = new RelayCommand(BaseIntermediateOutputPathExecute);
this.IntermediateOutputPathCommand = new RelayCommand(IntermediateOutputPathExecute);
int val;
if (!int.TryParse(BaseAddress.Value, NumberStyles.Integer, NumberFormatInfo.InvariantInfo, out val)) {
val = 0x400000;
}
DllBaseAdress = "0x" + val.ToString("x", NumberFormatInfo.InvariantInfo);
}
public bool SaveProjectOptions()
{
NumberStyles style = NumberStyles.Integer;
if (dllBaseAdress.StartsWith("0x")) {
dllBaseAdress = dllBaseAdress.Substring(2);
style = NumberStyles.HexNumber;
}
int val;
if (int.TryParse(dllBaseAdress, style, NumberFormatInfo.InvariantInfo, out val)) {
BaseAddress.Value = val.ToString(NumberFormatInfo.InvariantInfo);
return true;
} else {
MessageService.ShowMessage("${res:Dialog.ProjectOptions.PleaseEnterValidNumber}");
return false;
}
}
#endregion
#region Properies
public ProjectOptionPanel.ProjectProperty<bool> RegisterForComInterop {
get {return projectOptions.GetProperty("RegisterForComInterop", false, PropertyStorageLocations.PlatformSpecific ); }
}
public ProjectOptionPanel.ProjectProperty<string> GenerateSerializationAssemblies {
get {return projectOptions.GetProperty("GenerateSerializationAssemblies","Auto",
TextBoxEditMode.EditEvaluatedProperty, PropertyStorageLocations.PlatformSpecific ); }
}
public ProjectOptionPanel.ProjectProperty<string> PlatformTarget {
get {return projectOptions.GetProperty("PlatformTarget","AnyCPU",
TextBoxEditMode.EditEvaluatedProperty, PropertyStorageLocations.PlatformSpecific ); }
}
public ProjectOptionPanel.ProjectProperty<string> FileAlignment {
get {return projectOptions.GetProperty("FileAlignment","4096",
TextBoxEditMode.EditEvaluatedProperty, PropertyStorageLocations.PlatformSpecific ); }
}
public ProjectOptionPanel.ProjectProperty<string> BaseAddress {
get {return projectOptions.GetProperty("BaseAddress","1000",
TextBoxEditMode.EditEvaluatedProperty,PropertyStorageLocations.PlatformSpecific ); }
}
public ProjectOptionPanel.ProjectProperty<string> BaseIntermediateOutputPath {
get {return projectOptions.GetProperty("BaseIntermediateOutputPath",@"obj\",
TextBoxEditMode.EditRawProperty,PropertyStorageLocations.ConfigurationSpecific ); }
}
public ProjectOptionPanel.ProjectProperty<string> IntermediateOutputPath {
get {return projectOptions.GetProperty("IntermediateOutputPath",@"obj\$(Configuration)\",TextBoxEditMode.EditRawProperty ); }
}
#endregion
public List<KeyItemPair> SerializationInfo {
get {return this.serializationInfo;}
set {this.serializationInfo = value;
RaisePropertyChanged("SerializationInfo");
}
}
public List<KeyItemPair> TargetCPU {
get { return targetCPU; }
set { targetCPU = value;
RaisePropertyChanged("TargetCPU");
}
}
public List<KeyItemPair> FileAlign {
get { return fileAlignment; }
set { fileAlignment = value;
RaisePropertyChanged("FileAlign");
}
}
public string DllBaseAdress {
get {
return dllBaseAdress;
}
set {
dllBaseAdress = value;
projectOptions.IsDirty = true;
RaisePropertyChanged("DllBaseAdress");
}
}
#region BaseIntermediateOutputPath
public System.Windows.Input.ICommand BaseIntermediateOutputPathCommand {
get{return this.baseIntermediateOutputPathCommand;}
set {this.baseIntermediateOutputPathCommand = value;
RaisePropertyChanged("BaseIntermediateOutputPathCommand");
}
}
private void BaseIntermediateOutputPathExecute ()
{
projectOptions.BrowseForFolder(BaseIntermediateOutputPath,
ResourceService.GetString("Dialog.Options.PrjOptions.Configuration.FolderBrowserDescription"));
}
#endregion
#region IntermediateOutputPath
public System.Windows.Input.ICommand IntermediateOutputPathCommand {
get{return this.intermediateOutputPathCommand;}
set {this.intermediateOutputPathCommand = value;
RaisePropertyChanged("IntermediateOutputPathCommand");
}
}
private void IntermediateOutputPathExecute ()
{
projectOptions.BrowseForFolder(IntermediateOutputPath,
ResourceService.GetString("Dialog.Options.PrjOptions.Configuration.FolderBrowserDescription"));
}
#endregion
#region INotifyPropertyChanged
public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
private void RaisePropertyChanged (string propertyName)
{
var handler = this.PropertyChanged;
if (handler != null)
{
handler(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
}
}
#endregion
}
}

21
src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/ErrorsAndWarnings.xaml.cs

@ -23,7 +23,16 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels @@ -23,7 +23,16 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels
/// <summary>
/// Interaction logic for ErrorsAndWarnings.xaml
/// </summary>
public partial class ErrorsAndWarnings : UserControl, INotifyPropertyChanged
///
public interface IProjectUserControl
{
void SetProjectOptions (ProjectOptionPanel projectOptions);
bool SaveProjectOptions();
}
public partial class ErrorsAndWarnings : UserControl, INotifyPropertyChanged,IProjectUserControl
{
private List<KeyItemPair> warnLevel;
private ProjectOptionPanel projectOptions;
@ -42,6 +51,8 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels @@ -42,6 +51,8 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels
this.WarnLevel = warnLevel;
}
#region IProjectUserControl
public void SetProjectOptions (ProjectOptionPanel projectOptions)
{
if (projectOptions == null) {
@ -50,7 +61,13 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels @@ -50,7 +61,13 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels
this.projectOptions = projectOptions;
}
public bool SaveProjectOptions()
{
return true;
}
#endregion
public ProjectOptionPanel.ProjectProperty<string> WarningLevel {
get {return projectOptions.GetProperty("WarningLevel","4",TextBoxEditMode.EditEvaluatedProperty ); }
}

4
src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/ProjectOptionPanel.cs

@ -385,9 +385,9 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels @@ -385,9 +385,9 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels
/// <summary>
/// Shows the 'Browse for folder' dialog.
/// </summary>
protected void BrowseForFolder(ProjectProperty<string> property, string description)
public void BrowseForFolder(ProjectProperty<string> property, string description)
{
string newValue = BrowseForFile(description, property.Value, property.TextBoxEditMode);
string newValue = BrowseForFolder(description, BaseDirectory, property.TextBoxEditMode);
if (newValue != null)
property.Value = newValue;
}

40
src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/TreatErrorsAndWarnings.xaml.cs

@ -25,7 +25,7 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels @@ -25,7 +25,7 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels
/// </summary>
public partial class TreatErrorsAndWarnings : UserControl
public partial class TreatErrorsAndWarnings : UserControl,IProjectUserControl
{
private ProjectOptionPanel projectOptions;
@ -50,6 +50,8 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels @@ -50,6 +50,8 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels
#endregion
#region IProjectuserControl
public void SetProjectOptions (ProjectOptionPanel projectOptions)
{
if (projectOptions == null) {
@ -59,6 +61,24 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels @@ -59,6 +61,24 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels
SetTreatWarningAsErrorRadioButtons();
}
public bool SaveProjectOptions()
{
if ((bool)this.noneRadioButton.IsChecked){
this.specificWarningsTextBox.Text = string.Empty;
}
if ((bool)this.allRadioButton.IsChecked) {
this.TreatWarningsAsErrors.Value = true;
} else {
this.TreatWarningsAsErrors.Value = false;
}
this.noneRadioButton.Checked -= ErrorButton_Checked;
this.allRadioButton.Checked -= ErrorButton_Checked;
this.specificWarningsRadioButton.Checked -= ErrorButton_Checked;
return true;
}
#endregion
private void SetTreatWarningAsErrorRadioButtons()
{
@ -76,23 +96,7 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels @@ -76,23 +96,7 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels
this.specificWarningsRadioButton.Checked += ErrorButton_Checked;
}
public void SaveTreatWarningAsErrorRadioButtons()
{
if ((bool)this.noneRadioButton.IsChecked){
this.specificWarningsTextBox.Text = string.Empty;
}
if ((bool)this.allRadioButton.IsChecked) {
this.TreatWarningsAsErrors.Value = true;
} else {
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)
{

Loading…
Cancel
Save