diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.addin b/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.addin
index 00baa43cf2..474a81bb75 100644
--- a/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.addin
+++ b/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.addin
@@ -92,9 +92,15 @@
+
+
+
+
diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.csproj b/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.csproj
index db074cdfad..09c4c05459 100644
--- a/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.csproj
+++ b/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.csproj
@@ -76,6 +76,10 @@
Form
+
+ BuildOptionsXaml.xaml
+ Code
+
@@ -111,6 +115,10 @@
ICSharpCode.Core
False
+
+ {7E4A7172-7FF5-48D0-B719-7CD959DD1AC9}
+ ICSharpCode.Core.Presentation
+
{857CA1A3-FC88-4BE0-AB6A-D1EE772AB288}
ICSharpCode.Core.WinForms
@@ -121,6 +129,13 @@
ICSharpCode.SharpDevelop.Dom
False
+
+ {8035765F-D51F-4A0C-A746-2FD100E19419}
+ ICSharpCode.SharpDevelop.Widgets
+
+
+
+
\ No newline at end of file
diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/BuildOptionsXaml.xaml.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/BuildOptionsXaml.xaml.cs
new file mode 100644
index 0000000000..06bcb12443
--- /dev/null
+++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/BuildOptionsXaml.xaml.cs
@@ -0,0 +1,173 @@
+/*
+ * Created by SharpDevelop.
+ * User: Peter Forstmeier
+ * Date: 05/02/2012
+ * Time: 19:54
+ * To change this template use Tools | Options | Coding | Edit Standard Headers.
+ */
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Windows.Controls;
+using System.Windows.Input;
+
+using ICSharpCode.SharpDevelop;
+using ICSharpCode.SharpDevelop.Dom;
+using ICSharpCode.SharpDevelop.Editor;
+using ICSharpCode.SharpDevelop.Gui.OptionPanels;
+using ICSharpCode.SharpDevelop.Project;
+using ICSharpCode.SharpDevelop.Project.Converter;
+using ICSharpCode.SharpDevelop.Widgets;
+using StringPair = System.Collections.Generic.KeyValuePair;
+
+
+namespace CSharpBinding.OptionPanels
+{
+ ///
+ /// Interaction logic for BuildOptionsXaml.xaml
+ ///
+ ///
+
+ public partial class BuildOptionsXaml : ProjectOptionPanel
+ {
+// private List fileAlignment;
+
+ private ICommand updateProjectCommand;
+ private ICommand changeOutputPath;
+ private MSBuildBasedProject project;
+
+ public BuildOptionsXaml()
+ {
+ InitializeComponent();
+
+
+ /*
+ fileAlignment = new List();
+ fileAlignment.Add( new StringPair("512", "512"));
+ fileAlignment.Add( new StringPair("1024", "1024"));
+ fileAlignment.Add(new StringPair("2048", "2048"));
+ fileAlignment.Add(new StringPair("4096", "4096"));
+ fileAlignment.Add(new StringPair("8192", "8192"));*/
+ }
+
+ private void Initialize()
+ {
+ this.UpdateProjectCommand = new RelayCommand(UpdateProjectExecute);
+ this.ChangeOutputPath = new RelayCommand(ChangeOutputPathExecute);
+ UpdateTargetFrameworkCombo();
+ }
+ #region properties
+
+ public ProjectProperty DefineConstants {
+ get {return GetProperty("DefineConstants", "", TextBoxEditMode.EditRawProperty); }
+ }
+
+ public ProjectProperty Optimize {
+ get {return GetProperty("Optimize", "", TextBoxEditMode.EditRawProperty); }
+ }
+
+
+ public ProjectProperty AllowUnsafeBlocks {
+ get {return GetProperty("AllowUnsafeBlocks", "", TextBoxEditMode.EditRawProperty); }
+ }
+
+
+ public ProjectProperty CheckForOverflowUnderflow {
+ get {return GetProperty("CheckForOverflowUnderflow", "", TextBoxEditMode.EditRawProperty); }
+ }
+
+
+ public ProjectProperty NoStdLib {
+ get {return GetProperty("NoStdLib", "", TextBoxEditMode.EditRawProperty); }
+ }
+
+
+ public ProjectProperty OutputPath {
+ get {return GetProperty("OutputPath", "", TextBoxEditMode.EditRawProperty); }
+ }
+
+ // Documentfile missing and only partial implemented
+ public ProjectProperty DocumentationFile {
+ get {return GetProperty("DocumentationFile", "", TextBoxEditMode.EditRawProperty);}
+ }
+
+
+ //
+
+ public ProjectProperty DebugType {
+ get {return GetProperty("DebugType",ICSharpCode.SharpDevelop.Project.DebugSymbolType.Full ); }
+ }
+
+ #endregion
+
+ #region overrides
+
+ protected override void Load(MSBuildBasedProject project, string configuration, string platform)
+ {
+ base.Load(project, configuration, platform);
+ this.project = project;
+ this.Initialize();
+ }
+
+ #endregion
+
+
+ #region Command Updateproject
+
+ public ICommand UpdateProjectCommand {
+ get { return updateProjectCommand; }
+ set { updateProjectCommand = value;
+ base.RaisePropertyChanged(() =>this.UpdateProjectCommand);
+ }
+ }
+
+
+ private void UpdateProjectExecute ()
+ {
+ UpgradeViewContent.Show(project.ParentSolution).Select(project as IUpgradableProject);
+ this.UpdateTargetFrameworkCombo();
+ }
+
+ private void UpdateTargetFrameworkCombo()
+ {
+ TargetFramework fx = ((IUpgradableProject)project).CurrentTargetFramework;
+ if (fx != null) {
+ targetFrameworkComboBox.Items.Add(fx.DisplayName);
+ targetFrameworkComboBox.SelectedIndex = 0;
+ }
+ }
+
+ #endregion
+
+ #region ChangeOutputPathCommand
+
+ public ICommand ChangeOutputPath
+ {
+ get {return this.changeOutputPath;}
+ set {this.changeOutputPath = value;
+ base.RaisePropertyChanged(() => this.ChangeOutputPath);
+ }
+ }
+ private void ChangeOutputPathExecute()
+ {
+ OutputPath.Value = base.BrowseForFolder("${res:Dialog.Options.PrjOptions.Configuration.FolderBrowserDescription}",
+ base.BaseDirectory,outputPathTextBox.Text);
+ base.RaisePropertyChanged(()=> OutputPath);
+ }
+
+ #endregion
+
+
+ //Property DebugType
+ //void DebugSymbolsLoaded(object sender, EventArgs e)
+
+ #region FileAlignment
+ /*
+ public List> FileAlign {
+ get { return fileAlignment; }
+ set { fileAlignment = value; }
+ }
+ */
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
index eb74be99c5..72b5db3659 100644
--- a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
+++ b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
@@ -288,6 +288,7 @@
+
AddServiceReferenceDialog.xaml
diff --git a/src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/ProjectOptionPanel.cs b/src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/ProjectOptionPanel.cs
index 1f3c89f2c2..6ab1983e70 100644
--- a/src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/ProjectOptionPanel.cs
+++ b/src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/ProjectOptionPanel.cs
@@ -5,20 +5,25 @@ using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
+using System.Linq.Expressions;
+using System.Reflection;
using System.Windows;
using System.Windows.Controls;
+//using System.Windows.Forms;
using System.Windows.Shapes;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Project;
+using Microsoft.Win32;
namespace ICSharpCode.SharpDevelop.Gui.OptionPanels
{
///
/// Base class for project option panels with configuration picker.
///
- public class ProjectOptionPanel : UserControl, IOptionPanel, ICanBeDirty
+ public class ProjectOptionPanel : UserControl, IOptionPanel, ICanBeDirty,INotifyPropertyChanged
{
+
static ProjectOptionPanel()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(ProjectOptionPanel), new FrameworkPropertyMetadata(typeof(ProjectOptionPanel)));
@@ -39,6 +44,8 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels
StackPanel configStackPanel;
Line headerline;
+ public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+
protected virtual void Load(MSBuildBasedProject project, string configuration, string platform)
{
foreach (IProjectProperty p in projectProperties.Values)
@@ -285,5 +292,115 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels
}
}
#endregion
+
+ #region INotifyPropertyChanged implementation
+
+ protected void RaisePropertyChanged(Expression> propertyExpresssion)
+ {
+ var propertyName = ExtractPropertyName(propertyExpresssion);
+ //OnPropertyChanged(new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+ var handler = this.PropertyChanged;
+ if (handler != null)
+ {
+ handler(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+ }
+ }
+ /*
+ protected virtual void OnPropertyChanged(System.ComponentModel.PropertyChangedEventArgs e)
+ {
+ var handler = this.PropertyChanged;
+ if (handler != null)
+ {
+ handler(this, e);
+ }
+ }
+ */
+ private static String ExtractPropertyName(Expression> propertyExpresssion)
+ {
+ if (propertyExpresssion == null)
+ {
+ throw new ArgumentNullException("propertyExpresssion");
+ }
+
+ var memberExpression = propertyExpresssion.Body as MemberExpression;
+ if (memberExpression == null)
+ {
+ throw new ArgumentException("The expression is not a member access expression.", "propertyExpresssion");
+ }
+
+ var property = memberExpression.Member as PropertyInfo;
+ if (property == null)
+ {
+ throw new ArgumentException("The member access expression does not access a property.", "propertyExpresssion");
+ }
+
+ var getMethod = property.GetGetMethod(true);
+ if (getMethod.IsStatic)
+ {
+ throw new ArgumentException("The referenced property is a static property.", "propertyExpresssion");
+ }
+
+ return memberExpression.Member.Name;
+ }
+ #endregion
+
+
+ #region OpenFileDialog
+
+// protected string OpenFile(string fileFilter)
+// {
+// var dialog = new OpenFileDialog();
+//
+// //dialog.Filter = StringParser.Parse("${res:SharpDevelop.FileFilter.ExecutableFiles}|*.exe");
+// var x = StringParser.Parse(fileFilter);
+// dialog.Filter = StringParser.Parse(x);
+// if (dialog.ShowDialog() ?? false) {
+// return dialog.FileName;
+// }
+// return String.Empty;
+// }
+//
+
+ protected string BrowseForFolder(string description,string startLocation,string relativeLocation)
+ {
+
+// var startLocation = BaseDirectory;
+// if (textBoxEditMode == TextBoxEditMode.EditRawProperty)
+// string text = StartWorkingDirectory.Value;
+// text = MSBuildInternals.Unescape(text);
+//
+// if (startLocation != null) {
+// string text = StartWorkingDirectory.Value;
+// startLocation = FileUtility.GetAbsolutePath(startLocation, text);
+// }
+ string startAt = startLocation;
+ if (!String.IsNullOrEmpty(relativeLocation)) {
+ startAt = FileUtility.GetAbsolutePath(startLocation,relativeLocation);
+ }
+
+
+ using (System.Windows.Forms.FolderBrowserDialog fdiag = FileService.CreateFolderBrowserDialog(description,startAt))
+ {
+ if (fdiag.ShowDialog() == System.Windows.Forms.DialogResult.OK) {
+ string path = fdiag.SelectedPath;
+ if (BaseDirectory != null) {
+ path = FileUtility.GetRelativePath(BaseDirectory, path);
+ }
+ if (!path.EndsWith("\\") && !path.EndsWith("/"))
+ path += "\\";
+
+// if (textBoxEditMode == TextBoxEditMode.EditEvaluatedProperty) {
+ //// panel.ControlDictionary[target].Text = path;
+// } else {
+// panel.ControlDictionary[target].Text = MSBuildInternals.Escape(path);
+ //// }
+ return path;
+ }
+
+ }
+ return startLocation;
+ }
+
+ #endregion
}
}
diff --git a/src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/SigningXaml.xaml.cs b/src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/SigningXaml.xaml.cs
new file mode 100644
index 0000000000..900f8691ab
--- /dev/null
+++ b/src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/SigningXaml.xaml.cs
@@ -0,0 +1,79 @@
+/*
+ * Created by SharpDevelop.
+ * User: Peter Forstmeier
+ * Date: 26.04.2012
+ * Time: 19:56
+ * To change this template use Tools | Options | Coding | Edit Standard Headers.
+ */
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+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.SharpDevelop.Project;
+using ICSharpCode.SharpDevelop.Widgets;
+
+namespace ICSharpCode.SharpDevelop.Gui.OptionPanels
+{
+ ///
+ /// Interaction logic for SigningXaml.xaml
+ ///
+ public partial class SigningXaml : ProjectOptionPanel
+ {
+// private const string KeyFileExtensions = "*.snk;*.pfx;*.key";
+ // private MSBuildBasedProject project;
+
+ public SigningXaml()
+ {
+ InitializeComponent();
+
+ }
+
+ private void Initialize()
+ {
+ Cmd = new RelayCommand(CheckExecute);
+ }
+
+
+
+ public ProjectProperty SignAssembly {
+ get { return GetProperty("SignAssembly","", TextBoxEditMode.EditEvaluatedProperty); }
+ }
+
+
+ public ProjectProperty AssemblyOriginatorKeyFile {
+ get { return GetProperty("AssemblyOriginatorKeyFile","", TextBoxEditMode.EditEvaluatedProperty); }
+ }
+
+
+ #region overrides
+
+ protected override void Load(MSBuildBasedProject project, string configuration, string platform)
+ {
+ base.Load(project, configuration, platform);
+ Console.WriteLine("sign {0}",SignAssembly.Value.ToString());
+ //this.project = project;
+ Console.WriteLine("sign {0}",SignAssembly.Value.ToString());
+ Initialize();
+ string prop = GetProperty("SignAssembly", "", TextBoxEditMode.EditRawProperty).Value.ToString();
+ }
+ #endregion
+
+ public RelayCommand Cmd {get;set;}
+
+
+ private void CheckExecute(bool isChecked)
+ {
+ Console.WriteLine(" Checkbox ischecked {0}",isChecked);
+ IsDirty = true;
+ SignAssembly.Value = "False";
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/StringToBoolConverter.cs b/src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/StringToBoolConverter.cs
new file mode 100644
index 0000000000..2258609e4f
--- /dev/null
+++ b/src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/StringToBoolConverter.cs
@@ -0,0 +1,36 @@
+/*
+ * Created by SharpDevelop.
+ * User: Peter Forstmeier
+ * Date: 05.05.2012
+ * Time: 19:29
+ * To change this template use Tools | Options | Coding | Edit Standard Headers.
+ */
+using System;
+using System.Windows.Data;
+
+namespace ICSharpCode.SharpDevelop.Gui.OptionPanels
+{
+ ///
+ /// Description of StringToBoolConverter.
+ ///
+ public class StringToBoolConverter:IValueConverter
+ {
+
+ public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
+ {
+
+ if ("True".Equals(value.ToString(),StringComparison.OrdinalIgnoreCase)) {
+ return true;
+ }
+ return false;
+ }
+
+ public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
+ {
+ if ("True".Equals(value.ToString(),StringComparison.OrdinalIgnoreCase)) {
+ return "True";
+ }
+ return "False";
+ }
+ }
+}