From 70cc87063295faae565ae52c26a9042ccc1c2429 Mon Sep 17 00:00:00 2001 From: Siegfried Pammer Date: Mon, 13 Jan 2014 00:19:57 +0100 Subject: [PATCH] remove samples/ICSharpCode.Core.Demo --- .../AddInManager/AddInManager.addin | 74 -- .../AddInManager/AddInManager.csproj | 90 -- .../AddInManager/AddInManager.sln | 6 - .../AddInManager/AssemblyInfo.cs | 33 - .../AddInManager/Src/AboutForm.cs | 217 ----- .../AddInManager/Src/AboutForm.resx | 123 --- .../AddInManager/Src/AddInControl.cs | 192 ---- .../AddInManager/Src/AddInInstallBinding.cs | 39 - .../AddInManager/Src/Commands.cs | 152 --- .../AddInManager/Src/InstallableAddIn.cs | 123 --- .../AddInManager/Src/ManagerForm.cs | 920 ------------------ .../AddInManager/Src/ManagerForm.resx | 120 --- .../AddInManager/StringResources.de.resx | 217 ----- .../AddInManager/StringResources.resx | 218 ----- .../AddInManager/WizardBackground.png | Bin 16743 -> 0 bytes .../Base/AssemblyInfo.cs | 34 - .../ICSharpCode.Core.Demo/Base/Base.csproj | 84 -- samples/ICSharpCode.Core.Demo/Base/Base.sln | 6 - .../Base/FileCommands.cs | 74 -- .../Base/FileViewContent.cs | 148 --- .../Base/FormLocationHelper.cs | 68 -- .../Base/IClipboardHandler.cs | 22 - .../Base/IDisplayBinding.cs | 40 - .../Base/IUndoHandler.cs | 15 - .../Base/IViewContent.cs | 45 - .../ICSharpCode.Core.Demo/Base/InfoForm.cs | 233 ----- .../ICSharpCode.Core.Demo/Base/InfoForm.resx | 141 --- .../Base/TextViewContent.cs | 128 --- .../ICSharpCode.Core.Demo/Base/Workbench.cs | 141 --- .../ICSharpCode.Core.Demo.rtf | 29 - .../ICSharpCode.Core.Demo.sln | 54 - .../ICSharpCode.SharpZipLib.dll | Bin 143360 -> 0 bytes .../RichTextEditor/AssemblyInfo.cs | 27 - .../RichTextEditor/RichTextEditor.addin | 25 - .../RichTextEditor/RichTextEditor.cs | 125 --- .../RichTextEditor/RichTextEditor.csproj | 73 -- .../RichTextEditor/RichTextEditor.sln | 6 - .../Startup/AddIns/Base.addin | 93 -- .../Startup/AssemblyInfo.cs | 27 - .../Startup/ImageResources.resx | 277 ------ .../ICSharpCode.Core.Demo/Startup/Start.cs | 95 -- .../Startup/Startup.csproj | 87 -- .../ICSharpCode.Core.Demo/Startup/Startup.sln | 6 - .../Startup/StringResources.resx | 225 ----- .../ICSharpCode.Core.Demo/Startup/app.config | 19 - .../Startup/app.manifest | 22 - .../Startup/data/options/AppProperties.xml | 4 - .../resources/StringResources.de.resources | Bin 2057 -> 0 bytes .../ICSharpCode.Core.Demo/doc/copyright.txt | 20 - samples/ICSharpCode.Core.Demo/doc/license.txt | 496 ---------- src/Automated.proj | 10 - 51 files changed, 5423 deletions(-) delete mode 100644 samples/ICSharpCode.Core.Demo/AddInManager/AddInManager.addin delete mode 100755 samples/ICSharpCode.Core.Demo/AddInManager/AddInManager.csproj delete mode 100644 samples/ICSharpCode.Core.Demo/AddInManager/AddInManager.sln delete mode 100644 samples/ICSharpCode.Core.Demo/AddInManager/AssemblyInfo.cs delete mode 100644 samples/ICSharpCode.Core.Demo/AddInManager/Src/AboutForm.cs delete mode 100644 samples/ICSharpCode.Core.Demo/AddInManager/Src/AboutForm.resx delete mode 100644 samples/ICSharpCode.Core.Demo/AddInManager/Src/AddInControl.cs delete mode 100644 samples/ICSharpCode.Core.Demo/AddInManager/Src/AddInInstallBinding.cs delete mode 100644 samples/ICSharpCode.Core.Demo/AddInManager/Src/Commands.cs delete mode 100644 samples/ICSharpCode.Core.Demo/AddInManager/Src/InstallableAddIn.cs delete mode 100644 samples/ICSharpCode.Core.Demo/AddInManager/Src/ManagerForm.cs delete mode 100644 samples/ICSharpCode.Core.Demo/AddInManager/Src/ManagerForm.resx delete mode 100755 samples/ICSharpCode.Core.Demo/AddInManager/StringResources.de.resx delete mode 100755 samples/ICSharpCode.Core.Demo/AddInManager/StringResources.resx delete mode 100644 samples/ICSharpCode.Core.Demo/AddInManager/WizardBackground.png delete mode 100644 samples/ICSharpCode.Core.Demo/Base/AssemblyInfo.cs delete mode 100644 samples/ICSharpCode.Core.Demo/Base/Base.csproj delete mode 100644 samples/ICSharpCode.Core.Demo/Base/Base.sln delete mode 100644 samples/ICSharpCode.Core.Demo/Base/FileCommands.cs delete mode 100644 samples/ICSharpCode.Core.Demo/Base/FileViewContent.cs delete mode 100644 samples/ICSharpCode.Core.Demo/Base/FormLocationHelper.cs delete mode 100644 samples/ICSharpCode.Core.Demo/Base/IClipboardHandler.cs delete mode 100644 samples/ICSharpCode.Core.Demo/Base/IDisplayBinding.cs delete mode 100644 samples/ICSharpCode.Core.Demo/Base/IUndoHandler.cs delete mode 100644 samples/ICSharpCode.Core.Demo/Base/IViewContent.cs delete mode 100644 samples/ICSharpCode.Core.Demo/Base/InfoForm.cs delete mode 100644 samples/ICSharpCode.Core.Demo/Base/InfoForm.resx delete mode 100644 samples/ICSharpCode.Core.Demo/Base/TextViewContent.cs delete mode 100644 samples/ICSharpCode.Core.Demo/Base/Workbench.cs delete mode 100644 samples/ICSharpCode.Core.Demo/ICSharpCode.Core.Demo.rtf delete mode 100644 samples/ICSharpCode.Core.Demo/ICSharpCode.Core.Demo.sln delete mode 100755 samples/ICSharpCode.Core.Demo/RequiredLibraries/ICSharpCode.SharpZipLib.dll delete mode 100644 samples/ICSharpCode.Core.Demo/RichTextEditor/AssemblyInfo.cs delete mode 100644 samples/ICSharpCode.Core.Demo/RichTextEditor/RichTextEditor.addin delete mode 100644 samples/ICSharpCode.Core.Demo/RichTextEditor/RichTextEditor.cs delete mode 100644 samples/ICSharpCode.Core.Demo/RichTextEditor/RichTextEditor.csproj delete mode 100644 samples/ICSharpCode.Core.Demo/RichTextEditor/RichTextEditor.sln delete mode 100644 samples/ICSharpCode.Core.Demo/Startup/AddIns/Base.addin delete mode 100644 samples/ICSharpCode.Core.Demo/Startup/AssemblyInfo.cs delete mode 100755 samples/ICSharpCode.Core.Demo/Startup/ImageResources.resx delete mode 100755 samples/ICSharpCode.Core.Demo/Startup/Start.cs delete mode 100644 samples/ICSharpCode.Core.Demo/Startup/Startup.csproj delete mode 100644 samples/ICSharpCode.Core.Demo/Startup/Startup.sln delete mode 100755 samples/ICSharpCode.Core.Demo/Startup/StringResources.resx delete mode 100644 samples/ICSharpCode.Core.Demo/Startup/app.config delete mode 100755 samples/ICSharpCode.Core.Demo/Startup/app.manifest delete mode 100644 samples/ICSharpCode.Core.Demo/Startup/data/options/AppProperties.xml delete mode 100644 samples/ICSharpCode.Core.Demo/Startup/data/resources/StringResources.de.resources delete mode 100644 samples/ICSharpCode.Core.Demo/doc/copyright.txt delete mode 100644 samples/ICSharpCode.Core.Demo/doc/license.txt diff --git a/samples/ICSharpCode.Core.Demo/AddInManager/AddInManager.addin b/samples/ICSharpCode.Core.Demo/AddInManager/AddInManager.addin deleted file mode 100644 index 56f4c8a462..0000000000 --- a/samples/ICSharpCode.Core.Demo/AddInManager/AddInManager.addin +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/samples/ICSharpCode.Core.Demo/AddInManager/AddInManager.csproj b/samples/ICSharpCode.Core.Demo/AddInManager/AddInManager.csproj deleted file mode 100755 index d9df01e5e9..0000000000 --- a/samples/ICSharpCode.Core.Demo/AddInManager/AddInManager.csproj +++ /dev/null @@ -1,90 +0,0 @@ - - - - Library - ICSharpCode.AddInManager - ICSharpCode.AddInManager - Debug - AnyCPU - {8B4FE9EF-5899-4E84-88DE-C37D021A0658} - False - False - False - Auto - 4194304 - AnyCPU - 4096 - 4 - false - ..\bin\AddIns\AddInManager\ - v4.0 - - - False - STANDALONE;SHOWALLADDINS;DEBUG;TRACE - true - Full - True - - - True - STANDALONE;SHOWALLADDINS;TRACE - false - None - False - - - - - 3.5 - - - - - - ..\RequiredLibraries\ICSharpCode.SharpZipLib.dll - False - - - 3.5 - - - - - - - - ManagerForm.cs - - - - - - AboutForm.cs - - - - - - Never - - - - - Always - - - {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} - ICSharpCode.Core - False - - - - - {857CA1A3-FC88-4BE0-AB6A-D1EE772AB288} - ICSharpCode.Core.WinForms - False - - - - \ No newline at end of file diff --git a/samples/ICSharpCode.Core.Demo/AddInManager/AddInManager.sln b/samples/ICSharpCode.Core.Demo/AddInManager/AddInManager.sln deleted file mode 100644 index 97272ec169..0000000000 --- a/samples/ICSharpCode.Core.Demo/AddInManager/AddInManager.sln +++ /dev/null @@ -1,6 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 9.00 -# SharpDevelop 2.0.0.936 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AddInManager", "AddInManager.csproj", "{8B4FE9EF-5899-4E84-88DE-C37D021A0658}" -EndProject -Global -EndGlobal diff --git a/samples/ICSharpCode.Core.Demo/AddInManager/AssemblyInfo.cs b/samples/ICSharpCode.Core.Demo/AddInManager/AssemblyInfo.cs deleted file mode 100644 index 7e5bd39535..0000000000 --- a/samples/ICSharpCode.Core.Demo/AddInManager/AssemblyInfo.cs +++ /dev/null @@ -1,33 +0,0 @@ -// -// -// -// -// $Revision$ -// - -using System.Reflection; -using System.Runtime.CompilerServices; - -// Information about this assembly is defined by the following -// attributes. -// -// change them to the information which is associated with the assembly -// you compile. - -[assembly: AssemblyTitle("AddInManager")] -[assembly: AssemblyDescription("AddInManager for ICSharpCode.Core")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("ic#code")] -[assembly: AssemblyProduct("SharpDevelop")] -[assembly: AssemblyCopyright("2005 AlphaSierraPapa")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// The assembly version has following format : -// -// Major.Minor.Build.Revision -// -// You can specify all values by your own or you can build default build and revision -// numbers with the '*' character (the default): - -[assembly: AssemblyVersion("2.0.0.936")] diff --git a/samples/ICSharpCode.Core.Demo/AddInManager/Src/AboutForm.cs b/samples/ICSharpCode.Core.Demo/AddInManager/Src/AboutForm.cs deleted file mode 100644 index c9ff7d56f5..0000000000 --- a/samples/ICSharpCode.Core.Demo/AddInManager/Src/AboutForm.cs +++ /dev/null @@ -1,217 +0,0 @@ -// -// -// -// -// $Revision$ -// - -using System; -using System.Collections.Generic; -using System.Drawing; -using System.Windows.Forms; -using ICSharpCode.Core; - -namespace ICSharpCode.AddInManager -{ - public class AboutForm : System.Windows.Forms.Form - { - Font boldFont; - - public AboutForm(AddIn addIn) - { - // - // The InitializeComponent() call is required for Windows Forms designer support. - // - InitializeComponent(); - - boldFont = new Font(Font, FontStyle.Bold); - - List titles = new List(); - List values = new List(); - - this.Text = addIn.Name; - closeButton.Text = ResourceService.GetString("Global.CloseButtonText"); - - titles.Add("AddIn name"); - values.Add(addIn.Name); - - if (addIn.Manifest.PrimaryVersion != null && addIn.Manifest.PrimaryVersion.ToString() != "0.0.0.0") { - titles.Add("Version"); - values.Add(addIn.Manifest.PrimaryVersion.ToString()); - } - - if (addIn.Properties["author"].Length > 0) { - titles.Add("Author"); - values.Add(addIn.Properties["author"]); - } - - if (addIn.Properties["copyright"].Length > 0) { - if (!addIn.Properties["copyright"].StartsWith("prj:")) { - titles.Add("Copyright"); - values.Add(addIn.Properties["copyright"]); - } - } - - if (addIn.Properties["license"].Length > 0) { - titles.Add("License"); - values.Add(addIn.Properties["license"]); - } - - if (addIn.Properties["url"].Length > 0) { - titles.Add("Website"); - values.Add(addIn.Properties["url"]); - } - - if (addIn.Properties["description"].Length > 0) { - titles.Add("Description"); - values.Add(addIn.Properties["description"]); - } - - titles.Add("AddIn file"); - values.Add(System.IO.Path.GetFullPath(addIn.FileName)); - - titles.Add("Internal name"); - values.Add(addIn.Manifest.PrimaryIdentity); - - table.RowCount = titles.Count + 1; - table.RowStyles.Clear(); - for (int i = 0; i < titles.Count; i++) { - table.RowStyles.Add(new RowStyle(SizeType.AutoSize)); - AddRow(titles[i], values[i], i); - } - } - - protected override void Dispose(bool disposing) - { - base.Dispose(disposing); - if (disposing) { - if (boldFont != null) - boldFont.Dispose(); - } - } - - void AddRow(string desc, string val, int rowIndex) - { - Label descLabel = new Label(); - descLabel.AutoSize = true; - descLabel.Anchor = AnchorStyles.Top | AnchorStyles.Right; - descLabel.Font = boldFont; - descLabel.Text = StringParser.Parse(desc) + ":"; - table.Controls.Add(descLabel, 0, rowIndex); - - Label valLabel; - string link = GetLink(val); - if (link != null) { - LinkLabel linkLabel = new LinkLabel(); - linkLabel.LinkClicked += delegate { - try { - System.Diagnostics.Process.Start(link); - } catch (Exception ex) { - MessageService.ShowMessage(ex.ToString()); - } - }; - valLabel = linkLabel; - } else { - valLabel = new Label(); - } - valLabel.AutoSize = true; - valLabel.Text = val; - table.Controls.Add(valLabel, 1, rowIndex); - } - - string GetLink(string text) - { - switch (text) { - case "GNU General Public License": - case "GPL": - return "http://www.gnu.org/licenses/gpl.html"; - case "LGPL": - case "GNU Lesser General Public License": - return "http://www.gnu.org/licenses/lgpl.html"; - default: - if (text.StartsWith("http://")) - return text; - if (text.StartsWith("www.")) - return "http://" + text; - return null; - } - } - - #region Windows Forms Designer generated code - /// - /// 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. - /// - private void InitializeComponent() - { - System.Windows.Forms.Panel bottomPanel; - this.closeButton = new System.Windows.Forms.Button(); - this.table = new System.Windows.Forms.TableLayoutPanel(); - bottomPanel = new System.Windows.Forms.Panel(); - bottomPanel.SuspendLayout(); - this.SuspendLayout(); - // - // bottomPanel - // - bottomPanel.Controls.Add(this.closeButton); - bottomPanel.Dock = System.Windows.Forms.DockStyle.Bottom; - bottomPanel.Location = new System.Drawing.Point(0, 233); - bottomPanel.Name = "bottomPanel"; - bottomPanel.Size = new System.Drawing.Size(351, 35); - bottomPanel.TabIndex = 0; - // - // closeButton - // - this.closeButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.closeButton.Location = new System.Drawing.Point(264, 6); - this.closeButton.Name = "closeButton"; - this.closeButton.Size = new System.Drawing.Size(75, 23); - this.closeButton.TabIndex = 0; - this.closeButton.Text = "Close"; - this.closeButton.UseCompatibleTextRendering = true; - this.closeButton.UseVisualStyleBackColor = true; - this.closeButton.Click += new System.EventHandler(this.CloseButtonClick); - // - // table - // - this.table.ColumnCount = 2; - this.table.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); - this.table.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); - this.table.Dock = System.Windows.Forms.DockStyle.Fill; - this.table.Location = new System.Drawing.Point(0, 8); - this.table.Name = "table"; - this.table.RowCount = 2; - this.table.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); - this.table.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); - this.table.Size = new System.Drawing.Size(351, 225); - this.table.TabIndex = 1; - // - // AboutForm - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.BackColor = System.Drawing.SystemColors.Info; - this.ClientSize = new System.Drawing.Size(351, 268); - this.Controls.Add(this.table); - this.Controls.Add(bottomPanel); - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "AboutForm"; - this.Padding = new System.Windows.Forms.Padding(0, 8, 0, 0); - this.ShowInTaskbar = false; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; - this.Text = "AboutForm"; - bottomPanel.ResumeLayout(false); - this.ResumeLayout(false); - } - private System.Windows.Forms.Button closeButton; - private System.Windows.Forms.TableLayoutPanel table; - #endregion - - void CloseButtonClick(object sender, EventArgs e) - { - Close(); - } - } -} diff --git a/samples/ICSharpCode.Core.Demo/AddInManager/Src/AboutForm.resx b/samples/ICSharpCode.Core.Demo/AddInManager/Src/AboutForm.resx deleted file mode 100644 index 168a2f36bd..0000000000 --- a/samples/ICSharpCode.Core.Demo/AddInManager/Src/AboutForm.resx +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - False - - \ No newline at end of file diff --git a/samples/ICSharpCode.Core.Demo/AddInManager/Src/AddInControl.cs b/samples/ICSharpCode.Core.Demo/AddInManager/Src/AddInControl.cs deleted file mode 100644 index 0863cb7d84..0000000000 --- a/samples/ICSharpCode.Core.Demo/AddInManager/Src/AddInControl.cs +++ /dev/null @@ -1,192 +0,0 @@ -// -// -// -// -// $Revision$ -// - -using System; -using System.Drawing; -using System.Drawing.Drawing2D; -using System.Windows.Forms; - -using ICSharpCode.Core; -using ICSharpCode.Core.WinForms; - -namespace ICSharpCode.AddInManager -{ - public class AddInControl : Control - { - AddIn addIn; - bool isExternal; - - public AddIn AddIn { - get { - return addIn; - } - } - - public AddInControl(AddIn addIn) - { - this.addIn = addIn; - this.BackColor = SystemColors.Window; - this.ContextMenuStrip = MenuService.CreateContextMenu(this, "/AddIns/AddInManager/ContextMenu"); - - isExternal = !FileUtility.IsBaseDirectory(FileUtility.ApplicationRootPath, addIn.FileName) - && !FileUtility.IsBaseDirectory(PropertyService.ConfigDirectory, addIn.FileName); - - this.ClientSize = new Size(100, isExternal ? 35 + pathHeight : 35); - this.SetStyle(ControlStyles.Selectable, true); - this.SetStyle(ControlStyles.UserPaint, true); - this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true); - this.SetStyle(ControlStyles.ResizeRedraw, true); - this.SetStyle(ControlStyles.AllPaintingInWmPaint, true); - } - - bool selected; - - public bool Selected { - get { - return selected; - } - set { - if (selected != value) { - selected = value; - Invalidate(); - } - } - } - - protected override void OnClick(EventArgs e) - { - base.OnClick(e); - Focus(); - } - - Color Mix(Color c1, Color c2, double perc) - { - double p1 = 1 - perc; - double p2 = perc; - return Color.FromArgb((int)(c1.R * p1 + c2.R * p2), - (int)(c1.G * p1 + c2.G * p2), - (int)(c1.B * p1 + c2.B * p2)); - } - - protected override void OnPaint(PaintEventArgs e) - { - Graphics g = e.Graphics; - Rectangle bounds = this.ClientRectangle; - bounds.Offset(1, 1); - bounds.Inflate(-2, -2); - Color startColor = SystemColors.ControlLightLight; - Color endColor = SystemColors.Control; - if (selected) { - startColor = Mix(SystemColors.ControlLightLight, SystemColors.Highlight, 0.1); - endColor = Mix(SystemColors.ControlLightLight, SystemColors.Highlight, 0.65); - } - Brush gradient = new LinearGradientBrush(bounds, - startColor, - endColor, - LinearGradientMode.ForwardDiagonal); - - GraphicsPath path = new GraphicsPath(); - - const int egdeRadius = 3; - const int innerMargin = egdeRadius + 2; - - RectangleF arcRect = new RectangleF(bounds.Location, new SizeF(egdeRadius * 2, egdeRadius * 2)); - //top left Arc - path.AddArc(arcRect, 180, 90); - path.AddLine(bounds.X + egdeRadius, bounds.Y, bounds.Right - egdeRadius, bounds.Y); - // top right arc - arcRect.X = bounds.Right - egdeRadius * 2; - path.AddArc(arcRect, 270, 90); - path.AddLine(bounds.Right, bounds.Left + egdeRadius, bounds.Right, bounds.Bottom - egdeRadius); - // bottom right arc - arcRect.Y = bounds.Bottom - egdeRadius * 2; - path.AddArc(arcRect, 0, 90); - path.AddLine(bounds.X + egdeRadius, bounds.Bottom, bounds.Right - egdeRadius, bounds.Bottom); - // bottom left arc - arcRect.X = bounds.Left; - path.AddArc(arcRect, 90, 90); - path.AddLine(bounds.X, bounds.Left + egdeRadius, bounds.X, bounds.Bottom - egdeRadius); - - g.FillPath(gradient, path); - g.DrawPath(SystemPens.ControlText, path); - path.Dispose(); - gradient.Dispose(); - Brush textBrush; - string description = GetText(out textBrush); - int titleWidth; - using (Font boldFont = new Font("Arial", 8, FontStyle.Bold)) { - g.DrawString(addIn.Name, boldFont, textBrush, innerMargin, innerMargin); - titleWidth = (int)g.MeasureString(addIn.Name, boldFont).Width + 1; - } - if (addIn.Version != null && addIn.Version.ToString() != "0.0.0.0") { - g.DrawString(addIn.Version.ToString(), Font, textBrush, innerMargin + titleWidth + 4, innerMargin); - } - RectangleF textBounds = bounds; - textBounds.Offset(innerMargin, innerMargin); - textBounds.Inflate(-innerMargin * 2, -innerMargin * 2 + 2); - if (isExternal) - textBounds.Height -= pathHeight; - using (StringFormat sf = new StringFormat(StringFormatFlags.LineLimit)) { - sf.Trimming = StringTrimming.EllipsisWord; - g.DrawString(description, Font, textBrush, textBounds, sf); - } - if (isExternal) { - textBounds.Y = textBounds.Bottom + 2; - textBounds.Height = pathHeight + 2; - using (Font font = new Font(Font.Name, 7, FontStyle.Italic)) { - using (StringFormat sf = new StringFormat(StringFormatFlags.NoWrap)) { - sf.Trimming = StringTrimming.EllipsisPath; - sf.Alignment = StringAlignment.Far; - g.DrawString(addIn.FileName, font, - selected ? SystemBrushes.HighlightText : SystemBrushes.ControlText, - textBounds, sf); - } - } - } - } - - const int pathHeight = 10; - - string GetText(out Brush textBrush) - { - switch (addIn.Action) { - case AddInAction.Enable: - if (addIn.Enabled) { - textBrush = SystemBrushes.ControlText; - return addIn.Properties["description"]; - } else { - textBrush = SystemBrushes.ActiveCaption; - return ResourceService.GetString("AddInManager.AddInEnabled"); - } - case AddInAction.Disable: - textBrush = SystemBrushes.GrayText; - if (addIn.Enabled) - return ResourceService.GetString("AddInManager.AddInWillBeDisabled"); - else - return ResourceService.GetString("AddInManager.AddInDisabled"); - case AddInAction.Install: - textBrush = SystemBrushes.ActiveCaption; - return ResourceService.GetString("AddInManager.AddInInstalled"); - case AddInAction.Uninstall: - textBrush = SystemBrushes.GrayText; - return ResourceService.GetString("AddInManager.AddInRemoved"); - case AddInAction.Update: - textBrush = SystemBrushes.ActiveCaption; - return ResourceService.GetString("AddInManager.AddInUpdated"); - case AddInAction.InstalledTwice: - textBrush = Brushes.Red; - return ResourceService.GetString("AddInManager.AddInInstalledTwice"); - case AddInAction.DependencyError: - textBrush = Brushes.Red; - return ResourceService.GetString("AddInManager.AddInDependencyFailed"); - default: - textBrush = Brushes.Yellow; - return addIn.Action.ToString(); - } - } - } -} diff --git a/samples/ICSharpCode.Core.Demo/AddInManager/Src/AddInInstallBinding.cs b/samples/ICSharpCode.Core.Demo/AddInManager/Src/AddInInstallBinding.cs deleted file mode 100644 index 9415660aed..0000000000 --- a/samples/ICSharpCode.Core.Demo/AddInManager/Src/AddInInstallBinding.cs +++ /dev/null @@ -1,39 +0,0 @@ -// -// -// -// -// $Revision$ -// - -using System; -using ICSharpCode.Core; - -namespace ICSharpCode.AddInManager -{ - #if !STANDALONE - public class AddInInstallBinding : IDisplayBinding - { - public bool CanCreateContentForFile(string fileName) - { - return true; - } - - public ICSharpCode.SharpDevelop.Gui.IViewContent CreateContentForFile(string fileName) - { - ManagerForm.ShowForm(); - ManagerForm.Instance.ShowInstallableAddIns(new string[] { fileName }); - return null; - } - - public bool CanCreateContentForLanguage(string languageName) - { - return false; - } - - public ICSharpCode.SharpDevelop.Gui.IViewContent CreateContentForLanguage(string languageName, string content) - { - throw new NotImplementedException(); - } - } - #endif -} diff --git a/samples/ICSharpCode.Core.Demo/AddInManager/Src/Commands.cs b/samples/ICSharpCode.Core.Demo/AddInManager/Src/Commands.cs deleted file mode 100644 index 676d685f5d..0000000000 --- a/samples/ICSharpCode.Core.Demo/AddInManager/Src/Commands.cs +++ /dev/null @@ -1,152 +0,0 @@ -// -// -// -// -// $Revision$ -// - -using System; -using System.Collections.Generic; -using System.Drawing; -using System.Windows.Forms; -using ICSharpCode.Core; - -namespace ICSharpCode.AddInManager -{ - public class ShowCommand : AbstractMenuCommand - { - #if STANDALONE - static bool resourcesRegistered; - #endif - - public override void Run() - { - #if STANDALONE - if (!resourcesRegistered) { - resourcesRegistered = true; - ResourceService.RegisterStrings("ICSharpCode.AddInManager.StringResources", typeof(ShowCommand).Assembly); - } - #endif - ManagerForm.ShowForm(); - } - } - - public class AddInManagerAddInStateConditionEvaluator : IConditionEvaluator - { - public bool IsValid(object caller, Condition condition) - { - string states = condition.Properties["states"]; - string action = ((AddInControl)caller).AddIn.Action.ToString(); - foreach (string state in states.Split(',')) { - if (state == action) - return true; - } - return false; - } - } - - public class DisableCommand : AbstractMenuCommand - { - public override void Run() - { - ManagerForm.Instance.TryRunAction(((AddInControl)Owner).AddIn, AddInAction.Disable); - } - } - - public class EnableCommand : AbstractMenuCommand - { - public override void Run() - { - ManagerForm.Instance.TryRunAction(((AddInControl)Owner).AddIn, AddInAction.Enable); - } - } - - public class AbortInstallCommand : AbstractMenuCommand - { - public override void Run() - { - ManagerForm.Instance.TryRunAction(((AddInControl)Owner).AddIn, AddInAction.Uninstall); - } - } - - public class AbortUpdateCommand : AbstractMenuCommand - { - public override void Run() - { - ManagerForm.Instance.TryRunAction(((AddInControl)Owner).AddIn, AddInAction.InstalledTwice); - } - } - - public class UninstallCommand : AbstractMenuCommand - { - public override void Run() - { - ManagerForm.Instance.TryUninstall(((AddInControl)Owner).AddIn); - } - } - - public class OpenHomepageCommand : AbstractMenuCommand - { - public override bool IsEnabled { - get { - return ((AddInControl)Owner).AddIn.Properties["url"].Length > 0; - } - } - - public override void Run() - { - #if STANDALONE - try { - System.Diagnostics.Process.Start(((AddInControl)Owner).AddIn.Properties["url"]); - } catch {} - #else - FileService.OpenFile(((AddInControl)Owner).AddIn.Properties["url"]); - #endif - ManagerForm.Instance.Close(); - } - } - - public class AboutCommand : AbstractMenuCommand - { - public override void Run() - { - using (AboutForm form = new AboutForm(((AddInControl)Owner).AddIn)) { - form.ShowDialog(ManagerForm.Instance); - } - } - } - - public class OptionsCommand : AbstractMenuCommand - { - public override bool IsEnabled { - get { - #if !STANDALONE - AddIn addIn = ((AddInControl)Owner).AddIn; - if (addIn.Enabled) { - foreach (KeyValuePair pair in addIn.Paths) { - if (pair.Key.StartsWith("/SharpDevelop/Dialogs/OptionsDialog")) { - return true; - } - } - } - #endif - return false; - } - } - - public override void Run() - { - #if !STANDALONE - AddIn addIn = ((AddInControl)Owner).AddIn; - AddInTreeNode dummyNode = new AddInTreeNode(); - foreach (KeyValuePair pair in addIn.Paths) { - if (pair.Key.StartsWith("/SharpDevelop/Dialogs/OptionsDialog")) { - dummyNode.Codons.AddRange(pair.Value.Codons); - } - } - ICSharpCode.SharpDevelop.Commands.OptionsCommand.ShowTabbedOptions(addIn.Name + " " + ResourceService.GetString("AddInManager.Options"), - dummyNode); - #endif - } - } -} diff --git a/samples/ICSharpCode.Core.Demo/AddInManager/Src/InstallableAddIn.cs b/samples/ICSharpCode.Core.Demo/AddInManager/Src/InstallableAddIn.cs deleted file mode 100644 index a1ba88521b..0000000000 --- a/samples/ICSharpCode.Core.Demo/AddInManager/Src/InstallableAddIn.cs +++ /dev/null @@ -1,123 +0,0 @@ -// -// -// -// -// $Revision$ -// - -using System; -using System.Collections.Generic; -using System.IO; -using ICSharpCode.Core; -using ICSharpCode.SharpZipLib.Zip; - -namespace ICSharpCode.AddInManager -{ - public class InstallableAddIn - { - string fileName; - bool isPackage; - AddIn addIn; - - public AddIn AddIn { - get { - return addIn; - } - } - - public InstallableAddIn(string fileName, bool isPackage) - { - this.fileName = fileName; - this.isPackage = isPackage; - if (isPackage) { - ZipFile file = new ZipFile(fileName); - try { - LoadAddInFromZip(file); - } finally { - file.Close(); - } - } else { - addIn = AddIn.Load(fileName); - } - if (addIn.Manifest.PrimaryIdentity == null) - throw new AddInLoadException("The AddIn must have an for use with the AddIn-Manager."); - } - - void LoadAddInFromZip(ZipFile file) - { - ZipEntry addInEntry = null; - foreach (ZipEntry entry in file) { - if (entry.Name.EndsWith(".addin")) { - if (addInEntry != null) - throw new AddInLoadException("The package may only contain one .addin file."); - addInEntry = entry; - } - } - if (addInEntry == null) - throw new AddInLoadException("The package must contain one .addin file."); - using (Stream s = file.GetInputStream(addInEntry)) { - using (StreamReader r = new StreamReader(s)) { - addIn = AddIn.Load(r); - } - } - } - - public void Install(bool isUpdate) - { - foreach (string identity in addIn.Manifest.Identities.Keys) { - ICSharpCode.Core.AddInManager.AbortRemoveUserAddInOnNextStart(identity); - } - if (isPackage) { - string targetDir = Path.Combine(ICSharpCode.Core.AddInManager.AddInInstallTemp, - addIn.Manifest.PrimaryIdentity); - if (Directory.Exists(targetDir)) - Directory.Delete(targetDir, true); - Directory.CreateDirectory(targetDir); - FastZip fastZip = new FastZip(); - fastZip.CreateEmptyDirectories = true; - fastZip.ExtractZip(fileName, targetDir, null); - - addIn.Action = AddInAction.Install; - if (!isUpdate) { - AddInTree.InsertAddIn(addIn); - } - } else { - ICSharpCode.Core.AddInManager.AddExternalAddIns(new AddIn[] { addIn }); - } - } - - public static void CancelUpdate(IList addIns) - { - foreach (AddIn addIn in addIns) { - foreach (string identity in addIn.Manifest.Identities.Keys) { - // delete from installation temp (if installation or update is pending) - string targetDir = Path.Combine(ICSharpCode.Core.AddInManager.AddInInstallTemp, - identity); - if (Directory.Exists(targetDir)) - Directory.Delete(targetDir, true); - } - } - } - - public static void Uninstall(IList addIns) - { - CancelUpdate(addIns); - foreach (AddIn addIn in addIns) { - foreach (string identity in addIn.Manifest.Identities.Keys) { - // remove the user AddIn - string targetDir = Path.Combine(ICSharpCode.Core.AddInManager.UserAddInPath, identity); - if (Directory.Exists(targetDir)) { - if (!addIn.Enabled) { - try { - Directory.Delete(targetDir, true); - continue; - } catch { - } - } - ICSharpCode.Core.AddInManager.RemoveUserAddInOnNextStart(identity); - } - } - } - } - } -} diff --git a/samples/ICSharpCode.Core.Demo/AddInManager/Src/ManagerForm.cs b/samples/ICSharpCode.Core.Demo/AddInManager/Src/ManagerForm.cs deleted file mode 100644 index b019f7ef7b..0000000000 --- a/samples/ICSharpCode.Core.Demo/AddInManager/Src/ManagerForm.cs +++ /dev/null @@ -1,920 +0,0 @@ -// -// -// -// -// $Revision$ -// - -using System; -using System.Collections.Generic; -using System.Drawing; -using System.IO; -using System.Text; -using System.Windows.Forms; - -using ICSharpCode.Core; -using ICSharpCode.Core.WinForms; - -namespace ICSharpCode.AddInManager -{ - public class ManagerForm : System.Windows.Forms.Form - { - #region Form Initialization - static ManagerForm instance; - - public static ManagerForm Instance { - get { - return instance; - } - } - - public static void ShowForm() - { - if (instance == null) { - instance = new ManagerForm(); - #if !STANDALONE - instance.Owner = ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainForm; - #endif - instance.Show(); - } else { - instance.Activate(); - } - } - - public ManagerForm() - { - // - // The InitializeComponent() call is required for Windows Forms designer support. - // - InitializeComponent(); - - #if !STANDALONE - ICSharpCode.SharpDevelop.Gui.FormLocationHelper.Apply(this, "AddInManager.WindowBounds", true); - #endif - - #if STANDALONE - actionFlowLayoutPanel.BackgroundImage = new Bitmap(typeof(ManagerForm).Assembly.GetManifestResourceStream("ICSharpCode.AddInManager.WizardBackground.png")); - #else - actionFlowLayoutPanel.BackgroundImage = ResourceService.GetBitmap("GeneralWizardBackground"); - #endif - - installButton.Text = ResourceService.GetString("AddInManager.InstallButton"); - uninstallButton.Text = ResourceService.GetString("AddInManager.ActionUninstall"); - closeButton.Text = ResourceService.GetString("Global.CloseButtonText"); - showPreinstalledAddInsCheckBox.Text = ResourceService.GetString("AddInManager.ShowPreinstalledAddIns"); - this.Text = ResourceService.GetString("AddInManager.Title"); - CreateAddInList(); - } - - void OnSplitContainerPanel1Paint(object sender, PaintEventArgs e) - { - if (visibleAddInCount == 0) { - Rectangle rect = splitContainer.Panel1.ClientRectangle; - rect.Offset(16, 16); - rect.Inflate(-32, -32); - e.Graphics.DrawString(ResourceService.GetString("AddInManager.NoAddInsInstalled"), - Font, SystemBrushes.WindowText, rect); - } - } - - void CreateAddInList() - { - Stack stack = new Stack(); - int index = 0; - AddInControl addInControl; - - List addInList = new List(AddInTree.AddIns); - addInList.Sort(delegate(AddIn a, AddIn b) { - return a.Name.CompareTo(b.Name); - }); - foreach (AddIn addIn in addInList) { - string identity = addIn.Manifest.PrimaryIdentity; - if (identity == null || addIn.Properties["addInManagerHidden"] == "true") - continue; - addInControl = new AddInControl(addIn); - addInControl.Dock = DockStyle.Top; - addInControl.TabIndex = index++; - stack.Push(addInControl); - addInControl.Enter += OnControlEnter; - addInControl.Click += OnControlClick; - } - while (stack.Count > 0) { - splitContainer.Panel1.Controls.Add(stack.Pop()); - } - ShowPreinstalledAddInsCheckBoxCheckedChanged(null, null); - #if SHOWALLADDINS - showPreinstalledAddInsCheckBox.Visible = false; - showPreinstalledAddInsCheckBox.Checked = true; - #endif - splitContainer.Panel2Collapsed = true; - } - - void RefreshAddInList() - { - List oldSelected = selected; - foreach (Control ctl in splitContainer.Panel1.Controls) { - ctl.Dispose(); - } - splitContainer.Panel1.Controls.Clear(); - CreateAddInList(); - if (oldSelected != null) { - foreach (AddInControl ctl in splitContainer.Panel1.Controls) { - if (oldSelected.Contains(ctl.AddIn)) - ctl.Selected = true; - } - } - UpdateActionBox(); - } - #endregion - - #region AddInList-Management - int visibleAddInCount = 0; - - void ShowPreinstalledAddInsCheckBoxCheckedChanged(object sender, EventArgs e) - { - visibleAddInCount = 0; - foreach (AddInControl ctl in splitContainer.Panel1.Controls) { - ctl.Selected = false; - bool visible; - if (showPreinstalledAddInsCheckBox.Checked) { - visible = true; - } else { - if (ctl == oldFocus) - oldFocus = null; - visible = !FileUtility.IsBaseDirectory(FileUtility.ApplicationRootPath, ctl.AddIn.FileName); - } - if (visible) - visibleAddInCount += 1; - ctl.Visible = visible; - } - UpdateActionBox(); - } - - void OnControlClick(object sender, EventArgs e) - { - // clicking again on already focused item: - // remove selection of other items / or with Ctrl: toggle selection - if (((Control)sender).Focused) - OnControlEnter(sender, e); - } - - AddInControl oldFocus; - bool ignoreFocusChange; - - void OnControlEnter(object sender, EventArgs e) - { - if (ignoreFocusChange) - return; - bool ctrl = (ModifierKeys & Keys.Control) == Keys.Control; - if ((ModifierKeys & Keys.Shift) == Keys.Shift && sender != oldFocus) { - bool sel = false; - foreach (AddInControl ctl in splitContainer.Panel1.Controls) { - if (!ctl.Visible) continue; - if (ctl == sender || ctl == oldFocus) { - sel = !sel; - ctl.Selected = true; - } else { - if (sel || !ctrl) { - ctl.Selected = sel; - } - } - } - } else if (ctrl) { - foreach (AddInControl ctl in splitContainer.Panel1.Controls) { - if (ctl == sender) - ctl.Selected = !ctl.Selected; - } - oldFocus = (AddInControl)sender; - } else { - foreach (AddInControl ctl in splitContainer.Panel1.Controls) { - ctl.Selected = ctl == sender; - } - oldFocus = (AddInControl)sender; - } - UpdateActionBox(); - } - #endregion - - #region UpdateActionBox - List selected; - AddInAction selectedAction; - - void UpdateActionBox() - { - ignoreFocusChange = true; - selected = new List(); - foreach (AddInControl ctl in splitContainer.Panel1.Controls) { - if (ctl.Selected) - selected.Add(ctl.AddIn); - } - splitContainer.Panel2Collapsed = selected.Count == 0; - if (selected.Count > 0) { - dependencyTable.Visible = false; - runActionButton.Visible = true; - uninstallButton.Visible = true; - - bool allEnabled = true; - bool allDisabled = true; - bool allInstalling = true; - bool allUninstalling = true; - bool allUpdating = true; - bool allUninstallable = true; - bool hasErrors = false; - foreach (AddIn addIn in selected) { - allEnabled &= addIn.Action == AddInAction.Enable; - if (addIn.Action == AddInAction.DependencyError || addIn.Action == AddInAction.InstalledTwice) - hasErrors = true; - else - allDisabled &= addIn.Action == AddInAction.Disable; - allUpdating &= addIn.Action == AddInAction.Update; - allInstalling &= addIn.Action == AddInAction.Install; - allUninstalling &= addIn.Action == AddInAction.Uninstall; - if (allUninstallable) { - if (FileUtility.IsBaseDirectory(FileUtility.ApplicationRootPath, addIn.FileName)) { - allUninstallable = false; - } - } - } - if (allEnabled) { - selectedAction = AddInAction.Disable; - actionGroupBox.Text = runActionButton.Text = ResourceService.GetString("AddInManager.ActionDisable"); - actionDescription.Text = ResourceService.GetString("AddInManager.DescriptionDisable"); - runActionButton.Enabled = ShowDependencies(selected, ShowDependencyMode.Disable); - uninstallButton.Enabled = allUninstallable && runActionButton.Enabled; - } else if (allDisabled) { - selectedAction = AddInAction.Enable; - actionGroupBox.Text = runActionButton.Text = ResourceService.GetString("AddInManager.ActionEnable"); - actionDescription.Text = ResourceService.GetString("AddInManager.DescriptionEnable"); - runActionButton.Enabled = ShowDependencies(selected, ShowDependencyMode.Enable); - if (hasErrors) - runActionButton.Enabled = false; - uninstallButton.Enabled = allUninstallable; - } else if (allInstalling) { - selectedAction = AddInAction.Uninstall; - actionGroupBox.Text = runActionButton.Text = ResourceService.GetString("AddInManager.ActionCancelInstallation"); - actionDescription.Text = ResourceService.GetString("AddInManager.DescriptionCancelInstall"); - runActionButton.Enabled = ShowDependencies(selected, ShowDependencyMode.Disable); - uninstallButton.Visible = false; - } else if (allUninstalling) { - selectedAction = AddInAction.Enable; - actionGroupBox.Text = runActionButton.Text = ResourceService.GetString("AddInManager.ActionCancelDeinstallation"); - actionDescription.Text = ResourceService.GetString("AddInManager.DescriptionCancelDeinstallation"); - runActionButton.Enabled = ShowDependencies(selected, ShowDependencyMode.Enable); - uninstallButton.Visible = false; - } else if (allUpdating) { - selectedAction = AddInAction.InstalledTwice; - actionGroupBox.Text = runActionButton.Text = ResourceService.GetString("AddInManager.ActionCancelUpdate"); - actionDescription.Text = ResourceService.GetString("AddInManager.DescriptionCancelUpdate"); - runActionButton.Enabled = ShowDependencies(selected, ShowDependencyMode.CancelUpdate); - uninstallButton.Visible = false; - } else { - actionGroupBox.Text = ""; - actionDescription.Text = ResourceService.GetString("AddInManager.DescriptionInconsistentSelection"); - runActionButton.Visible = false; - uninstallButton.Visible = false; - } - } - ignoreFocusChange = false; - } - - enum ShowDependencyMode { - Disable, - Enable, - CancelUpdate - } - - bool ShowDependencies(IList addIns, ShowDependencyMode mode) - { - List dependencies = new List(); // only used with enable=true - List> dependenciesToSel = new List>(); - Dictionary addInDict = new Dictionary(); - Dictionary modifiedAddIns = new Dictionary(); - - // add available addins - foreach (AddIn addIn in AddInTree.AddIns) { - if (addIn.Action != AddInAction.Enable && addIn.Action != AddInAction.Install) - continue; - if (addIns.Contains(addIn)) - continue; - foreach (KeyValuePair pair in addIn.Manifest.Identities) { - addInDict[pair.Key] = pair.Value; - } - } - - // create list of modified addin names - foreach (AddIn addIn in addIns) { - foreach (KeyValuePair pair in addIn.Manifest.Identities) { - modifiedAddIns[pair.Key] = pair.Value; - } - } - - // add new addins - if (mode != ShowDependencyMode.Disable) { - foreach (AddIn addIn in addIns) { - if (mode == ShowDependencyMode.CancelUpdate && !addIn.Enabled) { - continue; - } - foreach (KeyValuePair pair in addIn.Manifest.Identities) { - addInDict[pair.Key] = pair.Value; - } - foreach (AddInReference dep in addIn.Manifest.Dependencies) { - if (!dependencies.Contains(dep)) - dependencies.Add(dep); - } - } - } - - // add dependencies to the to-be-changed addins - foreach (AddIn addIn in AddInTree.AddIns) { - if (addIn.Action != AddInAction.Enable && addIn.Action != AddInAction.Install) - continue; - if (addIns.Contains(addIn)) - continue; - foreach (AddInReference dep in addIn.Manifest.Dependencies) { - if (modifiedAddIns.ContainsKey(dep.Name)) { - dependenciesToSel.Add(new KeyValuePair(addIn, dep)); - } - } - } - - foreach (Control ctl in dependencyTable.Controls) { - ctl.Dispose(); - } - dependencyTable.Controls.Clear(); - bool allDepenciesOK = true; - if (dependencies.Count > 0 || dependenciesToSel.Count > 0) { - if (dependencies.Count == 0) { - dependencyTable.RowCount = 1 + dependenciesToSel.Count; - } else if (dependenciesToSel.Count == 0) { - dependencyTable.RowCount = 1 + dependencies.Count; - } else { - dependencyTable.RowCount = 2 + dependencies.Count + dependenciesToSel.Count; - } - while (dependencyTable.RowStyles.Count < dependencyTable.RowCount) { - dependencyTable.RowStyles.Add(new RowStyle(SizeType.AutoSize)); - } - int rowIndex = 0; - if (dependencies.Count > 0) { - AddLabelRow(rowIndex++, ResourceService.GetString("AddInManager.RequiredDependencies")); - foreach (AddInReference dep in dependencies) { - if (!AddDependencyRow(addInDict, dep, rowIndex++, null)) - allDepenciesOK = false; - } - } - if (dependenciesToSel.Count > 0) { - AddLabelRow(rowIndex++, ResourceService.GetString("AddInManager.RequiredBy")); - foreach (KeyValuePair pair in dependenciesToSel) { - if (!AddDependencyRow(addInDict, pair.Value, rowIndex++, pair.Key.Name)) - allDepenciesOK = false; - } - } - dependencyTable.Visible = true; - } - return allDepenciesOK; - } - - bool AddDependencyRow(Dictionary addInDict, AddInReference dep, int rowIndex, string requiredByName) - { - string text = requiredByName ?? GetDisplayName(dep.Name); - Version versionFound; - Label label = new Label(); - label.AutoSize = true; - label.Text = text; - PictureBox box = new PictureBox(); - box.BorderStyle = BorderStyle.None; - box.Size = new Size(16, 16); - bool isOK = dep.Check(addInDict, out versionFound); - box.SizeMode = PictureBoxSizeMode.CenterImage; - box.Image = WinFormsResourceService.GetBitmap(isOK ? "Icons.16x16.OK" : "Icons.16x16.DeleteIcon"); - dependencyTable.Controls.Add(label, 1, rowIndex); - dependencyTable.Controls.Add(box, 0, rowIndex); - return isOK; - } - - void AddLabelRow(int rowIndex, string text) - { - Label label = new Label(); - label.AutoSize = true; - label.Text = text; - dependencyTable.Controls.Add(label, 0, rowIndex); - dependencyTable.SetColumnSpan(label, 2); - } - - string GetDisplayName(string identity) - { - foreach (AddIn addIn in AddInTree.AddIns) { - if (addIn.Manifest.Identities.ContainsKey(identity)) - return addIn.Name; - } - return identity; - } - #endregion - - #region Install new AddIns - void InstallButtonClick(object sender, EventArgs e) - { - using (OpenFileDialog dlg = new OpenFileDialog()) { - dlg.Filter = ResourceService.GetString("AddInManager.FileFilter"); - dlg.Multiselect = true; - if (dlg.ShowDialog() == DialogResult.OK) { - if (ShowInstallableAddIns(dlg.FileNames)) { - if (runActionButton.Visible && runActionButton.Enabled) - runActionButton.PerformClick(); - } - } - } - } - - public bool ShowInstallableAddIns(IEnumerable fileNames) - { - foreach (AddInControl ctl in splitContainer.Panel1.Controls) { - ctl.Selected = false; - } - UpdateActionBox(); - List list = new List(); - foreach (string file in fileNames) { - try { - // Same file-extension check is in Panel1DragEnter - switch (Path.GetExtension(file).ToLowerInvariant()) { - case ".addin": - if (FileUtility.IsBaseDirectory(FileUtility.ApplicationRootPath, file)) { - MessageService.ShowMessage("You cannot install AddIns inside the SharpDevelop directory, " + - "they will be picked up as pre-installed AddIns automatically."); - return false; - } - list.Add(new InstallableAddIn(file, false)); - break; - case ".sdaddin": - case ".zip": - list.Add(new InstallableAddIn(file, true)); - break; - default: - MessageService.ShowMessage("Unknown file format: " + Path.GetExtension(file)); - return false; - } - } catch (AddInLoadException ex) { - MessageService.ShowMessage("Error loading " + file + ":\n" + ex.Message); - return false; - } - } - ShowInstallableAddIns(list); - return true; - } - - IList shownAddInPackages; - - void ShowInstallableAddIns(IList addInPackages) - { - shownAddInPackages = addInPackages; - ignoreFocusChange = true; - splitContainer.Panel2Collapsed = false; - dependencyTable.Visible = false; - runActionButton.Visible = true; - uninstallButton.Visible = false; - - selectedAction = AddInAction.Install; - List installAddIns = new List(); - List updateAddIns = new List(); - foreach (InstallableAddIn addInPackage in addInPackages) { - string identity = addInPackage.AddIn.Manifest.PrimaryIdentity; - AddIn foundAddIn = null; - foreach (AddIn addIn in AddInTree.AddIns) { - if (addIn.Action != AddInAction.Install - && addIn.Manifest.Identities.ContainsKey(identity)) - { - foundAddIn = addIn; - break; - } - } - if (foundAddIn != null) { - updateAddIns.Add(addInPackage.AddIn.Name); - } else { - installAddIns.Add(addInPackage.AddIn.Name); - } - } - - if (updateAddIns.Count == 0) { - actionGroupBox.Text = runActionButton.Text = ResourceService.GetString("AddInManager.ActionInstall"); - } else if (installAddIns.Count == 0) { - actionGroupBox.Text = runActionButton.Text = ResourceService.GetString("AddInManager.ActionUpdate"); - } else { - actionGroupBox.Text = runActionButton.Text = - ResourceService.GetString("AddInManager.ActionInstall") - + " + " + - ResourceService.GetString("AddInManager.ActionUpdate"); - } - List addInList = new List(); - StringBuilder b = new StringBuilder(); - if (installAddIns.Count == 1) { - b.Append("Installs the AddIn " + installAddIns[0]); - } else if (installAddIns.Count > 1) { - b.Append("Installs the AddIns " + string.Join(",", installAddIns.ToArray())); - } - if (updateAddIns.Count > 0 && installAddIns.Count > 0) - b.Append("; "); - if (updateAddIns.Count == 1) { - b.Append("Updates the AddIn " + updateAddIns[0]); - } else if (updateAddIns.Count > 1) { - b.Append("Updates the AddIns " + string.Join(",", updateAddIns.ToArray())); - } - actionDescription.Text = b.ToString(); - runActionButton.Enabled = ShowDependencies(addInList, ShowDependencyMode.Enable); - } - - void RunInstallation() - { - // install new AddIns - foreach (InstallableAddIn addInPackage in shownAddInPackages) { - string identity = addInPackage.AddIn.Manifest.PrimaryIdentity; - AddIn foundAddIn = null; - foreach (AddIn addIn in AddInTree.AddIns) { - if (addIn.Manifest.Identities.ContainsKey(identity)) { - foundAddIn = addIn; - break; - } - } - if (foundAddIn != null) { - addInPackage.Install(true); - if (foundAddIn.Action != AddInAction.Enable) { - ICSharpCode.Core.AddInManager.Enable(new AddIn[] { foundAddIn }); - } - if (foundAddIn.Action != AddInAction.Install) { - foundAddIn.Action = AddInAction.Update; - } - } else { - addInPackage.Install(false); - } - } - RefreshAddInList(); - } - #endregion - - #region Uninstall AddIns - void UninstallButtonClick(object sender, EventArgs e) - { - ICSharpCode.Core.AddInManager.RemoveExternalAddIns(selected); - InstallableAddIn.Uninstall(selected); - RefreshAddInList(); - } - #endregion - - #region Drag'N'Drop - void Panel1DragEnter(object sender, DragEventArgs e) - { - if (!e.Data.GetDataPresent(DataFormats.FileDrop)) { - e.Effect = DragDropEffects.None; - return; - } - string[] files = (string[])e.Data.GetData(DataFormats.FileDrop); - int addInCount = 0; - int packageCount = 0; - foreach (string file in files) { - switch (Path.GetExtension(file).ToLowerInvariant()) { - case ".addin": - addInCount += 1; - break; - case ".sdaddin": - case ".zip": - packageCount += 1; - break; - default: - e.Effect = DragDropEffects.None; - return; - } - } - if (addInCount == 0 && packageCount == 0) { - e.Effect = DragDropEffects.None; - } else if (addInCount == 0) { - e.Effect = DragDropEffects.Copy; - } else { - e.Effect = DragDropEffects.Link; - } - } - - void Panel1DragDrop(object sender, DragEventArgs e) - { - if (!e.Data.GetDataPresent(DataFormats.FileDrop)) - return; - ShowInstallableAddIns((string[])e.Data.GetData(DataFormats.FileDrop)); - } - #endregion - - void CloseButtonClick(object sender, EventArgs e) - { - Close(); - } - - protected override void OnClosed(EventArgs e) - { - base.OnClosed(e); - instance = null; - } - - public void TryRunAction(AddIn addIn, AddInAction action) - { - foreach (AddInControl ctl in splitContainer.Panel1.Controls) { - ctl.Selected = ctl.AddIn == addIn; - } - UpdateActionBox(); - if (selectedAction == action && runActionButton.Visible && runActionButton.Enabled) - runActionButton.PerformClick(); - } - - public void TryUninstall(AddIn addIn) - { - foreach (AddInControl ctl in splitContainer.Panel1.Controls) { - ctl.Selected = ctl.AddIn == addIn; - } - UpdateActionBox(); - if (uninstallButton.Visible && uninstallButton.Enabled) - uninstallButton.PerformClick(); - } - - void RunActionButtonClick(object sender, EventArgs e) - { - switch (selectedAction) { - case AddInAction.Disable: - for (int i = 0; i < selected.Count; i++) { - if (selected[i].Manifest.PrimaryIdentity == "ICSharpCode.AddInManager") { - MessageService.ShowMessage("You cannot disable the AddInManager because you need it to re-enable AddIns!"); - selected.RemoveAt(i--); - } - } - ICSharpCode.Core.AddInManager.Disable(selected); - break; - case AddInAction.Enable: - ICSharpCode.Core.AddInManager.Enable(selected); - break; - case AddInAction.Install: - RunInstallation(); - return; - case AddInAction.Uninstall: - UninstallButtonClick(sender, e); - return; - case AddInAction.InstalledTwice: // used to cancel installation of update - InstallableAddIn.CancelUpdate(selected); - foreach (AddIn addIn in selected) { - addIn.Action = addIn.Enabled ? AddInAction.Enable : AddInAction.Disable; - } - break; - default: - throw new NotImplementedException(); - } - foreach (AddInControl ctl in splitContainer.Panel1.Controls) { - ctl.Invalidate(); - } - UpdateActionBox(); - } - - #region Windows Forms Designer generated code - /// - /// 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. - /// - private void InitializeComponent() - { - this.topPanel = new System.Windows.Forms.Panel(); - this.bottomPanel = new System.Windows.Forms.Panel(); - this.installButton = new System.Windows.Forms.Button(); - this.closeButton = new System.Windows.Forms.Button(); - this.showPreinstalledAddInsCheckBox = new System.Windows.Forms.CheckBox(); - this.splitContainer = new System.Windows.Forms.SplitContainer(); - this.actionGroupBox = new System.Windows.Forms.GroupBox(); - this.actionFlowLayoutPanel = new System.Windows.Forms.FlowLayoutPanel(); - this.actionDescription = new System.Windows.Forms.Label(); - this.dependencyTable = new System.Windows.Forms.TableLayoutPanel(); - this.dummyLabel1 = new System.Windows.Forms.Label(); - this.dummyLabel2 = new System.Windows.Forms.Label(); - this.runActionButton = new System.Windows.Forms.Button(); - this.uninstallButton = new System.Windows.Forms.Button(); - this.bottomPanel.SuspendLayout(); - this.splitContainer.Panel2.SuspendLayout(); - this.splitContainer.SuspendLayout(); - this.actionGroupBox.SuspendLayout(); - this.actionFlowLayoutPanel.SuspendLayout(); - this.dependencyTable.SuspendLayout(); - this.SuspendLayout(); - // - // topPanel - // - this.topPanel.Dock = System.Windows.Forms.DockStyle.Top; - this.topPanel.Location = new System.Drawing.Point(0, 0); - this.topPanel.Name = "topPanel"; - this.topPanel.Size = new System.Drawing.Size(460, 33); - this.topPanel.TabIndex = 1; - this.topPanel.Visible = false; - // - // bottomPanel - // - this.bottomPanel.Controls.Add(this.installButton); - this.bottomPanel.Controls.Add(this.closeButton); - this.bottomPanel.Controls.Add(this.showPreinstalledAddInsCheckBox); - this.bottomPanel.Dock = System.Windows.Forms.DockStyle.Bottom; - this.bottomPanel.Location = new System.Drawing.Point(0, 355); - this.bottomPanel.Name = "bottomPanel"; - this.bottomPanel.Size = new System.Drawing.Size(460, 35); - this.bottomPanel.TabIndex = 0; - // - // installButton - // - this.installButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.installButton.Location = new System.Drawing.Point(274, 6); - this.installButton.Name = "installButton"; - this.installButton.Size = new System.Drawing.Size(93, 23); - this.installButton.TabIndex = 1; - this.installButton.Text = "Install AddIn"; - this.installButton.UseCompatibleTextRendering = true; - this.installButton.UseVisualStyleBackColor = true; - this.installButton.Click += new System.EventHandler(this.InstallButtonClick); - // - // closeButton - // - this.closeButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.closeButton.Location = new System.Drawing.Point(373, 6); - this.closeButton.Name = "closeButton"; - this.closeButton.Size = new System.Drawing.Size(75, 23); - this.closeButton.TabIndex = 2; - this.closeButton.Text = "Close"; - this.closeButton.UseCompatibleTextRendering = true; - this.closeButton.UseVisualStyleBackColor = true; - this.closeButton.Click += new System.EventHandler(this.CloseButtonClick); - // - // showPreinstalledAddInsCheckBox - // - this.showPreinstalledAddInsCheckBox.Location = new System.Drawing.Point(3, 6); - this.showPreinstalledAddInsCheckBox.Name = "showPreinstalledAddInsCheckBox"; - this.showPreinstalledAddInsCheckBox.Size = new System.Drawing.Size(169, 24); - this.showPreinstalledAddInsCheckBox.TabIndex = 0; - this.showPreinstalledAddInsCheckBox.Text = "Show preinstalled AddIns"; - this.showPreinstalledAddInsCheckBox.UseCompatibleTextRendering = true; - this.showPreinstalledAddInsCheckBox.UseVisualStyleBackColor = true; - this.showPreinstalledAddInsCheckBox.CheckedChanged += new System.EventHandler(this.ShowPreinstalledAddInsCheckBoxCheckedChanged); - // - // splitContainer - // - this.splitContainer.BackColor = System.Drawing.SystemColors.Window; - this.splitContainer.Dock = System.Windows.Forms.DockStyle.Fill; - this.splitContainer.FixedPanel = System.Windows.Forms.FixedPanel.Panel2; - this.splitContainer.Location = new System.Drawing.Point(0, 33); - this.splitContainer.Name = "splitContainer"; - // - // splitContainer.Panel1 - // - this.splitContainer.Panel1.AllowDrop = true; - this.splitContainer.Panel1.AutoScroll = true; - this.splitContainer.Panel1.DragDrop += new System.Windows.Forms.DragEventHandler(this.Panel1DragDrop); - this.splitContainer.Panel1.DragEnter += new System.Windows.Forms.DragEventHandler(this.Panel1DragEnter); - this.splitContainer.Panel1.Paint += new System.Windows.Forms.PaintEventHandler(this.OnSplitContainerPanel1Paint); - this.splitContainer.Panel1MinSize = 100; - // - // splitContainer.Panel2 - // - this.splitContainer.Panel2.Controls.Add(this.actionGroupBox); - this.splitContainer.Panel2MinSize = 100; - this.splitContainer.Size = new System.Drawing.Size(460, 322); - this.splitContainer.SplitterDistance = 248; - this.splitContainer.TabIndex = 2; - // - // actionGroupBox - // - this.actionGroupBox.Controls.Add(this.actionFlowLayoutPanel); - this.actionGroupBox.Dock = System.Windows.Forms.DockStyle.Fill; - this.actionGroupBox.Location = new System.Drawing.Point(0, 0); - this.actionGroupBox.Name = "actionGroupBox"; - this.actionGroupBox.Size = new System.Drawing.Size(208, 322); - this.actionGroupBox.TabIndex = 0; - this.actionGroupBox.TabStop = false; - this.actionGroupBox.Text = "actionGroupBox"; - this.actionGroupBox.UseCompatibleTextRendering = true; - // - // actionFlowLayoutPanel - // - this.actionFlowLayoutPanel.AutoScroll = true; - this.actionFlowLayoutPanel.Controls.Add(this.actionDescription); - this.actionFlowLayoutPanel.Controls.Add(this.dependencyTable); - this.actionFlowLayoutPanel.Controls.Add(this.runActionButton); - this.actionFlowLayoutPanel.Controls.Add(this.uninstallButton); - this.actionFlowLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill; - this.actionFlowLayoutPanel.FlowDirection = System.Windows.Forms.FlowDirection.TopDown; - this.actionFlowLayoutPanel.ForeColor = System.Drawing.SystemColors.WindowText; - this.actionFlowLayoutPanel.Location = new System.Drawing.Point(3, 17); - this.actionFlowLayoutPanel.Name = "actionFlowLayoutPanel"; - this.actionFlowLayoutPanel.Size = new System.Drawing.Size(202, 302); - this.actionFlowLayoutPanel.TabIndex = 0; - this.actionFlowLayoutPanel.WrapContents = false; - // - // actionDescription - // - this.actionDescription.AutoSize = true; - this.actionDescription.Location = new System.Drawing.Point(3, 0); - this.actionDescription.Name = "actionDescription"; - this.actionDescription.Size = new System.Drawing.Size(90, 18); - this.actionDescription.TabIndex = 0; - this.actionDescription.Text = "actionDescription"; - this.actionDescription.UseCompatibleTextRendering = true; - // - // dependencyTable - // - this.dependencyTable.AutoSize = true; - this.dependencyTable.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; - this.dependencyTable.ColumnCount = 2; - this.dependencyTable.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F)); - this.dependencyTable.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); - this.dependencyTable.Controls.Add(this.dummyLabel1, 1, 0); - this.dependencyTable.Controls.Add(this.dummyLabel2, 1, 1); - this.dependencyTable.Location = new System.Drawing.Point(3, 21); - this.dependencyTable.Name = "dependencyTable"; - this.dependencyTable.RowCount = 2; - this.dependencyTable.RowStyles.Add(new System.Windows.Forms.RowStyle()); - this.dependencyTable.RowStyles.Add(new System.Windows.Forms.RowStyle()); - this.dependencyTable.Size = new System.Drawing.Size(55, 36); - this.dependencyTable.TabIndex = 1; - // - // dummyLabel1 - // - this.dummyLabel1.AutoSize = true; - this.dummyLabel1.Location = new System.Drawing.Point(23, 0); - this.dummyLabel1.Name = "dummyLabel1"; - this.dummyLabel1.Size = new System.Drawing.Size(29, 18); - this.dummyLabel1.TabIndex = 0; - this.dummyLabel1.Text = "dep1"; - this.dummyLabel1.UseCompatibleTextRendering = true; - // - // dummyLabel2 - // - this.dummyLabel2.AutoSize = true; - this.dummyLabel2.Location = new System.Drawing.Point(23, 18); - this.dummyLabel2.Name = "dummyLabel2"; - this.dummyLabel2.Size = new System.Drawing.Size(29, 18); - this.dummyLabel2.TabIndex = 1; - this.dummyLabel2.Text = "dep2"; - this.dummyLabel2.UseCompatibleTextRendering = true; - // - // runActionButton - // - this.runActionButton.AutoSize = true; - this.runActionButton.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; - this.runActionButton.Location = new System.Drawing.Point(3, 63); - this.runActionButton.MinimumSize = new System.Drawing.Size(91, 25); - this.runActionButton.Name = "runActionButton"; - this.runActionButton.Size = new System.Drawing.Size(91, 25); - this.runActionButton.TabIndex = 2; - this.runActionButton.Text = "runAction"; - this.runActionButton.UseCompatibleTextRendering = true; - this.runActionButton.UseVisualStyleBackColor = true; - this.runActionButton.Click += new System.EventHandler(this.RunActionButtonClick); - // - // uninstallButton - // - this.uninstallButton.AutoSize = true; - this.uninstallButton.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; - this.uninstallButton.Location = new System.Drawing.Point(3, 94); - this.uninstallButton.MinimumSize = new System.Drawing.Size(91, 25); - this.uninstallButton.Name = "uninstallButton"; - this.uninstallButton.Size = new System.Drawing.Size(91, 25); - this.uninstallButton.TabIndex = 3; - this.uninstallButton.Text = "Uninstall"; - this.uninstallButton.UseCompatibleTextRendering = true; - this.uninstallButton.UseVisualStyleBackColor = true; - this.uninstallButton.Click += new System.EventHandler(this.UninstallButtonClick); - // - // ManagerForm - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(460, 390); - this.Controls.Add(this.splitContainer); - this.Controls.Add(this.bottomPanel); - this.Controls.Add(this.topPanel); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow; - this.MinimumSize = new System.Drawing.Size(250, 200); - this.Name = "ManagerForm"; - this.Text = "AddIn Manager"; - this.bottomPanel.ResumeLayout(false); - this.splitContainer.Panel2.ResumeLayout(false); - this.splitContainer.ResumeLayout(false); - this.actionGroupBox.ResumeLayout(false); - this.actionFlowLayoutPanel.ResumeLayout(false); - this.actionFlowLayoutPanel.PerformLayout(); - this.dependencyTable.ResumeLayout(false); - this.dependencyTable.PerformLayout(); - this.ResumeLayout(false); - } - private System.Windows.Forms.Label dummyLabel2; - private System.Windows.Forms.Label dummyLabel1; - private System.Windows.Forms.CheckBox showPreinstalledAddInsCheckBox; - private System.Windows.Forms.Button installButton; - private System.Windows.Forms.Button uninstallButton; - private System.Windows.Forms.Button runActionButton; - private System.Windows.Forms.TableLayoutPanel dependencyTable; - private System.Windows.Forms.Label actionDescription; - private System.Windows.Forms.FlowLayoutPanel actionFlowLayoutPanel; - private System.Windows.Forms.GroupBox actionGroupBox; - private System.Windows.Forms.Button closeButton; - private System.Windows.Forms.SplitContainer splitContainer; - private System.Windows.Forms.Panel bottomPanel; - private System.Windows.Forms.Panel topPanel; - #endregion - } -} diff --git a/samples/ICSharpCode.Core.Demo/AddInManager/Src/ManagerForm.resx b/samples/ICSharpCode.Core.Demo/AddInManager/Src/ManagerForm.resx deleted file mode 100644 index 7080a7d118..0000000000 --- a/samples/ICSharpCode.Core.Demo/AddInManager/Src/ManagerForm.resx +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - \ No newline at end of file diff --git a/samples/ICSharpCode.Core.Demo/AddInManager/StringResources.de.resx b/samples/ICSharpCode.Core.Demo/AddInManager/StringResources.de.resx deleted file mode 100755 index c49d3c099c..0000000000 --- a/samples/ICSharpCode.Core.Demo/AddInManager/StringResources.de.resx +++ /dev/null @@ -1,217 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Update abbrechen - - - Installieren - - - Deinstallieren - - - Bricht die Aktualisierung der gewählten AddIn(s) ab. - - - AddIn wird nach Neustart von SharpDevelop installiert - - - Webseite öffnen - - - Deaktiviert - - - AddIn Installationspaket - - - Sie haben keine AddIns installiert. -Laden Sie ein AddIn aus dem Internet herunter, klicken Sie auf "AddIn installieren" und wählen Sie die heruntergeladene Datei, um sie zu installieren. - - - AddIn wird nach Neustart von SharpDevelop deaktiviert - - - Bricht die Installation der gewählten AddIn(s) ab. - - - SharpDevelop AddIns|*.addin;*.sdaddin|Alle Dateien|*.* - - - Installation abbrechen - - - Bricht die Deinstallation der gewählten AddIn(s) ab. - - - AddIn wird nach Neustart von SharpDevelop entfernt - - - Aktivieren - - - Eine Abhängigkeit dieses AddIns wurde nicht gefunden. Installieren Sie sie, um dieses AddIn zu aktivieren. - - - Deinstallation abbrechen - - - AddIn wird nach Neustart von SharpDevelop aktiviert - - - Update installieren - - - Benötigte Abhängigkeiten: - - - AddIns werden benötigt von: - - - Die Selektion ist ungültig, bitte wähle nur AddIns mit dem gleichen Status. - - - Zeigt vorinstallierte AddIns - - - Aktiviert die gewählten AddIn(s). - - - Deaktiviert die gewählten AddIn(s). - - - AddIn &installieren - - - Dieses AddIn ist doppelt installiert. Bitte entfernen Sie eine Kopie. - - - Deaktivieren - - - Über... - - - AddIn wird nach Neustart von SharpDevelop aktualisiert - - - Optionen - - \ No newline at end of file diff --git a/samples/ICSharpCode.Core.Demo/AddInManager/StringResources.resx b/samples/ICSharpCode.Core.Demo/AddInManager/StringResources.resx deleted file mode 100755 index d5d0dcc369..0000000000 --- a/samples/ICSharpCode.Core.Demo/AddInManager/StringResources.resx +++ /dev/null @@ -1,218 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Cancel update - - - Install - - - Uninstall - - - Aborts the update of the selected AddIn(s). - - - AddIn will be installed after restarting SharpDevelop - - - Open Website - - - Disabled - - - AddIn Installation Package - - - You don't have any AddIns installed. - -Download an AddIn from the Internet, then click 'Install AddIn' and choose the downloaded file to install it. - - - AddIn will be disabled after restarting SharpDevelop - - - Aborts the installation of the selected AddIn(s). - - - SharpDevelop AddIns|*.addin;*.sdaddin|All files|*.* - - - Cancel installation - - - Aborts the deinstallation of the selected AddIn(s). - - - AddIn will be removed after restarting SharpDevelop - - - Enable - - - A dependency for this AddIn was not found. Install it to enable this AddIn. - - - Cancel deinstallation - - - AddIn will be enabled after restarting SharpDevelop - - - Update - - - Required dependencies: - - - AddIns are required by: - - - The selection is inconsistent, please select only AddIns with the same status. - - - Show preinstalled AddIns - - - Enables the selected AddIn(s). - - - Disables the selected AddIn(s). - - - &Install AddIn - - - This AddIns is installed twice. Please uninstall one copy. - - - Disable - - - About - - - AddIn will be updated after restarting SharpDevelop - - - Options - - \ No newline at end of file diff --git a/samples/ICSharpCode.Core.Demo/AddInManager/WizardBackground.png b/samples/ICSharpCode.Core.Demo/AddInManager/WizardBackground.png deleted file mode 100644 index dd4a2d810abce666b608f3dac6df74534eadd369..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16743 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 z
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 diff --git a/samples/ICSharpCode.Core.Demo/Base/AssemblyInfo.cs b/samples/ICSharpCode.Core.Demo/Base/AssemblyInfo.cs deleted file mode 100644 index 828d20f106..0000000000 --- a/samples/ICSharpCode.Core.Demo/Base/AssemblyInfo.cs +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Created by SharpDevelop. - * User: Daniel Grunwald - * Date: 22.12.2005 - * Time: 19:32 - */ - -using System.Reflection; -using System.Runtime.CompilerServices; - -// Information about this assembly is defined by the following -// attributes. -// -// change them to the information which is associated with the assembly -// you compile. - -[assembly: AssemblyTitle("Base")] -[assembly: AssemblyDescription("Base AddIn for ICSharpCode.Core.Demo")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("ic#code")] -[assembly: AssemblyProduct("ICSharpCode.Core.Demo")] -[assembly: AssemblyCopyright("")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// The assembly version has following format : -// -// Major.Minor.Build.Revision -// -// You can specify all values by your own or you can build default build and revision -// numbers with the '*' character (the default): - -[assembly: AssemblyVersion("1.0.*")] - diff --git a/samples/ICSharpCode.Core.Demo/Base/Base.csproj b/samples/ICSharpCode.Core.Demo/Base/Base.csproj deleted file mode 100644 index 8783b9aa13..0000000000 --- a/samples/ICSharpCode.Core.Demo/Base/Base.csproj +++ /dev/null @@ -1,84 +0,0 @@ - - - - Library - Base - Base - Debug - AnyCPU - {C9A2B6BC-5260-4DE3-8082-DCE8B391F7BB} - ..\bin\ - False - False - False - Auto - 4194304 - AnyCPU - 4096 - 4 - false - v4.0 - - - False - DEBUG;TRACE - true - Full - True - - - True - TRACE - False - None - False - - - - - 3.5 - - - - 3.5 - - - - - - 3.5 - - - - - - - - - - - - - - - InfoForm.cs - - - - - - Base.addin - - - {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} - ICSharpCode.Core - - - - - {857CA1A3-FC88-4BE0-AB6A-D1EE772AB288} - ICSharpCode.Core.WinForms - - - - \ No newline at end of file diff --git a/samples/ICSharpCode.Core.Demo/Base/Base.sln b/samples/ICSharpCode.Core.Demo/Base/Base.sln deleted file mode 100644 index c23dc07703..0000000000 --- a/samples/ICSharpCode.Core.Demo/Base/Base.sln +++ /dev/null @@ -1,6 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 9.00 -# SharpDevelop 2.0.0.932 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Base", "Base.csproj", "{C9A2B6BC-5260-4DE3-8082-DCE8B391F7BB}" -EndProject -Global -EndGlobal diff --git a/samples/ICSharpCode.Core.Demo/Base/FileCommands.cs b/samples/ICSharpCode.Core.Demo/Base/FileCommands.cs deleted file mode 100644 index e2eacadbda..0000000000 --- a/samples/ICSharpCode.Core.Demo/Base/FileCommands.cs +++ /dev/null @@ -1,74 +0,0 @@ -// Copyright (c) 2005 Daniel Grunwald -// Licensed under the terms of the "BSD License", see doc/license.txt - -using System; -using System.Windows.Forms; -using ICSharpCode.Core; - -namespace Base -{ - public class NewFileCommand : AbstractMenuCommand - { - public override void Run() - { - Workbench workbench = (Workbench)this.Owner; - if (workbench.CloseCurrentContent()) { - workbench.ShowContent(new TextViewContent()); - } - } - } - - public class OpenFileCommand : AbstractMenuCommand - { - public override void Run() - { - Workbench workbench = (Workbench)this.Owner; - if (workbench.CloseCurrentContent()) { - using (OpenFileDialog dlg = new OpenFileDialog()) { - dlg.CheckFileExists = true; - dlg.DefaultExt = ".txt"; - dlg.Filter = FileViewContent.GetFileFilter("/Workspace/FileFilter"); - if (dlg.ShowDialog() == DialogResult.OK) { - IViewContent content = DisplayBindingManager.CreateViewContent(dlg.FileName); - if (content != null) { - workbench.ShowContent(content); - } - } - } - } - } - } - - public class SaveFileCommand : AbstractMenuCommand - { - public override void Run() - { - Workbench workbench = (Workbench)this.Owner; - if (workbench.ActiveViewContent != null) { - workbench.ActiveViewContent.Save(); - } - } - } - - public class SaveFileAsCommand : AbstractMenuCommand - { - public override void Run() - { - Workbench workbench = (Workbench)this.Owner; - if (workbench.ActiveViewContent != null) { - workbench.ActiveViewContent.SaveAs(); - } - } - } - - public class ExitCommand : AbstractMenuCommand - { - public override void Run() - { - Workbench workbench = (Workbench)this.Owner; - if (workbench.CloseCurrentContent()) { - workbench.Close(); - } - } - } -} diff --git a/samples/ICSharpCode.Core.Demo/Base/FileViewContent.cs b/samples/ICSharpCode.Core.Demo/Base/FileViewContent.cs deleted file mode 100644 index 6672bd09eb..0000000000 --- a/samples/ICSharpCode.Core.Demo/Base/FileViewContent.cs +++ /dev/null @@ -1,148 +0,0 @@ -// Copyright (c) 2005 Daniel Grunwald -// Licensed under the terms of the "BSD License", see doc/license.txt - -using System; -using System.Text; -using System.Windows.Forms; - -using ICSharpCode.Core; - -namespace Base -{ - /// - /// Base ViewContent for files. - /// - public abstract class FileViewContent : IViewContent - { - public abstract Control Control { - get; - } - - string fileName; - public event EventHandler FileNameChanged; - - public string FileName { - get { - return fileName; - } - set { - if (fileName != value) { - fileName = value; - ChangeTitleToFileName(); - if (FileNameChanged != null) { - FileNameChanged(this, EventArgs.Empty); - } - } - } - } - - protected virtual void ChangeTitleToFileName() - { - this.Title = System.IO.Path.GetFileName(this.FileName); - } - - string title = "Untitled"; - public event EventHandler TitleChanged; - - public string Title { - get { - return title; - } - set { - if (title != value) { - title = value; - - if (TitleChanged != null) { - TitleChanged(this, EventArgs.Empty); - } - } - } - } - - bool dirty; - public event EventHandler DirtyChanged; - - public bool Dirty { - get { - return dirty; - } - set { - if (dirty != value) { - dirty = value; - - if (DirtyChanged != null) { - DirtyChanged(this, EventArgs.Empty); - } - } - } - } - - public bool Save() - { - if (fileName == null) { - return SaveAs(); - } else { - if (Save(fileName)) { - Dirty = false; - return true; - } else { - return false; - } - } - } - - public virtual bool SaveAs() - { - return ShowSaveAsDialog(GetFileFilter("/Workspace/FileFilter"), ".txt"); - } - - public static string GetFileFilter(string addInTreePath) - { - StringBuilder b = new StringBuilder(); - b.Append("All known file types|"); - foreach (string filter in AddInTree.BuildItems(addInTreePath, null, true)) { - b.Append(filter.Substring(filter.IndexOf('|') + 1)); - b.Append(';'); - } - foreach (string filter in AddInTree.BuildItems(addInTreePath, null, true)) { - b.Append('|'); - b.Append(filter); - } - b.Append("|All files|*.*"); - return b.ToString(); - } - - protected bool ShowSaveAsDialog(string filter, string defaultExtension) - { - using (SaveFileDialog dlg = new SaveFileDialog()) { - dlg.Filter = filter; - dlg.DefaultExt = defaultExtension; - if (dlg.ShowDialog() == DialogResult.OK) { - FileName = dlg.FileName; - if (Save(dlg.FileName)) { - Dirty = false; - return true; - } - } - } - return false; - } - - protected abstract bool Save(string fileName); - - public virtual bool Close() - { - if (this.Dirty) { - DialogResult res = MessageBox.Show("The file was modified. Do you want to save it?", "Modified file", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button3); - if (res == DialogResult.Yes) - return Save(); - else if (res == DialogResult.No) - return true; // close without saving - else - return false; - } else { - return true; - } - } - } -} diff --git a/samples/ICSharpCode.Core.Demo/Base/FormLocationHelper.cs b/samples/ICSharpCode.Core.Demo/Base/FormLocationHelper.cs deleted file mode 100644 index 014c40db7e..0000000000 --- a/samples/ICSharpCode.Core.Demo/Base/FormLocationHelper.cs +++ /dev/null @@ -1,68 +0,0 @@ -// Copyright (c) 2005 Daniel Grunwald -// Licensed under the terms of the "BSD License", see doc/license.txt - -using System; -using System.Drawing; -using System.Windows.Forms; -using ICSharpCode.Core; - -namespace Base -{ - /// - /// Static helper class that loads and stores the position and size of a Form in the - /// PropertyService. - /// - public static class FormLocationHelper - { - public static void Apply(Form form, string propertyName, bool isResizable) - { - form.StartPosition = FormStartPosition.Manual; - if (isResizable) { - form.Bounds = Validate(PropertyService.Get(propertyName, GetDefaultBounds(form))); - } else { - form.Location = Validate(PropertyService.Get(propertyName, GetDefaultLocation(form)), form.Size); - } - form.Closing += delegate { - if (isResizable) { - PropertyService.Set(propertyName, form.Bounds); - } else { - PropertyService.Set(propertyName, form.Location); - } - }; - } - - static Rectangle Validate(Rectangle bounds) - { - // Check if form is outside the screen and get it back if necessary. - // This is important when the user uses multiple screens, a window stores its location - // on the secondary monitor and then the secondary monitor is removed. - Rectangle screen1 = Screen.FromPoint(new Point(bounds.X, bounds.Y)).WorkingArea; - Rectangle screen2 = Screen.FromPoint(new Point(bounds.X + bounds.Width, bounds.Y)).WorkingArea; - if (bounds.Y < screen1.Y - 5 && bounds.Y < screen2.Y - 5) - bounds.Y = screen1.Y - 5; - if (bounds.X < screen1.X - bounds.Width / 2) - bounds.X = screen1.X - bounds.Width / 2; - else if (bounds.X > screen2.Right - bounds.Width / 2) - bounds.X = screen2.Right - bounds.Width / 2; - return bounds; - } - - static Point Validate(Point location, Size size) - { - return Validate(new Rectangle(location, size)).Location; - } - - static Rectangle GetDefaultBounds(Form form) - { - return new Rectangle(GetDefaultLocation(form), form.Size); - } - - static Point GetDefaultLocation(Form form) - { - Rectangle parent = (form.Owner != null) ? form.Owner.Bounds : Screen.FromPoint(Control.MousePosition).WorkingArea; - Size size = form.Size; - return new Point(parent.Left + (parent.Width - size.Width) / 2, - parent.Top + (parent.Height - size.Height) / 2); - } - } -} diff --git a/samples/ICSharpCode.Core.Demo/Base/IClipboardHandler.cs b/samples/ICSharpCode.Core.Demo/Base/IClipboardHandler.cs deleted file mode 100644 index c5024494bb..0000000000 --- a/samples/ICSharpCode.Core.Demo/Base/IClipboardHandler.cs +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright (c) 2005 Daniel Grunwald -// Licensed under the terms of the "BSD License", see doc/license.txt - -using System; - -namespace Base -{ - public interface IClipboardHandler - { - bool CanPaste { get; } - void Paste(); - - bool CanCut { get; } - void Cut(); - - bool CanCopy { get; } - void Copy(); - - bool CanDelete { get; } - void Delete(); - } -} diff --git a/samples/ICSharpCode.Core.Demo/Base/IDisplayBinding.cs b/samples/ICSharpCode.Core.Demo/Base/IDisplayBinding.cs deleted file mode 100644 index 25193135d3..0000000000 --- a/samples/ICSharpCode.Core.Demo/Base/IDisplayBinding.cs +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright (c) 2005 Daniel Grunwald -// Licensed under the terms of the "BSD License", see doc/license.txt - -using System; -using System.Collections.Generic; -using ICSharpCode.Core; - -namespace Base -{ - /// - /// Interface for classes that are able to open a file and create a for it. - /// - public interface IDisplayBinding - { - /// - /// Loads the file and opens a . - /// When this method returns null, the display binding cannot handle the file type. - /// - IViewContent OpenFile(string fileName); - } - - public static class DisplayBindingManager - { - static List items; - - public static IViewContent CreateViewContent(string fileName) - { - if (items == null) { - items = AddInTree.BuildItems("/Workspace/DisplayBindings", null, true); - } - foreach (IDisplayBinding binding in items) { - IViewContent content = binding.OpenFile(fileName); - if (content != null) { - return content; - } - } - return null; - } - } -} diff --git a/samples/ICSharpCode.Core.Demo/Base/IUndoHandler.cs b/samples/ICSharpCode.Core.Demo/Base/IUndoHandler.cs deleted file mode 100644 index 76a59f185a..0000000000 --- a/samples/ICSharpCode.Core.Demo/Base/IUndoHandler.cs +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright (c) 2005 Daniel Grunwald -// Licensed under the terms of the "BSD License", see doc/license.txt - -using System; - -namespace Base -{ - public interface IUndoHandler - { - bool CanUndo { get; } - void Undo(); - bool CanRedo { get; } - void Redo(); - } -} diff --git a/samples/ICSharpCode.Core.Demo/Base/IViewContent.cs b/samples/ICSharpCode.Core.Demo/Base/IViewContent.cs deleted file mode 100644 index c310e96afb..0000000000 --- a/samples/ICSharpCode.Core.Demo/Base/IViewContent.cs +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright (c) 2005 Daniel Grunwald -// Licensed under the terms of the "BSD License", see doc/license.txt - -using System; -using System.ComponentModel; -using System.Drawing; -using System.Windows.Forms; - -namespace Base -{ - /// - /// Interface for content displayed in the application. - /// - public interface IViewContent - { - /// - /// Gets the control used to display this view content. - /// - Control Control { - get; - } - - string Title { - get; - } - - event EventHandler TitleChanged; - - /// - /// Closes the view content. Returns true when the content was closed successfully, - /// false when closing the content was aborted (e.g. by the user) - /// - bool Close(); - - /// - /// Saves the content, e.g. to a file. Returns true when the content has been saved successfully. - /// - bool Save(); - /// - /// Asks the user to specify the file location/name and saves the content using the new name. - /// Returns true when the content has been saved successfully. - /// - bool SaveAs(); - } -} diff --git a/samples/ICSharpCode.Core.Demo/Base/InfoForm.cs b/samples/ICSharpCode.Core.Demo/Base/InfoForm.cs deleted file mode 100644 index b6ea3ac277..0000000000 --- a/samples/ICSharpCode.Core.Demo/Base/InfoForm.cs +++ /dev/null @@ -1,233 +0,0 @@ -// Copyright (c) 2005 Daniel Grunwald -// Licensed under the terms of the "BSD License", see doc/license.txt - -using System; -using System.Drawing; -using System.Reflection; -using System.Windows.Forms; -using ICSharpCode.Core; - -namespace Base -{ - public class InfoForm : System.Windows.Forms.Form - { - public InfoForm() - { - // - // The InitializeComponent() call is required for Windows Forms designer support. - // - InitializeComponent(); - - FormLocationHelper.Apply(this, "InfoForm", false); - - versionLabel.Text = typeof(AddInTree).Assembly.GetName().Version.ToString(); - demoVersionLabel.Text = Assembly.GetEntryAssembly().GetName().Version.ToString(); - listBox.UseCustomTabOffsets = true; - listBox.CustomTabOffsets.Add(100); - foreach (Assembly asm in AppDomain.CurrentDomain.GetAssemblies()) { - AssemblyName name = asm.GetName(); - listBox.Items.Add(name.Name + "\t" + name.Version.ToString()); - } - } - - #region Windows Forms Designer generated code - /// - /// 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. - /// - private void InitializeComponent() - { - System.Windows.Forms.LinkLabel linkLabel1; - System.Windows.Forms.LinkLabel linkLabel2; - System.Windows.Forms.LinkLabel linkLabel3; - System.Windows.Forms.Label label1; - System.Windows.Forms.Label label3; - System.Windows.Forms.Button okButton; - System.Windows.Forms.Label label4; - this.listBox = new System.Windows.Forms.ListBox(); - this.versionLabel = new System.Windows.Forms.Label(); - this.demoVersionLabel = new System.Windows.Forms.Label(); - linkLabel1 = new System.Windows.Forms.LinkLabel(); - linkLabel2 = new System.Windows.Forms.LinkLabel(); - linkLabel3 = new System.Windows.Forms.LinkLabel(); - label1 = new System.Windows.Forms.Label(); - label3 = new System.Windows.Forms.Label(); - okButton = new System.Windows.Forms.Button(); - label4 = new System.Windows.Forms.Label(); - this.SuspendLayout(); - // - // linkLabel1 - // - linkLabel1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - linkLabel1.LinkArea = new System.Windows.Forms.LinkArea(43, 12); - linkLabel1.Location = new System.Drawing.Point(12, 9); - linkLabel1.Name = "linkLabel1"; - linkLabel1.Size = new System.Drawing.Size(368, 45); - linkLabel1.TabIndex = 1; - linkLabel1.TabStop = true; - linkLabel1.Tag = "http://sharpdevelop.net/"; - linkLabel1.Text = "Demo application for ICSharpCode.Core, the SharpDevelop add-in architecture."; - linkLabel1.UseCompatibleTextRendering = true; - linkLabel1.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LinkLabelLinkClicked); - // - // linkLabel2 - // - linkLabel2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - linkLabel2.LinkArea = new System.Windows.Forms.LinkArea(16, 15); - linkLabel2.Location = new System.Drawing.Point(12, 54); - linkLabel2.Name = "linkLabel2"; - linkLabel2.Size = new System.Drawing.Size(368, 28); - linkLabel2.TabIndex = 2; - linkLabel2.TabStop = true; - linkLabel2.Tag = "mailto:daniel@danielgrunwald.de"; - linkLabel2.Text = "Demo written by Daniel Grunwald on the 22nd December, 2005."; - linkLabel2.UseCompatibleTextRendering = true; - linkLabel2.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LinkLabelLinkClicked); - // - // linkLabel3 - // - linkLabel3.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - linkLabel3.LinkArea = new System.Windows.Forms.LinkArea(81, 17); - linkLabel3.Location = new System.Drawing.Point(12, 82); - linkLabel3.Name = "linkLabel3"; - linkLabel3.Size = new System.Drawing.Size(368, 42); - linkLabel3.TabIndex = 3; - linkLabel3.TabStop = true; - linkLabel3.Tag = "http://wiki.sharpdevelop.net/default.aspx/SharpDevelop.Contributors"; - linkLabel3.Text = "ICSharpCode.Core was written by Mike Krüger, Daniel Grunwald and the rest of the " + - "SharpDevelop team."; - linkLabel3.UseCompatibleTextRendering = true; - linkLabel3.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LinkLabelLinkClicked); - // - // label1 - // - label1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - label1.Location = new System.Drawing.Point(12, 172); - label1.Name = "label1"; - label1.Size = new System.Drawing.Size(368, 23); - label1.TabIndex = 6; - label1.Tag = ""; - label1.Text = "List of loaded assemblies:"; - label1.UseCompatibleTextRendering = true; - // - // label3 - // - label3.Location = new System.Drawing.Point(35, 124); - label3.Name = "label3"; - label3.Size = new System.Drawing.Size(144, 23); - label3.TabIndex = 4; - label3.Text = "ICSharpCode.Core version:"; - label3.TextAlign = System.Drawing.ContentAlignment.TopRight; - label3.UseCompatibleTextRendering = true; - // - // okButton - // - okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - okButton.Location = new System.Drawing.Point(305, 302); - okButton.Name = "okButton"; - okButton.Size = new System.Drawing.Size(75, 23); - okButton.TabIndex = 0; - okButton.Text = "OK"; - okButton.UseCompatibleTextRendering = true; - okButton.UseVisualStyleBackColor = true; - okButton.Click += new System.EventHandler(this.OkButtonClick); - // - // listBox - // - this.listBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.listBox.FormattingEnabled = true; - this.listBox.Location = new System.Drawing.Point(12, 188); - this.listBox.Name = "listBox"; - this.listBox.Size = new System.Drawing.Size(368, 108); - this.listBox.TabIndex = 7; - // - // versionLabel - // - this.versionLabel.Font = new System.Drawing.Font("Tahoma", 11F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.World); - this.versionLabel.Location = new System.Drawing.Point(185, 124); - this.versionLabel.Name = "versionLabel"; - this.versionLabel.Size = new System.Drawing.Size(112, 23); - this.versionLabel.TabIndex = 5; - this.versionLabel.Text = "#.#.#.#"; - this.versionLabel.UseCompatibleTextRendering = true; - // - // demoVersionLabel - // - this.demoVersionLabel.Font = new System.Drawing.Font("Tahoma", 11F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.World); - this.demoVersionLabel.Location = new System.Drawing.Point(185, 147); - this.demoVersionLabel.Name = "demoVersionLabel"; - this.demoVersionLabel.Size = new System.Drawing.Size(112, 23); - this.demoVersionLabel.TabIndex = 9; - this.demoVersionLabel.Text = "#.#.#.#"; - this.demoVersionLabel.UseCompatibleTextRendering = true; - // - // label4 - // - label4.Location = new System.Drawing.Point(35, 147); - label4.Name = "label4"; - label4.Size = new System.Drawing.Size(144, 23); - label4.TabIndex = 8; - label4.Text = "Demo application version:"; - label4.TextAlign = System.Drawing.ContentAlignment.TopRight; - label4.UseCompatibleTextRendering = true; - // - // InfoForm - // - this.AcceptButton = okButton; - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(392, 330); - this.Controls.Add(this.demoVersionLabel); - this.Controls.Add(label4); - this.Controls.Add(okButton); - this.Controls.Add(this.versionLabel); - this.Controls.Add(label3); - this.Controls.Add(this.listBox); - this.Controls.Add(label1); - this.Controls.Add(linkLabel3); - this.Controls.Add(linkLabel2); - this.Controls.Add(linkLabel1); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "InfoForm"; - this.Text = "About ICSharpCode.Core.Demo"; - this.ResumeLayout(false); - } - private System.Windows.Forms.Label demoVersionLabel; - private System.Windows.Forms.ListBox listBox; - private System.Windows.Forms.Label versionLabel; - #endregion - - void LinkLabelLinkClicked(object sender, LinkLabelLinkClickedEventArgs e) - { - string url = (sender as Control).Tag.ToString(); - try { - System.Diagnostics.Process.Start(url); - } catch (Exception) { - MessageService.ShowMessage(url); - } - } - - void OkButtonClick(object sender, EventArgs e) - { - Close(); - } - } - - public class InfoCommand : AbstractMenuCommand - { - public override void Run() - { - using (InfoForm frm = new InfoForm()) { - frm.ShowDialog(this.Owner as IWin32Window); - } - } - } -} diff --git a/samples/ICSharpCode.Core.Demo/Base/InfoForm.resx b/samples/ICSharpCode.Core.Demo/Base/InfoForm.resx deleted file mode 100644 index b5bf043c42..0000000000 --- a/samples/ICSharpCode.Core.Demo/Base/InfoForm.resx +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - False - - - False - - - False - - - False - - - False - - - False - - - False - - \ No newline at end of file diff --git a/samples/ICSharpCode.Core.Demo/Base/TextViewContent.cs b/samples/ICSharpCode.Core.Demo/Base/TextViewContent.cs deleted file mode 100644 index 99516ad03c..0000000000 --- a/samples/ICSharpCode.Core.Demo/Base/TextViewContent.cs +++ /dev/null @@ -1,128 +0,0 @@ -// Copyright (c) 2005 Daniel Grunwald -// Licensed under the terms of the "BSD License", see doc/license.txt - -using System; -using System.Drawing; -using System.IO; -using System.Windows.Forms; - -namespace Base -{ - public class TextDisplayBinding : IDisplayBinding - { - public IViewContent OpenFile(string fileName) - { - return new TextViewContent(fileName); - } - } - - /// - /// ViewContent showing a text file. - /// - public class TextViewContent : FileViewContent, IClipboardHandler, IUndoHandler - { - TextBox textBox = new TextBox(); - - public TextViewContent() - { - textBox.Multiline = true; - textBox.AcceptsReturn = true; - textBox.AcceptsTab = true; - textBox.Font = new Font("Courier New", 10f); - textBox.WordWrap = false; - textBox.ScrollBars = ScrollBars.Both; - textBox.TextChanged += delegate { - this.Dirty = true; - }; - } - - public TextViewContent(string fileName) : this() - { - textBox.Text = File.ReadAllText(fileName); - this.FileName = fileName; - this.Dirty = false; - } - - public override Control Control { - get { - return textBox; - } - } - - protected override bool Save(string fileName) - { - File.WriteAllText(fileName, textBox.Text); - return true; - } - - #region IClipboardHandler implementation - bool IClipboardHandler.CanPaste { - get { - return !textBox.ReadOnly; - } - } - - bool IClipboardHandler.CanCut { - get { - return !textBox.ReadOnly && textBox.SelectionLength > 0; - } - } - - bool IClipboardHandler.CanCopy { - get { - return textBox.SelectionLength > 0; - } - } - - bool IClipboardHandler.CanDelete { - get { - return !textBox.ReadOnly && textBox.SelectionLength > 0; - } - } - - void IClipboardHandler.Paste() - { - textBox.Paste(); - } - - void IClipboardHandler.Cut() - { - textBox.Cut(); - } - - void IClipboardHandler.Copy() - { - textBox.Copy(); - } - - void IClipboardHandler.Delete() - { - textBox.SelectedText = ""; - } - #endregion - - #region IUndoHandler implementation - bool IUndoHandler.CanUndo { - get { - return textBox.CanUndo; - } - } - - bool IUndoHandler.CanRedo { - get { - return false; - } - } - - void IUndoHandler.Undo() - { - textBox.Undo(); - } - - void IUndoHandler.Redo() - { - throw new NotImplementedException(); - } - #endregion - } -} diff --git a/samples/ICSharpCode.Core.Demo/Base/Workbench.cs b/samples/ICSharpCode.Core.Demo/Base/Workbench.cs deleted file mode 100644 index 64d57db400..0000000000 --- a/samples/ICSharpCode.Core.Demo/Base/Workbench.cs +++ /dev/null @@ -1,141 +0,0 @@ -// Copyright (c) 2005 Daniel Grunwald -// Licensed under the terms of the "BSD License", see doc/license.txt - -using System; -using System.ComponentModel; -using System.Windows.Forms; - -using ICSharpCode.Core.WinForms; - -namespace Base -{ - /// - /// The main form of the application. - /// - public sealed class Workbench : Form - { - static Workbench instance; - - public static Workbench Instance { - get { - return instance; - } - } - - public static void InitializeWorkbench() - { - instance = new Workbench(); - } - - MenuStrip menu; - ToolStrip toolbar; - Panel contentPanel; - - private Workbench() - { - // restore form location from last session - FormLocationHelper.Apply(this, "StartupFormPosition", true); - - contentPanel = new Panel(); - contentPanel.Dock = DockStyle.Fill; - this.Controls.Add(contentPanel); - - menu = new MenuStrip(); - MenuService.AddItemsToMenu(menu.Items, this, "/Workbench/MainMenu"); - - toolbar = ToolbarService.CreateToolStrip(this, "/Workbench/Toolbar"); - - this.Controls.Add(toolbar); - this.Controls.Add(menu); - - // Start with an empty text file - ShowContent(new TextViewContent()); - - // Use the Idle event to update the status of menu and toolbar items. - Application.Idle += OnApplicationIdle; - } - - protected override void Dispose(bool disposing) - { - if (disposing) { - Application.Idle -= OnApplicationIdle; - } - base.Dispose(disposing); - } - - void OnApplicationIdle(object sender, EventArgs e) - { - // Use the Idle event to update the status of menu and toolbar. - // Depending on your application and the number of menu items with complex conditions, - // you might want to update the status less frequently. - UpdateMenuItemStatus(); - } - - /// Update Enabled/Visible state of items in the main menu based on conditions - void UpdateMenuItemStatus() - { - foreach (ToolStripItem item in menu.Items) { - if (item is IStatusUpdate) - (item as IStatusUpdate).UpdateStatus(); - } - } - - /// The active view content - IViewContent viewContent; - - public IViewContent ActiveViewContent { - get { - return viewContent; - } - } - - protected override void OnClosing(CancelEventArgs e) - { - base.OnClosing(e); - if (!e.Cancel) { - e.Cancel = !CloseCurrentContent(); - } - } - - public bool CloseCurrentContent() - { - IViewContent content = viewContent; - if (content != null) { - if (!content.Close()) { - return false; - } - viewContent = null; - content.TitleChanged -= OnTitleChanged; - OnTitleChanged(content, EventArgs.Empty); - foreach (Control ctl in contentPanel.Controls) { - ctl.Dispose(); - } - contentPanel.Controls.Clear(); - } - return true; - } - - public void ShowContent(IViewContent content) - { - if (viewContent != null) - throw new InvalidOperationException("There is still another content opened."); - viewContent = content; - Control ctl = content.Control; - ctl.Dock = DockStyle.Fill; - contentPanel.Controls.Add(ctl); - ctl.Focus(); - - content.TitleChanged += OnTitleChanged; - OnTitleChanged(content, EventArgs.Empty); - } - - void OnTitleChanged(object sender, EventArgs e) - { - if (viewContent != null) { - this.Text = viewContent.Title + " - ICSharpCode.Core.Demo"; - } else { - this.Text = "ICSharpCode.Core.Demo"; - } - } - } -} diff --git a/samples/ICSharpCode.Core.Demo/ICSharpCode.Core.Demo.rtf b/samples/ICSharpCode.Core.Demo/ICSharpCode.Core.Demo.rtf deleted file mode 100644 index 0626e9cca1..0000000000 --- a/samples/ICSharpCode.Core.Demo/ICSharpCode.Core.Demo.rtf +++ /dev/null @@ -1,29 +0,0 @@ -{\rtf1\ansi\ansicpg1252\uc1\deff0\stshfdbch0\stshfloch0\stshfhich0\stshfbi0\deflang1031\deflangfe1031{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} -{\f2\fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}{\f37\froman\fcharset238\fprq2 Times New Roman CE;}{\f38\froman\fcharset204\fprq2 Times New Roman Cyr;}{\f40\froman\fcharset161\fprq2 Times New Roman Greek;} -{\f41\froman\fcharset162\fprq2 Times New Roman Tur;}{\f42\froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f43\froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f44\froman\fcharset186\fprq2 Times New Roman Baltic;} -{\f45\froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f57\fmodern\fcharset238\fprq1 Courier New CE;}{\f58\fmodern\fcharset204\fprq1 Courier New Cyr;}{\f60\fmodern\fcharset161\fprq1 Courier New Greek;} -{\f61\fmodern\fcharset162\fprq1 Courier New Tur;}{\f62\fmodern\fcharset177\fprq1 Courier New (Hebrew);}{\f63\fmodern\fcharset178\fprq1 Courier New (Arabic);}{\f64\fmodern\fcharset186\fprq1 Courier New Baltic;} -{\f65\fmodern\fcharset163\fprq1 Courier New (Vietnamese);}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255; -\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{ -\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1031\langfe1031\cgrid\langnp1031\langfenp1031 \snext0 \styrsid3083618 Normal;}{\*\cs10 \additive \ssemihidden Default Paragraph Font;}{\* -\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv -\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs20\lang1024\langfe1024\cgrid\langnp1024\langfenp1024 \snext11 \ssemihidden Normal Table;}{\s15\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 -\f2\fs20\lang1033\langfe1031\cgrid\langnp1033\langfenp1031 \sbasedon0 \snext15 \styrsid13049063 Plain Text;}{\*\cs16 \additive \ul\cf2 \sbasedon10 \styrsid3083618 Hyperlink;}}{\*\latentstyles\lsdstimax156\lsdlockeddef0}{\*\rsidtbl \rsid2842370\rsid3083618 -\rsid7370522\rsid13049063\rsid15619894}{\*\generator Microsoft Word 11.0.6502;}{\info{\title ICSharpCode}{\author Daniel Grunwald}{\operator Daniel Grunwald}{\creatim\yr2006\mo2\dy12\hr15\min28}{\revtim\yr2006\mo2\dy12\hr15\min28}{\version2}{\edmins0} -{\nofpages1}{\nofwords39}{\nofchars249}{\nofcharsws287}{\vern24579}}\paperw11906\paperh16838\margl1152\margr1152\margt1417\margb1134 -\deftab708\widowctrl\ftnbj\aenddoc\hyphhotz425\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1152\dgvorigin1417\dghshow1\dgvshow1 -\jexpand\viewkind1\viewscale80\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\allowfieldendsel\wrppunct -\asianbrkrule\rsidroot2842370\newtblstyruls\nogrowautofit \fet0\sectd \linex0\headery708\footery708\colsx708\endnhere\sectlinegrid360\sectdefaultcl\sectrsid13049063\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2 -\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6 -\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang -{\pntxtb (}{\pntxta )}}\pard\plain \qj \li0\ri0\sa120\nowidctlpar\faauto\rin0\lin0\itap0\pararsid3083618 \fs24\lang1031\langfe1031\cgrid\langnp1031\langfenp1031 {\b\fs48\lang1023\langfe1031\langnp1023\insrsid3083618 ICSharpCode.Core Demo}{ -\lang1023\langfe1031\langnp1023\insrsid3083618 -\par This example shows you how you can use ICSharpCode.Core to create an AddIn-system for your own applications. -\par A description is available at }{\field{\*\fldinst {\lang1023\langfe1031\langnp1023\insrsid3083618 HYPERLINK "}{\lang1023\langfe1031\langnp1023\insrsid3083618\charrsid3083618 http://www.codeproject.com/csharp/ICSharpCodeCore.asp}{ -\lang1023\langfe1031\langnp1023\insrsid3083618 " }{\lang1023\langfe1031\langnp1023\insrsid3083618\charrsid216981 {\*\datafield -00d0c9ea79f9bace118c8200aa004ba90b02000000170000003600000068007400740070003a002f002f007700770077002e0063006f0064006500700072006f006a006500630074002e0063006f006d002f006300730068006100720070002f00490043005300680061007200700043006f006400650043006f0072006500 -2e006100730070000000e0c9ea79f9bace118c8200aa004ba90b6c00000068007400740070003a002f002f007700770077002e0063006f0064006500700072006f006a006500630074002e0063006f006d002f006300730068006100720070002f00490043005300680061007200700043006f006400650043006f00720065 -002e006100730070000000}}}{\fldrslt {\cs16\ul\cf2\lang1023\langfe1031\langnp1023\insrsid3083618\charrsid216981 http://www.codeproject.com/csharp/ICSharpCodeCore.asp}}}{\lang1023\langfe1031\langnp1023\insrsid3083618 .}{ -\lang1023\langfe1031\langnp1023\insrsid3083618\charrsid3083618 -\par }\pard\plain \s15\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid13049063 \f2\fs20\lang1033\langfe1031\cgrid\langnp1033\langfenp1031 {\insrsid3083618\charrsid13049063 -\par }} \ No newline at end of file diff --git a/samples/ICSharpCode.Core.Demo/ICSharpCode.Core.Demo.sln b/samples/ICSharpCode.Core.Demo/ICSharpCode.Core.Demo.sln deleted file mode 100644 index 89d802e732..0000000000 --- a/samples/ICSharpCode.Core.Demo/ICSharpCode.Core.Demo.sln +++ /dev/null @@ -1,54 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 11.00 -# Visual Studio 2010 -# SharpDevelop 4.0.0.5571 -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "doc", "doc", "{491D60D3-3F16-4887-8ED2-541535E4AACD}" - ProjectSection(SolutionItems) = postProject - doc\copyright.txt = doc\copyright.txt - doc\license.txt = doc\license.txt - EndProjectSection -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Base", "Base\Base.csproj", "{C9A2B6BC-5260-4DE3-8082-DCE8B391F7BB}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Startup", "Startup\Startup.csproj", "{0AF8FEF6-32B9-46BD-A270-AB3B20EB39A3}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AddInManager", "AddInManager\AddInManager.csproj", "{8B4FE9EF-5899-4E84-88DE-C37D021A0658}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RichTextEditor", "RichTextEditor\RichTextEditor.csproj", "{C663289E-DD00-463F-8988-9913DDDAEEE1}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core", "..\..\src\Main\Core\Project\ICSharpCode.Core.csproj", "{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core.WinForms", "..\..\src\Main\ICSharpCode.Core.WinForms\ICSharpCode.Core.WinForms.csproj", "{857CA1A3-FC88-4BE0-AB6A-D1EE772AB288}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {C9A2B6BC-5260-4DE3-8082-DCE8B391F7BB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C9A2B6BC-5260-4DE3-8082-DCE8B391F7BB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C9A2B6BC-5260-4DE3-8082-DCE8B391F7BB}.Release|Any CPU.Build.0 = Release|Any CPU - {C9A2B6BC-5260-4DE3-8082-DCE8B391F7BB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0AF8FEF6-32B9-46BD-A270-AB3B20EB39A3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0AF8FEF6-32B9-46BD-A270-AB3B20EB39A3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0AF8FEF6-32B9-46BD-A270-AB3B20EB39A3}.Release|Any CPU.Build.0 = Release|Any CPU - {0AF8FEF6-32B9-46BD-A270-AB3B20EB39A3}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8B4FE9EF-5899-4E84-88DE-C37D021A0658}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8B4FE9EF-5899-4E84-88DE-C37D021A0658}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8B4FE9EF-5899-4E84-88DE-C37D021A0658}.Release|Any CPU.Build.0 = Release|Any CPU - {8B4FE9EF-5899-4E84-88DE-C37D021A0658}.Release|Any CPU.ActiveCfg = Release|Any CPU - {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}.Release|Any CPU.Build.0 = Release|Any CPU - {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C663289E-DD00-463F-8988-9913DDDAEEE1}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C663289E-DD00-463F-8988-9913DDDAEEE1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C663289E-DD00-463F-8988-9913DDDAEEE1}.Release|Any CPU.Build.0 = Release|Any CPU - {C663289E-DD00-463F-8988-9913DDDAEEE1}.Release|Any CPU.ActiveCfg = Release|Any CPU - {857CA1A3-FC88-4BE0-AB6A-D1EE772AB288}.Debug|Any CPU.Build.0 = Debug|Any CPU - {857CA1A3-FC88-4BE0-AB6A-D1EE772AB288}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {857CA1A3-FC88-4BE0-AB6A-D1EE772AB288}.Release|Any CPU.Build.0 = Release|Any CPU - {857CA1A3-FC88-4BE0-AB6A-D1EE772AB288}.Release|Any CPU.ActiveCfg = Release|Any CPU - EndGlobalSection -EndGlobal diff --git a/samples/ICSharpCode.Core.Demo/RequiredLibraries/ICSharpCode.SharpZipLib.dll b/samples/ICSharpCode.Core.Demo/RequiredLibraries/ICSharpCode.SharpZipLib.dll deleted file mode 100755 index 77bafe8ba867a1618b8735200289f6fad68b825e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 143360 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 - - - - - - - - - - - - - - - - - - - diff --git a/samples/ICSharpCode.Core.Demo/RichTextEditor/RichTextEditor.cs b/samples/ICSharpCode.Core.Demo/RichTextEditor/RichTextEditor.cs deleted file mode 100644 index 930d0d074d..0000000000 --- a/samples/ICSharpCode.Core.Demo/RichTextEditor/RichTextEditor.cs +++ /dev/null @@ -1,125 +0,0 @@ -// Copyright (c) 2005 Daniel Grunwald -// Licensed under the terms of the "BSD License", see doc/license.txt - -using System; -using System.IO; -using System.Windows.Forms; -using Base; - -namespace RichTextEditor -{ - public class DisplayBinding : IDisplayBinding - { - public IViewContent OpenFile(string fileName) - { - if (Path.GetExtension(fileName).ToLowerInvariant() == ".rtf") { - return new RichTextViewContent(fileName); - } - return null; - } - } - - public class RichTextViewContent : FileViewContent, IClipboardHandler, IUndoHandler - { - RichTextBox textBox = new RichTextBox(); - - public RichTextViewContent() - { - textBox.RichTextShortcutsEnabled = false; - textBox.AcceptsTab = true; - textBox.ScrollBars = RichTextBoxScrollBars.Both; - textBox.TextChanged += delegate { - this.Dirty = true; - }; - } - - public RichTextViewContent(string fileName) : this() - { - textBox.LoadFile(fileName); - this.FileName = fileName; - this.Dirty = false; - } - - public override Control Control { - get { - return textBox; - } - } - - protected override bool Save(string fileName) - { - textBox.SaveFile(fileName); - return true; - } - - #region IClipboardHandler implementation - bool IClipboardHandler.CanPaste { - get { - return !textBox.ReadOnly; - } - } - - bool IClipboardHandler.CanCut { - get { - return !textBox.ReadOnly && textBox.SelectionLength > 0; - } - } - - bool IClipboardHandler.CanCopy { - get { - return textBox.SelectionLength > 0; - } - } - - bool IClipboardHandler.CanDelete { - get { - return !textBox.ReadOnly && textBox.SelectionLength > 0; - } - } - - void IClipboardHandler.Paste() - { - textBox.Paste(); - } - - void IClipboardHandler.Cut() - { - textBox.Cut(); - } - - void IClipboardHandler.Copy() - { - textBox.Copy(); - } - - void IClipboardHandler.Delete() - { - textBox.SelectedText = ""; - } - #endregion - - #region IUndoHandler implementation - bool IUndoHandler.CanUndo { - get { - return textBox.CanUndo; - } - } - - bool IUndoHandler.CanRedo { - get { - return textBox.CanRedo; - } - } - - void IUndoHandler.Undo() - { - textBox.Undo(); - } - - void IUndoHandler.Redo() - { - textBox.Redo(); - } - #endregion - } -} diff --git a/samples/ICSharpCode.Core.Demo/RichTextEditor/RichTextEditor.csproj b/samples/ICSharpCode.Core.Demo/RichTextEditor/RichTextEditor.csproj deleted file mode 100644 index 31bea2f896..0000000000 --- a/samples/ICSharpCode.Core.Demo/RichTextEditor/RichTextEditor.csproj +++ /dev/null @@ -1,73 +0,0 @@ - - - - Library - RichTextEditor - RichTextEditor - Debug - AnyCPU - {C663289E-DD00-463F-8988-9913DDDAEEE1} - False - False - False - Auto - 4194304 - AnyCPU - 4096 - 4 - false - v4.0 - - - ..\bin\AddIns\ - False - DEBUG;TRACE - true - Full - True - - - bin\Release\ - True - TRACE - False - None - False - - - - - 3.5 - - - - 3.5 - - - - - - 3.5 - - - - - - - - - {C9A2B6BC-5260-4DE3-8082-DCE8B391F7BB} - Base - False - - - Always - - - {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} - ICSharpCode.Core - False - - - - \ No newline at end of file diff --git a/samples/ICSharpCode.Core.Demo/RichTextEditor/RichTextEditor.sln b/samples/ICSharpCode.Core.Demo/RichTextEditor/RichTextEditor.sln deleted file mode 100644 index 8bfcf118e3..0000000000 --- a/samples/ICSharpCode.Core.Demo/RichTextEditor/RichTextEditor.sln +++ /dev/null @@ -1,6 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 9.00 -# SharpDevelop 2.0.0.936 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RichTextEditor", "RichTextEditor.csproj", "{C663289E-DD00-463F-8988-9913DDDAEEE1}" -EndProject -Global -EndGlobal diff --git a/samples/ICSharpCode.Core.Demo/Startup/AddIns/Base.addin b/samples/ICSharpCode.Core.Demo/Startup/AddIns/Base.addin deleted file mode 100644 index 93ec2e388d..0000000000 --- a/samples/ICSharpCode.Core.Demo/Startup/AddIns/Base.addin +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/samples/ICSharpCode.Core.Demo/Startup/AssemblyInfo.cs b/samples/ICSharpCode.Core.Demo/Startup/AssemblyInfo.cs deleted file mode 100644 index beafe4f558..0000000000 --- a/samples/ICSharpCode.Core.Demo/Startup/AssemblyInfo.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; - -// Information about this assembly is defined by the following -// attributes. -// -// change them to the information which is associated with the assembly -// you compile. - -[assembly: AssemblyTitle("ICSharpCode.Core.Demo startup")] -[assembly: AssemblyDescription("Startup application for ICSharpCode.Core.Demo")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("ic#code")] -[assembly: AssemblyProduct("ICSharpCode.Core.Demo")] -[assembly: AssemblyCopyright("")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// The assembly version has following format : -// -// Major.Minor.Build.Revision -// -// You can specify all values by your own or you can build default build and revision -// numbers with the '*' character (the default): - -[assembly: AssemblyVersion("1.0.*")] - diff --git a/samples/ICSharpCode.Core.Demo/Startup/ImageResources.resx b/samples/ICSharpCode.Core.Demo/Startup/ImageResources.resx deleted file mode 100755 index 5e5d6acd68..0000000000 --- a/samples/ICSharpCode.Core.Demo/Startup/ImageResources.resx +++ /dev/null @@ -1,277 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - - 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 - Cv71r/4OTrQ4xWMwWlcAAAAASUVORK5CYII= - - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAeJJREFUOE+lk9FP - klEYxv1TSsecde0f0FpZrTbbal7URVvZuuJCr7pq2WzLNWy0iSHNwtIB9qG0ltLSYRJpBomUgZPMGSyU - 8SmJIOiv7zssCdrAzXd77s77e5/nnPdUVR20HBPfUCWNB4QsI176HB8IL/9iX2y1ubTMwx6utz0nuLhc - GWIfCxT153Z26ep/g9Md4FJLZ2WIZdQnAM4QSJ/BH5Z5aH6NNCljm0hgdSV4MppAPxQXCq5kil31OTx7 - DjLbOeSNNJFYUgBKq31glfpmN76F9QLEZHOJc73ubXQjMreln7Q+DdP/du0/QIsxhmNK5mjTMJ/m43mI - Qcmr5t5MZVlNpFiKrPM1vIbpVVQAOqSckF+ZekUX5UjTS+ouDFLb+CwPUPNupbN7k7WmEDcMX3hgXSpy - IP/OsrCyhXtuA6M0g+bc4wJATqaZ/x7DF4zg8f9g/OMibb355701kERriHL5fojzd2aFjNI0mjPdBUD9 - 6auUqlU/KwBZJV4skWUuvMmYV8b+Ls6jQQ81DfryO3KtfUoA/p3810G37T3VJ3TlARdvukhldjANeemx - z2B8MS0mq80GyySHj98rD2jQOpXbtgrVNprRnO2h5lQX1Sc7leYODh27W3nN9/WZDnroDx0A5wwhdtmt - AAAAAElFTkSuQmCC - - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAlBJREFUOE+Vk11I - 01EYxv8XXXRlkRWFUGB54c0gKKK6CCmiUBTLLEjShJofVBgLc360qenm5ubUlS5rm66p08oyCvuQCkUi - 1NSRZmpWFJViZqjk16//HKhDiTzw3JzzPr/3ec/hCMJ/LqXBziW1lWyjg/+0zJdFyYwepnQR5jqNlBUi - fO5/R7VNv0idrc/+2SksPpeQ2DwEl7m73cL4cNWs/gzZmRww47Dm0tn2fEnIkTgdITEGgqQFCFWlOsaG - yj3M09+KmHQmUH5TTVlxFubCdEx5aVzTyilQJXpCKywaxn5Y5jrPiGa65eCULqlFgFslKn5/Nc3Gdpnr - qjWzeuTIodau4m5ZFg5zBnaTEqvxMjcMKRTr5Bg1Se40ZaYsRj7m44rd16CgplzHdJ8S+jM99UHc602G - Lhm8jaetMhzbdT2C2ZjBrx41fNJyryKXpsdad9HCEd5EQnMYU42BjD8J4H2pBJk01H0XJQYFPzuV9Dem - UmPXMtOrgI4YN6AtWjQeZ6opmPH6A4w83MNg9TaUsX7iOHI3oEiXymB7ErdtGlpeikm6EkTAaWiJYOZV - KBMvDjFat5ehmu18r/Cn+cpqTgT6zr+EMUdOR30ad2w50JMGrWLc10eZaAhi9GkAw7U7GXBI+GLZilPr - jUK6hbOxJ+cB+dmJVFnVOO/H0awX5tSkXUG9aiUP0ldRmbIOc6IPVy9sJmJhd9cI+syL6BVnyE6KIvnc - Mc5HB3MqfD+HD+5i324JOyR++Pv6sGnjWtav8WKDt9fyP9Oyf99yDH8BF8beaXozevMAAAAASUVORK5C - YII= - - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAhhJREFUOE+1U09r - E0EU70fIR9iPUBQ8eMrR46IN5JhCDz2oBA8SBHEpCMFgG5GiwdJdq2Ijqe6ldo3Wrmhri0gXazW2YbMt - UdNmm45ulf7R/HwzU1hLIzn54LFvhvn9eW9nOjr+R0wvBLhTXEf6bgV9w0sYLJQx/uoz2mq9c7eRn2pA - L67Bq+/i29YeWLBL9Q6u5ktI6w6Kr1dbE3HwA3sT/o8mbAfQRgE1LZPXtsPgbjZxaXAG4y/Kh0m48sbP - JgwbiKYAwwLYNkR4DEje5HsMFSI5l3l2kGD6/RYezzeEMgfzwzzMWSCRlV9OFk0xqhl06wNy+Tchyb2n - dXxhv4TVaFLazppAJ9VKL0MySxYoVI0hkXaw5AbovjAWEmTur4qBqZoEdfbKVCgTBObqdolBUW0ocRs1 - P8Cx2PWQ4PJtl6a9J+xLIB1OMHIilU2b1gSMqCZ9TdTq33FEHQgJcg8rWPF3qHcJVOKeyOyoJIioDqUk - UFM2SuUqus4YIcHEzFdYji8GxIGROAc41JJHc6E1B58wRRqWhzFrEVduTR78E5mRBSz7v0l1H0AgXgsH - +2DNcPBp3cep0/rhezA5V0Vfbg5ug+4CqaiaI/rmyWu+t1zdQIysDxdmW9/GiZcVnO+fgvHkI+YXV7BG - 067VA9Ezt91Fyvq/wH8/lKHCW/RcfITj8Rs4evIaYmdHkBl63v4xtX1tLQ78AZ3a8qxOv4hDAAAAAElF - TkSuQmCC - - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAlBJREFUOE+1k1lI - lGEUhn/owm6KFuqqq4LoJooIqouMwixMM4zEjKyJGJUSlcnSITU1RSe3SdPGyGVQc6tEUSkSIXFo13CM - FonUyGmy5p9xz+Lp/z8ZbGjzpgMv5+a8z1n4Pkn6H9HZnEH7zVQayxKYF7+hMg+3ynKO4LBVMWa7xmBf - Nme1vuSl67hi0GNMj/sVqBon5XqmnXVMOqoxF+sYH6kgJyWKF13xnD/tT7xmM7bOY4y0riY6bL8nRAWo - 5mlnDUUZR+m2ZCO/L2C4T89bywmaSgIJD/WmKnEVT/MkIg/v8wTUVeTMAuQbGBLDSNaFoI8K5lxkEDpt - IDEafyJCfciPXiMAIX7enoDqUgNTci1TdhPjQ5nYn0dhrVgu1Fu+jO7iRTwyegmzKp9tGz0BZlMGE/Yy - JgbSGH95irFnB5GbF5Nb3kqmqZELl2uJN5iJSS0hPMFIWGyWJ6C0MJXRQSNjfVpGH/vjur+Jj7dXCLM7 - pme+4XBOMjDsIDgihYDj+jlISW4S8qs0XA99cXWsx9m2ksFySXRWo/RWp5Cppp3efpsw3+2ysidIMwsp - zErgc88ZnO3rkFuWYq/3ov+6JMb+OvOdLy6l8wcHvW9sWHre4Rcag69i3rX3AN7bdyDlX4zD/iBCMS/h - U8NChioXYC2SiFZ2Vsd2T3BVmaDA3EZTh1VkVVs3rEW6lBwrHoj7yu6sVQ72c+d7ltfCXH+nm5rWJ3MA - dY3cpJPKCwtEE7SbgJ1bBFm9trqzu9vvspjgT3FIubZa8C/N67P9regHTvjvLQ3rR38AAAAASUVORK5C - YII= - - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAi1JREFUOE+1k/9P - UlEYxv2nWK2tVlttGmpltrCcEQ1XUjSMaUHJNLIpNcnCragplBvUoC/okJhZLG92ySUpU8RNICdIhAio - EF+e7r1UZMDW1jrb+8t7z/N83vucc8rK/sdyeYIwvpopWYbRaZTk0uIx0o0/V/JbGt7lVTwxT6CKKylt - oLd8xGYihS/hKGz2WaaeWUnoTATsMz7UCztx9Ex7cYN3jkUQU4tb4DR5LZaAcyEAg4VE5YlLMFmJQoNQ - JA61gUA6k4XPH9pCN9s+gZz2oq5Jjlq+DDfUz3Fba86bOGY9jHiUdDF0mvqT7A/F4fKEcE9nZf5d1jOI - B4ZxVJ2U5gyc8z70akegMX3AXb0ND1+8R6/GgvZbeog61OA2K3CA2lxR34JjZ69B2T8EsVyN/Q0XcwY3 - B14iGk8UpE43UukMNqhA6QyC4Q0srcQg7dagsbWHmuDHScj7jDC9nsJTqx0a4xjuaIfRqXoMSXc/hG0q - 8C4owGnqwEGeFOXHxThH9eoEV7G7VpiboE2pK0qnm9H1JLz+NUzOBfHWEcAQsQSuqAuVDa1gVZzKGUgU - jwoMqAzxNZbC3Od1jDvDYPdth+7NCpP8Yf4V7KoR5A1arg8gmQIoGMLxLJYjWSwEMphwb2J4MoZB2yqU - LBZUIxHGYB9HlBfTE4jl9+GmBPTHv6lfo//+GGoaZajmXQabumXl1HHt5TRjz5Hz2HlIgB3Vp7GNzWeo - RcX/+pq/AwHYL0leVl8fAAAAAElFTkSuQmCC - - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAewAAA - HsABES62twAAAHFJREFUOE+lk8ENwDAIAxmaATJhV2rLwxVNoDTmgZTPnSOHiIwhrWnBFk4JDjnFhhIA - pgQOVtXNG/jk+9wSPPDSgS8HzzslW3m1AAVVcHqDAETyK31HYOACp3sQNB7CfwRpMkr+WuUSplZ5/r3U - Z3KSCx3xPgnUs8LsAAAAAElFTkSuQmCC - - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAX9JREFUOE+d081L - AkEYBnD/Ba9duhV0rk4dCjxk0K17hBERZHiThK5dog5RZEpBKiaK4WethaYWVBoS2cehQyhZJARhZfn1 - xDvLStvuSjTwMIfd9zfzzu6o/Ilb/I43moWLy8AeOMX5dQ6qVoOKlYbVfYgerQ7OQEIZ2YldKQIrdg6R - 4yyP+OPyiHv/QhFY3tpF79B4M7KdOMNpRaBaq4MQAZIFbP4TWSD3UAQXT8GyHWRxhxPIF4rSNja8SQlA - L1Kx760KzyMfR7rAkJu7vBhZd0UlgCMUZ8XPdf7RE+oMEXYiamXVEZEAi7ZQEyCEQiDtwmhaEu+ADujn - oIMj4OATOGvwxTQToIqVMDM7rww0Gg28lyugFqYzHwyhCMUmaxD6qUll4KtSw8trGanLe/h2kwyhVSlU - bDCMYtOolgeE7y3MCxYf9qJHrB39nBnDIxOIWzVA2SxGqIB+1b9E292JEtfGEJOur/UlU7qAY4MdDKFW - /o10tauh6R8A51nDN0DfQkg+OxUiAAAAAElFTkSuQmCC - - - \ No newline at end of file diff --git a/samples/ICSharpCode.Core.Demo/Startup/Start.cs b/samples/ICSharpCode.Core.Demo/Startup/Start.cs deleted file mode 100755 index eeb53cdc8e..0000000000 --- a/samples/ICSharpCode.Core.Demo/Startup/Start.cs +++ /dev/null @@ -1,95 +0,0 @@ -// Copyright (c) 2005 Daniel Grunwald -// Licensed under the terms of the "BSD License", see doc/license.txt - -using System; -using System.IO; -using System.Reflection; -using System.Resources; -using System.Windows.Forms; -using ICSharpCode.Core; -using Base; - -namespace Startup -{ - public static class Start - { - [STAThread] - public static void Main(string[] args) - { - // The LoggingService is a small wrapper around log4net. - // Our application contains a .config file telling log4net to write - // to System.Diagnostics.Trace. - LoggingService.Info("Application start"); - - // Get a reference to the entry assembly (Startup.exe) - Assembly exe = typeof(Start).Assembly; - - // Set the root path of our application. ICSharpCode.Core looks for some other - // paths relative to the application root: - // "data/resources" for language resources, "data/options" for default options - FileUtility.ApplicationRootPath = Path.GetDirectoryName(exe.Location); - - LoggingService.Info("Starting core services..."); - - // CoreStartup is a helper class making starting the Core easier. - // The parameter is used as the application name, e.g. for the default title of - // MessageService.ShowMessage() calls. - CoreStartup coreStartup = new CoreStartup("Test application"); - // It is also used as default storage location for the application settings: - // "%Application Data%\%Application Name%", but you can override that by setting c.ConfigDirectory - - // Specify the name of the application settings file (.xml is automatically appended) - coreStartup.PropertiesName = "AppProperties"; - - // Initializes the Core services (ResourceService, PropertyService, etc.) - coreStartup.StartCoreServices(); - - // Registeres the default (English) strings and images. They are compiled as - // "EmbeddedResource" into Startup.exe. - // Localized strings are automatically picked up when they are put into the - // "data/resources" directory. - ResourceService.RegisterNeutralStrings(new ResourceManager("Startup.StringResources", exe)); - ResourceService.RegisterNeutralImages(new ResourceManager("Startup.ImageResources", exe)); - - LoggingService.Info("Looking for AddIns..."); - // Searches for ".addin" files in the application directory. - coreStartup.AddAddInsFromDirectory(Path.Combine(FileUtility.ApplicationRootPath, "AddIns")); - - // Searches for a "AddIns.xml" in the user profile that specifies the names of the - // add-ins that were deactivated by the user, and adds "external" AddIns. - coreStartup.ConfigureExternalAddIns(Path.Combine(PropertyService.ConfigDirectory, "AddIns.xml")); - - // Searches for add-ins installed by the user into his profile directory. This also - // performs the job of installing, uninstalling or upgrading add-ins if the user - // requested it the last time this application was running. - coreStartup.ConfigureUserAddIns(Path.Combine(PropertyService.ConfigDirectory, "AddInInstallTemp"), - Path.Combine(PropertyService.ConfigDirectory, "AddIns")); - - LoggingService.Info("Loading AddInTree..."); - // Now finally initialize the application. This parses the ".addin" files and - // creates the AddIn tree. It also automatically runs the commands in - // "/Workspace/Autostart" - coreStartup.RunInitialization(); - - LoggingService.Info("Initializing Workbench..."); - // Workbench is our class from the base project, this method creates an instance - // of the main form. - Workbench.InitializeWorkbench(); - - try { - LoggingService.Info("Running application..."); - // Workbench.Instance is the instance of the main form, run the message loop. - Application.Run(Workbench.Instance); - } finally { - try { - // Save changed properties - PropertyService.Save(); - } catch (Exception ex) { - MessageService.ShowException(ex, "Error storing properties"); - } - } - - LoggingService.Info("Application shutdown"); - } - } -} diff --git a/samples/ICSharpCode.Core.Demo/Startup/Startup.csproj b/samples/ICSharpCode.Core.Demo/Startup/Startup.csproj deleted file mode 100644 index a392153ec8..0000000000 --- a/samples/ICSharpCode.Core.Demo/Startup/Startup.csproj +++ /dev/null @@ -1,87 +0,0 @@ - - - - WinExe - Startup - Startup - Debug - AnyCPU - {0AF8FEF6-32B9-46BD-A270-AB3B20EB39A3} - False - False - False - Auto - 4194304 - AnyCPU - 4096 - 4 - false - ..\bin\ - v4.0 - app.manifest - - - False - DEBUG;TRACE - true - Full - True - - - True - TRACE - False - None - False - - - - - 3.5 - - - - 3.5 - - - - - - 3.5 - - - - - - - - - - Always - - - - - Always - - - {C9A2B6BC-5260-4DE3-8082-DCE8B391F7BB} - Base - - - - - Always - - - - Always - - - - {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} - ICSharpCode.Core - - - - \ No newline at end of file diff --git a/samples/ICSharpCode.Core.Demo/Startup/Startup.sln b/samples/ICSharpCode.Core.Demo/Startup/Startup.sln deleted file mode 100644 index eff3839ce3..0000000000 --- a/samples/ICSharpCode.Core.Demo/Startup/Startup.sln +++ /dev/null @@ -1,6 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 9.00 -# SharpDevelop 2.0.0.932 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Startup", "Startup.csproj", "{0AF8FEF6-32B9-46BD-A270-AB3B20EB39A3}" -EndProject -Global -EndGlobal diff --git a/samples/ICSharpCode.Core.Demo/Startup/StringResources.resx b/samples/ICSharpCode.Core.Demo/Startup/StringResources.resx deleted file mode 100755 index fb46e98ebd..0000000000 --- a/samples/ICSharpCode.Core.Demo/Startup/StringResources.resx +++ /dev/null @@ -1,225 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - &Browse... - - - Show Exception - - - &Help - - - &Delete - - - &Open - - - Retry - - - OK - - - Exception got - - - Next > - - - Large Icons - - - &File - - - &Close - - - Error while loading - - - &Change - - - Small Icons - - - Error while saving - - - Question - - - Start - - - Finished - - - &Remove - - - Finish - - - Can't load ${File}.File not found. - - - Error - - - &Update - - - Description - - - Ignore - - - Choose location - - - < Back - - - Create - - - &Edit - - - Warning - - - &Add - - - Browse - - - Cancel - - - AddIn Manager - - \ No newline at end of file diff --git a/samples/ICSharpCode.Core.Demo/Startup/app.config b/samples/ICSharpCode.Core.Demo/Startup/app.config deleted file mode 100644 index c518a14ffa..0000000000 --- a/samples/ICSharpCode.Core.Demo/Startup/app.config +++ /dev/null @@ -1,19 +0,0 @@ - - -
- - - - - - - - - - - - - - - - diff --git a/samples/ICSharpCode.Core.Demo/Startup/app.manifest b/samples/ICSharpCode.Core.Demo/Startup/app.manifest deleted file mode 100755 index af5efdb63a..0000000000 --- a/samples/ICSharpCode.Core.Demo/Startup/app.manifest +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/samples/ICSharpCode.Core.Demo/Startup/data/options/AppProperties.xml b/samples/ICSharpCode.Core.Demo/Startup/data/options/AppProperties.xml deleted file mode 100644 index d93865e7a7..0000000000 --- a/samples/ICSharpCode.Core.Demo/Startup/data/options/AppProperties.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/samples/ICSharpCode.Core.Demo/Startup/data/resources/StringResources.de.resources b/samples/ICSharpCode.Core.Demo/Startup/data/resources/StringResources.de.resources deleted file mode 100644 index 6774fe107eaa6b84b2576a0e1a131e37804017e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2057 zcmZ`)QD_uL7@keMXmYV2f)y;dny^TF9$HP)h>>2BJ9Au`OS9346w2P-e|N*}&C2X< zZ30ybLLc-+Z2MAcZJ%4JU@ZkL!hw+3N+B(2`_PxPAR?4LRPfDjPA>Fr_jdPZW@rBI z|G)YEncWA=|NNja#xB7ebHVeemYgNe4Wv!pdT*AjBFTha^K4f-ypYh3lk~VNMqf?t zQ+Gli4;(*`G%6_YrR5~_nV{fsJ4Xw1Zk5DnVR+aYvWH&VKXTw8?R$M>Ae<}^KCe+T zyGec*NWBD8*Gy_cJwv;TA1>N6S7h(bYiFik;y#EGw0E}VQHsaL_{FNk!nn=x|(W1pgRU?VVfox@xo z>^$cF!`OFduL7f^t)k7q9-`laxl#B{19JoIix}S#V{8}RuftYhzx80r6O34mxh%=v zL{G2)y$s{b!JE4F97We<1!kd5vJ@-g9)p{Y+XY|_j_;wr3C=IKI*$QlvudRKHn=C- z-6bNPW*#C&Wl-FAcZM{H>k>C}eHP|F*;w+a$UI+#sbyIi z)D-_{QE!GJQ=lRNBbG(opPvi07aT~yLGo^x)HIyc!HHV@1GpQli_f!Mr0cKY$ay4G zXE`eJ@8QUA;WQKK(A=v{A=lvAc0_04sJ<5OqK%6F2#~fdtsp+MS%?HY3Fk18L49nT z4pMgGbJmu_LX zp~dmTTO@8*1oyPKY1kEqQ~h%lGA;4fbR5++rs}u61~P7pktGYneT?^HsN#^+HjWXA zA_g|63T1+$<9eQ&Hzv7LBCRi57OvzZG1h-nx`?l5ZC7|&?6@oSBU)EJ2Tq?DrILV4 zEF-NlP)1t#C6L5We4Z2dR$N7=Kj#n^>mf|vlD_srs_Gko<#6wLo{jUC6oDu|1N%?h Ar2qf` diff --git a/samples/ICSharpCode.Core.Demo/doc/copyright.txt b/samples/ICSharpCode.Core.Demo/doc/copyright.txt deleted file mode 100644 index e61ab2d8c9..0000000000 --- a/samples/ICSharpCode.Core.Demo/doc/copyright.txt +++ /dev/null @@ -1,20 +0,0 @@ -"Base", "Startup" and "RichTextEditor": -Copyright 2005 by - Daniel Grunwald - Bierberger Str. 9 - 31174 Schellerten - Germany - - email: daniel@danielgrunwald.de - -ICSharpCode.Core, AddInManager: -Copyright 2002-2006 by - - AlphaSierraPapa, Christoph Wille - Vordernberger Strasse 27/8 - A-8700 Leoben - Austria - - email: office@alphasierrapapa.com - court of jurisdiction: Landesgericht Leoben - diff --git a/samples/ICSharpCode.Core.Demo/doc/license.txt b/samples/ICSharpCode.Core.Demo/doc/license.txt deleted file mode 100644 index e2db9a4c73..0000000000 --- a/samples/ICSharpCode.Core.Demo/doc/license.txt +++ /dev/null @@ -1,496 +0,0 @@ -The demo projects "Base", "Startup" and "RichTextEditor" are licensed under -these terms (MIT license): - ------------------------------------------------------------------------------ - -Copyright (c) 2005, Daniel Grunwald -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, - are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name of Daniel Grunwald nor the names of its contributors - may be used to endorse or promote products derived from this software without - specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY -EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT -SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT -OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR -TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, -EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -============================================================================= -============================================================================= - -"ICSharpCode.Core" and "AddInManager" are licensed under the terms of -the GNU Lesser General Public License: - ------------------------------------------------------------------------------ - - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS diff --git a/src/Automated.proj b/src/Automated.proj index 264455cd00..a1b5b5333e 100644 --- a/src/Automated.proj +++ b/src/Automated.proj @@ -109,16 +109,6 @@ Properties="Configuration=Release;BranchName=$(BranchName)"/> - - - - -