Browse Source

Added a custom ColorDialog that remembers any user defined custom colors.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@1888 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Matt Ward 20 years ago
parent
commit
a7a23e1400
  1. 3
      src/AddIns/Misc/CodeCoverage/Project/Src/CodeCoverageOptionsPanel.cs
  2. 1
      src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
  3. 85
      src/Main/Base/Project/Src/Gui/Dialogs/SharpDevelopColorDialog.cs
  4. 2
      src/Main/Base/Project/Src/TextEditor/Commands/ToolCommands.cs
  5. 1
      src/Main/Base/Test/ICSharpCode.SharpDevelop.Tests.csproj
  6. 82
      src/Main/Base/Test/SharpDevelopColorDialogTests.cs

3
src/AddIns/Misc/CodeCoverage/Project/Src/CodeCoverageOptionsPanel.cs

@ -92,8 +92,9 @@ namespace ICSharpCode.CodeCoverage @@ -92,8 +92,9 @@ namespace ICSharpCode.CodeCoverage
void SelectCustomColour(ColorPickerComboBox comboBox)
{
using (ColorDialog colorDialog = new ColorDialog()) {
using (SharpDevelopColorDialog colorDialog = new SharpDevelopColorDialog()) {
colorDialog.FullOpen = true;
colorDialog.Color = comboBox.SelectedColor;
if (colorDialog.ShowDialog() == DialogResult.OK) {
comboBox.SelectedColor = colorDialog.Color;
}

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

@ -710,6 +710,7 @@ @@ -710,6 +710,7 @@
<Compile Include="Src\TextEditor\Gui\Editor\IncrementalSearch.cs" />
<EmbeddedResource Include="Resources\IncrementalSearchCursor.cur" />
<EmbeddedResource Include="Resources\ReverseIncrementalSearchCursor.cur" />
<Compile Include="Src\Gui\Dialogs\SharpDevelopColorDialog.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\Libraries\DockPanel_Src\WinFormsUI\WinFormsUI.csproj">

85
src/Main/Base/Project/Src/Gui/Dialogs/SharpDevelopColorDialog.cs

@ -0,0 +1,85 @@ @@ -0,0 +1,85 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using ICSharpCode.Core;
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
namespace ICSharpCode.SharpDevelop.Gui
{
/// <summary>
/// A ColorDialog that remembers any custom colors defined.
/// </summary>
public class SharpDevelopColorDialog : ColorDialog
{
const string CustomColorsPropertyName = "SharpDevelopColorDialog.CustomColors";
public SharpDevelopColorDialog()
{
LoadCustomColors();
}
/// <summary>
/// Converts a string of colors separated by the '|' character
/// into an array of colors.
/// </summary>
public static int[] CustomColorsFromString(string s)
{
if (String.IsNullOrEmpty(s)) {
return null;
}
string[] items = s.Split('|');
List<int> colors = new List<int>();
foreach (string item in items) {
int color;
if (Int32.TryParse(item, out color)) {
colors.Add(color);
}
}
return colors.ToArray();
}
/// <summary>
/// Converts an integer array of colors into a string.
/// </summary>
public static string CustomColorsToString(int[] colors)
{
if (colors == null) {
return String.Empty;
}
StringBuilder s = new StringBuilder();
for (int i = 0; i < colors.Length; ++i) {
if (i != 0) {
s.Append('|');
}
s.Append(colors[i]);
}
return s.ToString();
}
protected override bool RunDialog(IntPtr hwndOwner)
{
bool result = base.RunDialog(hwndOwner);
SaveCustomColors();
return result;
}
void LoadCustomColors()
{
CustomColors = CustomColorsFromString(PropertyService.Get(CustomColorsPropertyName));
}
void SaveCustomColors()
{
PropertyService.Set(CustomColorsPropertyName, CustomColorsToString(CustomColors));
}
}
}

2
src/Main/Base/Project/Src/TextEditor/Commands/ToolCommands.cs

@ -39,7 +39,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands @@ -39,7 +39,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
}
TextEditorControl textarea = ((ITextEditorControlProvider)window.ViewContent).TextEditorControl;
using (ColorDialog cd = new ColorDialog()) {
using (SharpDevelopColorDialog cd = new SharpDevelopColorDialog()) {
if (cd.ShowDialog(ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainForm) == DialogResult.OK) {
string ext = Path.GetExtension(textarea.FileName).ToLowerInvariant();
string colorstr;

1
src/Main/Base/Test/ICSharpCode.SharpDevelop.Tests.csproj

@ -87,6 +87,7 @@ @@ -87,6 +87,7 @@
<Compile Include="Services_Navigation\INavigationPointTextFixture.cs" />
<Compile Include="Services_Navigation\TestNavigationPoint.cs" />
<Compile Include="Services_Navigation\NavigationServiceTestFixture.cs" />
<Compile Include="SharpDevelopColorDialogTests.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Project\ICSharpCode.SharpDevelop.csproj">

82
src/Main/Base/Test/SharpDevelopColorDialogTests.cs

@ -0,0 +1,82 @@ @@ -0,0 +1,82 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using ICSharpCode.SharpDevelop.Gui;
using NUnit.Framework;
using System;
namespace ICSharpCode.SharpDevelop.Tests
{
[TestFixture]
public class SharpDevelopColorDialogTests
{
[Test]
public void NullString()
{
Assert.IsNull(SharpDevelopColorDialog.CustomColorsFromString(null));
}
[Test]
public void EmptyString()
{
Assert.IsNull(SharpDevelopColorDialog.CustomColorsFromString(String.Empty));
}
[Test]
public void OneColorInString()
{
int[] colors = SharpDevelopColorDialog.CustomColorsFromString("34");
Assert.AreEqual(1, colors.Length);
Assert.AreEqual(34, colors[0]);
}
[Test]
public void TwoColorsInString()
{
int[] colors = SharpDevelopColorDialog.CustomColorsFromString("20|30");
Assert.AreEqual(2, colors.Length);
Assert.AreEqual(20, colors[0]);
Assert.AreEqual(30, colors[1]);
}
[Test]
public void SecondColorIsInvalid()
{
int[] colors = SharpDevelopColorDialog.CustomColorsFromString("20|Test");
Assert.AreEqual(1, colors.Length);
Assert.AreEqual(20, colors[0]);
}
[Test]
public void FirstColorIsInvalid()
{
int[] colors = SharpDevelopColorDialog.CustomColorsFromString("Test|20");
Assert.AreEqual(1, colors.Length);
Assert.AreEqual(20, colors[0]);
}
[Test]
public void NullIntColorsArray()
{
Assert.AreEqual(String.Empty, SharpDevelopColorDialog.CustomColorsToString(null));
}
[Test]
public void OneCustomColor()
{
int[] colors = new int[] { 10 };
Assert.AreEqual("10", SharpDevelopColorDialog.CustomColorsToString(colors));
}
[Test]
public void TwoCustomColors()
{
int[] colors = new int[] { 10, 20 };
Assert.AreEqual("10|20", SharpDevelopColorDialog.CustomColorsToString(colors));
}
}
}
Loading…
Cancel
Save