Browse Source
Allow to continue on AddIn-loading errors. git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@2038 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61shortcuts
11 changed files with 420 additions and 191 deletions
@ -0,0 +1,123 @@ |
|||||||
|
// <file>
|
||||||
|
// <copyright see="prj:///doc/copyright.txt"/>
|
||||||
|
// <license see="prj:///doc/license.txt"/>
|
||||||
|
// <owner name="Daniel Grunwald" email="daniel@danielgrunwald.de"/>
|
||||||
|
// <version>$Revision$</version>
|
||||||
|
// </file>
|
||||||
|
|
||||||
|
namespace ICSharpCode.SharpDevelop.Gui |
||||||
|
{ |
||||||
|
partial class EditAvailableConfigurationsDialog : System.Windows.Forms.Form |
||||||
|
{ |
||||||
|
/// <summary>
|
||||||
|
/// Designer variable used to keep track of non-visual components.
|
||||||
|
/// </summary>
|
||||||
|
private System.ComponentModel.IContainer components = null; |
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Disposes resources used by the form.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||||
|
protected override void Dispose(bool disposing) |
||||||
|
{ |
||||||
|
if (disposing) { |
||||||
|
if (components != null) { |
||||||
|
components.Dispose(); |
||||||
|
} |
||||||
|
} |
||||||
|
base.Dispose(disposing); |
||||||
|
} |
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// This method is required for Windows Forms designer support.
|
||||||
|
/// Do not change the method contents inside the source code editor. The Forms designer might
|
||||||
|
/// not be able to load this method if it was changed manually.
|
||||||
|
/// </summary>
|
||||||
|
private void InitializeComponent() |
||||||
|
{ |
||||||
|
this.listBox = new System.Windows.Forms.ListBox(); |
||||||
|
this.okButton = new System.Windows.Forms.Button(); |
||||||
|
this.removeButton = new System.Windows.Forms.Button(); |
||||||
|
this.renameButton = new System.Windows.Forms.Button(); |
||||||
|
this.addButton = new System.Windows.Forms.Button(); |
||||||
|
this.SuspendLayout(); |
||||||
|
//
|
||||||
|
// listBox
|
||||||
|
//
|
||||||
|
this.listBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) |
||||||
|
| System.Windows.Forms.AnchorStyles.Left) |
||||||
|
| System.Windows.Forms.AnchorStyles.Right))); |
||||||
|
this.listBox.FormattingEnabled = true; |
||||||
|
this.listBox.IntegralHeight = false; |
||||||
|
this.listBox.Location = new System.Drawing.Point(12, 12); |
||||||
|
this.listBox.Name = "listBox"; |
||||||
|
this.listBox.Size = new System.Drawing.Size(204, 93); |
||||||
|
this.listBox.TabIndex = 0; |
||||||
|
//
|
||||||
|
// okButton
|
||||||
|
//
|
||||||
|
this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); |
||||||
|
this.okButton.DialogResult = System.Windows.Forms.DialogResult.OK; |
||||||
|
this.okButton.Location = new System.Drawing.Point(222, 111); |
||||||
|
this.okButton.Name = "okButton"; |
||||||
|
this.okButton.Size = new System.Drawing.Size(75, 23); |
||||||
|
this.okButton.TabIndex = 1; |
||||||
|
this.okButton.Text = "${res:Global.OKButtonText}"; |
||||||
|
this.okButton.UseVisualStyleBackColor = true; |
||||||
|
//
|
||||||
|
// removeButton
|
||||||
|
//
|
||||||
|
this.removeButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); |
||||||
|
this.removeButton.Location = new System.Drawing.Point(222, 12); |
||||||
|
this.removeButton.Name = "removeButton"; |
||||||
|
this.removeButton.Size = new System.Drawing.Size(75, 23); |
||||||
|
this.removeButton.TabIndex = 2; |
||||||
|
this.removeButton.Text = "${res:Global.RemoveButtonText}"; |
||||||
|
this.removeButton.UseVisualStyleBackColor = true; |
||||||
|
this.removeButton.Click += new System.EventHandler(this.RemoveButtonClick); |
||||||
|
//
|
||||||
|
// renameButton
|
||||||
|
//
|
||||||
|
this.renameButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); |
||||||
|
this.renameButton.Location = new System.Drawing.Point(222, 41); |
||||||
|
this.renameButton.Name = "renameButton"; |
||||||
|
this.renameButton.Size = new System.Drawing.Size(75, 23); |
||||||
|
this.renameButton.TabIndex = 3; |
||||||
|
this.renameButton.Text = "${res:Global.RenameButtonText}"; |
||||||
|
this.renameButton.UseVisualStyleBackColor = true; |
||||||
|
this.renameButton.Click += new System.EventHandler(this.RenameButtonClick); |
||||||
|
//
|
||||||
|
// addButton
|
||||||
|
//
|
||||||
|
this.addButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); |
||||||
|
this.addButton.Location = new System.Drawing.Point(222, 70); |
||||||
|
this.addButton.Name = "addButton"; |
||||||
|
this.addButton.Size = new System.Drawing.Size(75, 23); |
||||||
|
this.addButton.TabIndex = 4; |
||||||
|
this.addButton.Text = "${res:Global.AddButtonText}..."; |
||||||
|
this.addButton.UseVisualStyleBackColor = true; |
||||||
|
this.addButton.Click += new System.EventHandler(this.AddButtonClick); |
||||||
|
//
|
||||||
|
// EditAvailableConfigurationsDialog
|
||||||
|
//
|
||||||
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); |
||||||
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; |
||||||
|
this.ClientSize = new System.Drawing.Size(309, 146); |
||||||
|
this.Controls.Add(this.addButton); |
||||||
|
this.Controls.Add(this.renameButton); |
||||||
|
this.Controls.Add(this.removeButton); |
||||||
|
this.Controls.Add(this.okButton); |
||||||
|
this.Controls.Add(this.listBox); |
||||||
|
this.MinimumSize = new System.Drawing.Size(230, 165); |
||||||
|
this.Name = "EditAvailableConfigurationsDialog"; |
||||||
|
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; |
||||||
|
this.Text = "EditAvailableConfigurationsDialog"; |
||||||
|
this.ResumeLayout(false); |
||||||
|
} |
||||||
|
private System.Windows.Forms.Button addButton; |
||||||
|
private System.Windows.Forms.Button renameButton; |
||||||
|
private System.Windows.Forms.Button removeButton; |
||||||
|
private System.Windows.Forms.ListBox listBox; |
||||||
|
private System.Windows.Forms.Button okButton; |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,157 @@ |
|||||||
|
// <file>
|
||||||
|
// <copyright see="prj:///doc/copyright.txt"/>
|
||||||
|
// <license see="prj:///doc/license.txt"/>
|
||||||
|
// <owner name="Daniel Grunwald" email="daniel@danielgrunwald.de"/>
|
||||||
|
// <version>$Revision$</version>
|
||||||
|
// </file>
|
||||||
|
|
||||||
|
using System; |
||||||
|
using System.Collections.Generic; |
||||||
|
using System.Drawing; |
||||||
|
using System.Windows.Forms; |
||||||
|
|
||||||
|
using ICSharpCode.Core; |
||||||
|
using ICSharpCode.SharpDevelop.Project; |
||||||
|
|
||||||
|
namespace ICSharpCode.SharpDevelop.Gui |
||||||
|
{ |
||||||
|
public partial class EditAvailableConfigurationsDialog |
||||||
|
{ |
||||||
|
Solution solution; |
||||||
|
IProject project; |
||||||
|
bool editPlatforms; |
||||||
|
|
||||||
|
public EditAvailableConfigurationsDialog(Solution solution, bool editPlatforms) |
||||||
|
: this() |
||||||
|
{ |
||||||
|
this.solution = solution; |
||||||
|
this.editPlatforms = editPlatforms; |
||||||
|
InitList(); |
||||||
|
} |
||||||
|
|
||||||
|
public EditAvailableConfigurationsDialog(IProject project, bool editPlatforms) |
||||||
|
: this() |
||||||
|
{ |
||||||
|
this.project = project; |
||||||
|
this.solution = project.ParentSolution; |
||||||
|
this.editPlatforms = editPlatforms; |
||||||
|
InitList(); |
||||||
|
} |
||||||
|
|
||||||
|
void InitList() |
||||||
|
{ |
||||||
|
if (project != null) { |
||||||
|
if (editPlatforms) { |
||||||
|
ShowEntries(project.GetPlatformNames(), project.Platform); |
||||||
|
} else { |
||||||
|
ShowEntries(project.GetConfigurationNames(), project.Configuration); |
||||||
|
} |
||||||
|
} else { |
||||||
|
if (editPlatforms) { |
||||||
|
ShowEntries(solution.GetPlatformNames(), solution.Preferences.ActivePlatform); |
||||||
|
} else { |
||||||
|
ShowEntries(solution.GetConfigurationNames(), solution.Preferences.ActiveConfiguration); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
void ShowEntries(IEnumerable<string> list, string activeItem) |
||||||
|
{ |
||||||
|
string[] array = Linq.ToArray(list); |
||||||
|
listBox.Items.Clear(); |
||||||
|
listBox.Items.AddRange(array); |
||||||
|
if (listBox.Items.Count == 0) { |
||||||
|
throw new Exception("There must be at least one configuration/platform"); |
||||||
|
} |
||||||
|
listBox.SelectedIndex = Math.Max(Array.IndexOf(array, activeItem), 0); |
||||||
|
} |
||||||
|
|
||||||
|
private EditAvailableConfigurationsDialog() |
||||||
|
{ |
||||||
|
//
|
||||||
|
// The InitializeComponent() call is required for Windows Forms designer support.
|
||||||
|
//
|
||||||
|
InitializeComponent(); |
||||||
|
|
||||||
|
foreach (Control ctl in this.Controls) { |
||||||
|
ctl.Text = StringParser.Parse(ctl.Text); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
void RemoveButtonClick(object sender, EventArgs e) |
||||||
|
{ |
||||||
|
if (listBox.Items.Count == 1) { |
||||||
|
MessageService.ShowMessage("You cannot delete all configurations/platforms."); |
||||||
|
} |
||||||
|
string name = listBox.SelectedItem.ToString(); |
||||||
|
if (MessageService.AskQuestionFormatted("Do you really want to remove '{0}'?", |
||||||
|
new string[] { name })) |
||||||
|
{ |
||||||
|
if (project != null) { |
||||||
|
Remove(project, name, editPlatforms); |
||||||
|
} else { |
||||||
|
Remove(solution, name, editPlatforms); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
static void Remove(IProject project, string name, bool isPlatform) |
||||||
|
{ |
||||||
|
throw new NotImplementedException(); |
||||||
|
} |
||||||
|
|
||||||
|
static void Remove(Solution solution, string name, bool isPlatform) |
||||||
|
{ |
||||||
|
throw new NotImplementedException(); |
||||||
|
} |
||||||
|
|
||||||
|
void RenameButtonClick(object sender, EventArgs e) |
||||||
|
{ |
||||||
|
string oldName = listBox.SelectedItem.ToString(); |
||||||
|
string newName = MessageService.ShowInputBox("Rename", "Enter the new name:", oldName); |
||||||
|
if (string.IsNullOrEmpty(newName) || newName == oldName) |
||||||
|
return; |
||||||
|
if (!EnsureCorrectName(ref newName)) |
||||||
|
return; |
||||||
|
if (project != null) { |
||||||
|
Rename(project, oldName, newName); |
||||||
|
} else { |
||||||
|
if (editPlatforms) { |
||||||
|
solution.RenameSolutionPlatform(oldName, newName); |
||||||
|
} else { |
||||||
|
solution.RenameSolutionConfiguration(oldName, newName); |
||||||
|
} |
||||||
|
// Solution platform name => project platform name
|
||||||
|
foreach (IProject p in solution.Projects) { |
||||||
|
Rename(p, oldName, newName); |
||||||
|
} |
||||||
|
} |
||||||
|
InitList(); |
||||||
|
} |
||||||
|
|
||||||
|
void Rename(IProject project, string oldName, string newName) |
||||||
|
{ |
||||||
|
} |
||||||
|
|
||||||
|
void AddButtonClick(object sender, EventArgs e) |
||||||
|
{ |
||||||
|
throw new NotImplementedException(); |
||||||
|
} |
||||||
|
|
||||||
|
bool EnsureCorrectName(ref string newName) |
||||||
|
{ |
||||||
|
newName = newName.Trim(); |
||||||
|
if (editPlatforms && string.Equals(newName, "AnyCPU", StringComparison.InvariantCultureIgnoreCase)) |
||||||
|
newName = "Any CPU"; |
||||||
|
if (listBox.Items.Contains(newName)) { |
||||||
|
MessageService.ShowMessage("Duplicate name."); |
||||||
|
return false; |
||||||
|
} |
||||||
|
if (!FileUtility.IsValidDirectoryName(newName)) { |
||||||
|
MessageService.ShowMessage("The name was invalid."); |
||||||
|
return false; |
||||||
|
} |
||||||
|
return true; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
@ -1,129 +0,0 @@ |
|||||||
<?xml version="1.0" encoding="utf-8"?> |
|
||||||
<root> |
|
||||||
<!-- |
|
||||||
Microsoft ResX Schema |
|
||||||
|
|
||||||
Version 2.0 |
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format |
|
||||||
that is mostly human readable. The generation and parsing of the |
|
||||||
various data types are done through the TypeConverter classes |
|
||||||
associated with the data types. |
|
||||||
|
|
||||||
Example: |
|
||||||
|
|
||||||
... ado.net/XML headers & schema ... |
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader> |
|
||||||
<resheader name="version">2.0</resheader> |
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> |
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> |
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> |
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> |
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> |
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value> |
|
||||||
</data> |
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> |
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> |
|
||||||
<comment>This is a comment</comment> |
|
||||||
</data> |
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple |
|
||||||
name/value pairs. |
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a |
|
||||||
type or mimetype. Type corresponds to a .NET class that support |
|
||||||
text/value conversion through the TypeConverter architecture. |
|
||||||
Classes that don't support this are serialized and stored with the |
|
||||||
mimetype set. |
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the |
|
||||||
ResXResourceReader how to depersist the object. This is currently not |
|
||||||
extensible. For a given mimetype the value must be set accordingly: |
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format |
|
||||||
that the ResXResourceWriter will generate, however the reader can |
|
||||||
read any of the formats listed below. |
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64 |
|
||||||
value : The object must be serialized with |
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter |
|
||||||
: and then encoded with base64 encoding. |
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64 |
|
||||||
value : The object must be serialized with |
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter |
|
||||||
: and then encoded with base64 encoding. |
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64 |
|
||||||
value : The object must be serialized into a byte array |
|
||||||
: using a System.ComponentModel.TypeConverter |
|
||||||
: and then encoded with base64 encoding. |
|
||||||
--> |
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> |
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> |
|
||||||
<xsd:element name="root" msdata:IsDataSet="true"> |
|
||||||
<xsd:complexType> |
|
||||||
<xsd:choice maxOccurs="unbounded"> |
|
||||||
<xsd:element name="metadata"> |
|
||||||
<xsd:complexType> |
|
||||||
<xsd:sequence> |
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" /> |
|
||||||
</xsd:sequence> |
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" /> |
|
||||||
<xsd:attribute name="type" type="xsd:string" /> |
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" /> |
|
||||||
<xsd:attribute ref="xml:space" /> |
|
||||||
</xsd:complexType> |
|
||||||
</xsd:element> |
|
||||||
<xsd:element name="assembly"> |
|
||||||
<xsd:complexType> |
|
||||||
<xsd:attribute name="alias" type="xsd:string" /> |
|
||||||
<xsd:attribute name="name" type="xsd:string" /> |
|
||||||
</xsd:complexType> |
|
||||||
</xsd:element> |
|
||||||
<xsd:element name="data"> |
|
||||||
<xsd:complexType> |
|
||||||
<xsd:sequence> |
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> |
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> |
|
||||||
</xsd:sequence> |
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> |
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> |
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> |
|
||||||
<xsd:attribute ref="xml:space" /> |
|
||||||
</xsd:complexType> |
|
||||||
</xsd:element> |
|
||||||
<xsd:element name="resheader"> |
|
||||||
<xsd:complexType> |
|
||||||
<xsd:sequence> |
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> |
|
||||||
</xsd:sequence> |
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" /> |
|
||||||
</xsd:complexType> |
|
||||||
</xsd:element> |
|
||||||
</xsd:choice> |
|
||||||
</xsd:complexType> |
|
||||||
</xsd:element> |
|
||||||
</xsd:schema> |
|
||||||
<resheader name="resmimetype"> |
|
||||||
<value>text/microsoft-resx</value> |
|
||||||
</resheader> |
|
||||||
<resheader name="version"> |
|
||||||
<value>2.0</value> |
|
||||||
</resheader> |
|
||||||
<resheader name="reader"> |
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> |
|
||||||
</resheader> |
|
||||||
<resheader name="writer"> |
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> |
|
||||||
</resheader> |
|
||||||
<metadata name="projectNameColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> |
|
||||||
<value>True</value> |
|
||||||
</metadata> |
|
||||||
<metadata name="configurationColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> |
|
||||||
<value>True</value> |
|
||||||
</metadata> |
|
||||||
<metadata name="platformColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> |
|
||||||
<value>True</value> |
|
||||||
</metadata> |
|
||||||
</root> |
|
||||||
Loading…
Reference in new issue