Initial commit

This commit is contained in:
Dionysus 2023-06-02 14:49:13 -04:00
commit ded2c99e48
Signed by: acidvegas
GPG Key ID: EF4B922DB85DC9DE
39 changed files with 7869 additions and 0 deletions

BIN
.screens/preview.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

13
README.md Normal file
View File

@ -0,0 +1,13 @@
![](.screens/preview.png)
###### Requirements
* [Microsoft .NET Framework Version 2.0 Redistributable](https://www.microsoft.com/en-us/download/details.aspx?id=6523)
###### Mirrors
- [acid.vegas](https://acid.vegas/asciipumper)
- [SuperNETs](https://git.supernets.org/ircart/asciipumper)
- [GitHub](https://github.com/ircart/asciipumper)
- [GitLab](https://gitlab.com/ircart/asciipumper)
###### Credits
* Lampiasis

BIN
asciipumper/AsciiPumper.exe Normal file

Binary file not shown.

View File

@ -0,0 +1,110 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="AsciiPumper.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
<section name="ColorPumper.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<userSettings>
<AsciiPumper.Properties.Settings>
<setting name="PaintFontName" serializeAs="String">
<value>Consolas</value>
</setting>
<setting name="LMBIsForeground" serializeAs="String">
<value>False</value>
</setting>
<setting name="MMBIsForeground" serializeAs="String">
<value>True</value>
</setting>
<setting name="RMBIsForeground" serializeAs="String">
<value>False</value>
</setting>
<setting name="CellHeight" serializeAs="String">
<value>20</value>
</setting>
<setting name="CellWidth" serializeAs="String">
<value>10</value>
</setting>
<setting name="HighlightColor" serializeAs="String">
<value>Salmon</value>
</setting>
<setting name="SeperatorColor" serializeAs="String">
<value>DimGray</value>
</setting>
<setting name="Columns" serializeAs="String">
<value>80</value>
</setting>
<setting name="Rows" serializeAs="String">
<value>15</value>
</setting>
<setting name="LMBColor" serializeAs="String">
<value>0</value>
</setting>
<setting name="MMBColor" serializeAs="String">
<value>4</value>
</setting>
<setting name="RMBColor" serializeAs="String">
<value>1</value>
</setting>
<setting name="PaintFontSize" serializeAs="String">
<value>10</value>
</setting>
<setting name="ShouldWatermark" serializeAs="String">
<value>True</value>
</setting>
<setting name="RecentFiles" serializeAs="Xml">
<value>
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<string>asciipumper.txt</string>
</ArrayOfString>
</value>
</setting>
</AsciiPumper.Properties.Settings>
<ColorPumper.Properties.Settings>
<setting name="PaintFontName" serializeAs="String">
<value>Consolas</value>
</setting>
<setting name="PaintFontSize" serializeAs="String">
<value>10</value>
</setting>
<setting name="LMBIsForeground" serializeAs="String">
<value>True</value>
</setting>
<setting name="MMBIsForeground" serializeAs="String">
<value>False</value>
</setting>
<setting name="RMBIsForeground" serializeAs="String">
<value>False</value>
</setting>
<setting name="CellHeight" serializeAs="String">
<value>20</value>
</setting>
<setting name="CellWidth" serializeAs="String">
<value>10</value>
</setting>
<setting name="HighlightColor" serializeAs="String">
<value>OldLace</value>
</setting>
<setting name="SeperatorColor" serializeAs="String">
<value>DarkGray</value>
</setting>
<setting name="Columns" serializeAs="String">
<value>80</value>
</setting>
<setting name="Rows" serializeAs="String">
<value>15</value>
</setting>
<setting name="LMBColor" serializeAs="String">
<value>0</value>
</setting>
<setting name="MMBColor" serializeAs="String">
<value>4</value>
</setting>
<setting name="RMBColor" serializeAs="String">
<value>1</value>
</setting>
</ColorPumper.Properties.Settings>
</userSettings>
</configuration>

Binary file not shown.

BIN
asciipumper/MainIcon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
asciipumper/setup.exe Normal file

Binary file not shown.

187
source/AboutBox1.Designer.cs generated Normal file
View File

@ -0,0 +1,187 @@
namespace AsciiPumper
{
partial class AboutBox1
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AboutBox1));
this.tableLayoutPanel = new System.Windows.Forms.TableLayoutPanel();
this.logoPictureBox = new System.Windows.Forms.PictureBox();
this.labelProductName = new System.Windows.Forms.Label();
this.labelVersion = new System.Windows.Forms.Label();
this.labelCopyright = new System.Windows.Forms.Label();
this.labelCompanyName = new System.Windows.Forms.Label();
this.textBoxDescription = new System.Windows.Forms.TextBox();
this.okButton = new System.Windows.Forms.Button();
this.tableLayoutPanel.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.logoPictureBox)).BeginInit();
this.SuspendLayout();
//
// tableLayoutPanel
//
this.tableLayoutPanel.ColumnCount = 2;
this.tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33F));
this.tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 67F));
this.tableLayoutPanel.Controls.Add(this.logoPictureBox, 0, 0);
this.tableLayoutPanel.Controls.Add(this.labelProductName, 1, 0);
this.tableLayoutPanel.Controls.Add(this.labelVersion, 1, 1);
this.tableLayoutPanel.Controls.Add(this.labelCopyright, 1, 2);
this.tableLayoutPanel.Controls.Add(this.labelCompanyName, 1, 3);
this.tableLayoutPanel.Controls.Add(this.textBoxDescription, 1, 4);
this.tableLayoutPanel.Controls.Add(this.okButton, 1, 5);
this.tableLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill;
this.tableLayoutPanel.Location = new System.Drawing.Point(9, 9);
this.tableLayoutPanel.Name = "tableLayoutPanel";
this.tableLayoutPanel.RowCount = 6;
this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F));
this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F));
this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F));
this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F));
this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F));
this.tableLayoutPanel.Size = new System.Drawing.Size(694, 324);
this.tableLayoutPanel.TabIndex = 0;
//
// logoPictureBox
//
this.logoPictureBox.Dock = System.Windows.Forms.DockStyle.Fill;
this.logoPictureBox.Image = ((System.Drawing.Image)(resources.GetObject("logoPictureBox.Image")));
this.logoPictureBox.Location = new System.Drawing.Point(3, 3);
this.logoPictureBox.Name = "logoPictureBox";
this.tableLayoutPanel.SetRowSpan(this.logoPictureBox, 6);
this.logoPictureBox.Size = new System.Drawing.Size(223, 318);
this.logoPictureBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.logoPictureBox.TabIndex = 12;
this.logoPictureBox.TabStop = false;
//
// labelProductName
//
this.labelProductName.Dock = System.Windows.Forms.DockStyle.Fill;
this.labelProductName.Location = new System.Drawing.Point(235, 0);
this.labelProductName.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0);
this.labelProductName.MaximumSize = new System.Drawing.Size(0, 17);
this.labelProductName.Name = "labelProductName";
this.labelProductName.Size = new System.Drawing.Size(456, 17);
this.labelProductName.TabIndex = 19;
this.labelProductName.Text = "Product Name";
this.labelProductName.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// labelVersion
//
this.labelVersion.Dock = System.Windows.Forms.DockStyle.Fill;
this.labelVersion.Location = new System.Drawing.Point(235, 32);
this.labelVersion.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0);
this.labelVersion.MaximumSize = new System.Drawing.Size(0, 17);
this.labelVersion.Name = "labelVersion";
this.labelVersion.Size = new System.Drawing.Size(456, 17);
this.labelVersion.TabIndex = 0;
this.labelVersion.Text = "Version";
this.labelVersion.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// labelCopyright
//
this.labelCopyright.Dock = System.Windows.Forms.DockStyle.Fill;
this.labelCopyright.Location = new System.Drawing.Point(235, 64);
this.labelCopyright.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0);
this.labelCopyright.MaximumSize = new System.Drawing.Size(0, 17);
this.labelCopyright.Name = "labelCopyright";
this.labelCopyright.Size = new System.Drawing.Size(456, 17);
this.labelCopyright.TabIndex = 21;
this.labelCopyright.Text = "Copyright";
this.labelCopyright.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// labelCompanyName
//
this.labelCompanyName.Dock = System.Windows.Forms.DockStyle.Fill;
this.labelCompanyName.Location = new System.Drawing.Point(235, 96);
this.labelCompanyName.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0);
this.labelCompanyName.MaximumSize = new System.Drawing.Size(0, 17);
this.labelCompanyName.Name = "labelCompanyName";
this.labelCompanyName.Size = new System.Drawing.Size(456, 17);
this.labelCompanyName.TabIndex = 22;
this.labelCompanyName.Text = "Company Name";
this.labelCompanyName.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// textBoxDescription
//
this.textBoxDescription.Dock = System.Windows.Forms.DockStyle.Fill;
this.textBoxDescription.Location = new System.Drawing.Point(235, 131);
this.textBoxDescription.Margin = new System.Windows.Forms.Padding(6, 3, 3, 3);
this.textBoxDescription.Multiline = true;
this.textBoxDescription.Name = "textBoxDescription";
this.textBoxDescription.ReadOnly = true;
this.textBoxDescription.ScrollBars = System.Windows.Forms.ScrollBars.Both;
this.textBoxDescription.Size = new System.Drawing.Size(456, 156);
this.textBoxDescription.TabIndex = 23;
this.textBoxDescription.TabStop = false;
this.textBoxDescription.Text = "Description";
//
// okButton
//
this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.okButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.okButton.Location = new System.Drawing.Point(616, 298);
this.okButton.Name = "okButton";
this.okButton.Size = new System.Drawing.Size(75, 23);
this.okButton.TabIndex = 24;
this.okButton.Text = "&OK";
//
// AboutBox1
//
this.AcceptButton = this.okButton;
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(712, 342);
this.Controls.Add(this.tableLayoutPanel);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "AboutBox1";
this.Padding = new System.Windows.Forms.Padding(9);
this.ShowIcon = false;
this.ShowInTaskbar = false;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "About Ascii Pumper";
this.Load += new System.EventHandler(this.AboutBox1_Load);
this.tableLayoutPanel.ResumeLayout(false);
this.tableLayoutPanel.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.logoPictureBox)).EndInit();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel;
private System.Windows.Forms.PictureBox logoPictureBox;
private System.Windows.Forms.Label labelProductName;
private System.Windows.Forms.Label labelVersion;
private System.Windows.Forms.Label labelCopyright;
private System.Windows.Forms.Label labelCompanyName;
private System.Windows.Forms.TextBox textBoxDescription;
private System.Windows.Forms.Button okButton;
}
}

165
source/AboutBox1.cs Normal file
View File

@ -0,0 +1,165 @@
#region Copyright (c) 2007, PP4L Software
/************************************************************************************
Copyright 2007, PP4L Software
Author: Lampiasis <lampiasis@dvolker.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
'***********************************************************************************/
#endregion
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
using System.Reflection;
namespace AsciiPumper
{
partial class AboutBox1 : Form
{
public AboutBox1()
{
InitializeComponent();
// Initialize the AboutBox to display the product information from the assembly information.
// Change assembly information settings for your application through either:
// - Project->Properties->Application->Assembly Information
// - AssemblyInfo.cs
this.Text = String.Format("About {0}", AssemblyTitle);
//this.labelProductName.Text = AssemblyProduct;
this.labelProductName.Text = "Ascii Pumper";
this.labelVersion.Text = String.Format("Version {0}", AssemblyVersion);
this.labelCopyright.Text = AssemblyCopyright;
this.labelCompanyName.Text = AssemblyCompany;
this.textBoxDescription.Text = AssemblyDescription + "\r\n\r\nya we pumpin'!\r\n\r\n";
this.textBoxDescription.Text += @"
Thanks vap0r for asciipumper.txt, ramprat for bug reports and all the
pumpers for their input.
http://code.google.com/p/asciipumper/
Copyright (C) 2007 Lampiasis <lampiasis@dvolker.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
";
}
#region Assembly Attribute Accessors
public string AssemblyTitle
{
get
{
// Get all Title attributes on this assembly
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyTitleAttribute), false);
// If there is at least one Title attribute
if (attributes.Length > 0)
{
// Select the first one
AssemblyTitleAttribute titleAttribute = (AssemblyTitleAttribute)attributes[0];
// If it is not an empty string, return it
if (titleAttribute.Title != "")
return titleAttribute.Title;
}
// If there was no Title attribute, or if the Title attribute was the empty string, return the .exe name
return System.IO.Path.GetFileNameWithoutExtension(Assembly.GetExecutingAssembly().CodeBase);
}
}
public string AssemblyVersion
{
get
{
return Assembly.GetExecutingAssembly().GetName().Version.ToString();
}
}
public string AssemblyDescription
{
get
{
// Get all Description attributes on this assembly
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyDescriptionAttribute), false);
// If there aren't any Description attributes, return an empty string
if (attributes.Length == 0)
return "";
// If there is a Description attribute, return its value
return ((AssemblyDescriptionAttribute)attributes[0]).Description;
}
}
public string AssemblyProduct
{
get
{
// Get all Product attributes on this assembly
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyProductAttribute), false);
// If there aren't any Product attributes, return an empty string
if (attributes.Length == 0)
return "";
// If there is a Product attribute, return its value
return ((AssemblyProductAttribute)attributes[0]).Product;
}
}
public string AssemblyCopyright
{
get
{
// Get all Copyright attributes on this assembly
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCopyrightAttribute), false);
// If there aren't any Copyright attributes, return an empty string
if (attributes.Length == 0)
return "";
// If there is a Copyright attribute, return its value
return ((AssemblyCopyrightAttribute)attributes[0]).Copyright;
}
}
public string AssemblyCompany
{
get
{
// Get all Company attributes on this assembly
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCompanyAttribute), false);
// If there aren't any Company attributes, return an empty string
if (attributes.Length == 0)
return "";
// If there is a Company attribute, return its value
return ((AssemblyCompanyAttribute)attributes[0]).Company;
}
}
#endregion
private void AboutBox1_Load(object sender, EventArgs e)
{
}
}
}

610
source/AboutBox1.resx Normal file
View File

@ -0,0 +1,610 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="logoPictureBox.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
AZ+4Ui+mkTlKAAAAAElFTkSuQmCC
</value>
</data>
</root>

190
source/AsciiPumper.csproj Normal file
View File

@ -0,0 +1,190 @@
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>9.0.20404</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{3F20CEF2-815A-43E2-9071-0D5462F245BF}</ProjectGuid>
<OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>AsciiPumper</RootNamespace>
<AssemblyName>AsciiPumper</AssemblyName>
<ManifestCertificateThumbprint>4DD6994A8DC8FB07112F22D88EE79355E4A1AEDB</ManifestCertificateThumbprint>
<ManifestKeyFile>AsciiPumper_TemporaryKey.pfx</ManifestKeyFile>
<GenerateManifests>true</GenerateManifests>
<SignManifests>true</SignManifests>
<IsWebBootstrapper>false</IsWebBootstrapper>
<ApplicationIcon>Resources\MainIcon.ico</ApplicationIcon>
<TargetZone>LocalIntranet</TargetZone>
<FileUpgradeFlags>
</FileUpgradeFlags>
<OldToolsVersion>2.0</OldToolsVersion>
<UpgradeBackupLocation>
</UpgradeBackupLocation>
<SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>asciipumper.pfx</AssemblyOriginatorKeyFile>
<PublishUrl>c:\temp\AsciiPumper\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<SupportUrl>http://code.google.com/p/asciipumper/</SupportUrl>
<ProductName>Ascii Pumper</ProductName>
<PublisherName>PP4L</PublisherName>
<CreateWebPageOnPublish>false</CreateWebPageOnPublish>
<ApplicationRevision>1</ApplicationRevision>
<ApplicationVersion>1.1.0.%2a</ApplicationVersion>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="AboutBox1.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="AboutBox1.Designer.cs">
<DependentUpon>AboutBox1.cs</DependentUpon>
</Compile>
<Compile Include="CellInfo.cs" />
<Compile Include="ColorPalette.cs" />
<Compile Include="ColorSelector.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="ColorSelector.Designer.cs">
<DependentUpon>ColorSelector.cs</DependentUpon>
</Compile>
<Compile Include="ImageImporter.cs" />
<Compile Include="KeypressAction.cs" />
<Compile Include="MainForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="MainForm.Designer.cs">
<DependentUpon>MainForm.cs</DependentUpon>
</Compile>
<Compile Include="OptionsForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="OptionsForm.Designer.cs">
<DependentUpon>OptionsForm.cs</DependentUpon>
</Compile>
<Compile Include="PaintAction.cs" />
<Compile Include="PaintCanvas.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="PaintCanvas.Designer.cs">
<DependentUpon>PaintCanvas.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="AboutBox1.resx">
<SubType>Designer</SubType>
<DependentUpon>AboutBox1.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="ColorSelector.resx">
<SubType>Designer</SubType>
<DependentUpon>ColorSelector.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="MainForm.resx">
<SubType>Designer</SubType>
<DependentUpon>MainForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="OptionsForm.resx">
<SubType>Designer</SubType>
<DependentUpon>OptionsForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="PaintCanvas.resx">
<SubType>Designer</SubType>
<DependentUpon>PaintCanvas.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="PumpForm.resx">
<SubType>Designer</SubType>
<DependentUpon>PumpForm.cs</DependentUpon>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<None Include="app.config" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
<Compile Include="PumpForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="PumpForm.Designer.cs">
<DependentUpon>PumpForm.cs</DependentUpon>
</Compile>
<Compile Include="Settings.cs" />
<Compile Include="UndoableAction.cs" />
</ItemGroup>
<ItemGroup>
<Content Include="asciipumper.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="license.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="README.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<BaseApplicationManifest Include="Properties\app.manifest" />
<None Include="asciipumper.pfx" />
<None Include="Resources\MainIcon.ico" />
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include="Microsoft.Net.Framework.2.0">
<Visible>False</Visible>
<ProductName>.NET Framework 2.0 %28x86%29</ProductName>
<Install>true</Install>
</BootstrapperPackage>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

View File

@ -0,0 +1,110 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="AsciiPumper.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
<section name="ColorPumper.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<userSettings>
<AsciiPumper.Properties.Settings>
<setting name="PaintFontName" serializeAs="String">
<value>Consolas</value>
</setting>
<setting name="LMBIsForeground" serializeAs="String">
<value>False</value>
</setting>
<setting name="MMBIsForeground" serializeAs="String">
<value>True</value>
</setting>
<setting name="RMBIsForeground" serializeAs="String">
<value>False</value>
</setting>
<setting name="CellHeight" serializeAs="String">
<value>20</value>
</setting>
<setting name="CellWidth" serializeAs="String">
<value>10</value>
</setting>
<setting name="HighlightColor" serializeAs="String">
<value>Salmon</value>
</setting>
<setting name="SeperatorColor" serializeAs="String">
<value>DimGray</value>
</setting>
<setting name="Columns" serializeAs="String">
<value>80</value>
</setting>
<setting name="Rows" serializeAs="String">
<value>15</value>
</setting>
<setting name="LMBColor" serializeAs="String">
<value>0</value>
</setting>
<setting name="MMBColor" serializeAs="String">
<value>4</value>
</setting>
<setting name="RMBColor" serializeAs="String">
<value>1</value>
</setting>
<setting name="PaintFontSize" serializeAs="String">
<value>10</value>
</setting>
<setting name="ShouldWatermark" serializeAs="String">
<value>True</value>
</setting>
<setting name="RecentFiles" serializeAs="Xml">
<value>
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<string>asciipumper.txt</string>
</ArrayOfString>
</value>
</setting>
</AsciiPumper.Properties.Settings>
<ColorPumper.Properties.Settings>
<setting name="PaintFontName" serializeAs="String">
<value>Consolas</value>
</setting>
<setting name="PaintFontSize" serializeAs="String">
<value>10</value>
</setting>
<setting name="LMBIsForeground" serializeAs="String">
<value>True</value>
</setting>
<setting name="MMBIsForeground" serializeAs="String">
<value>False</value>
</setting>
<setting name="RMBIsForeground" serializeAs="String">
<value>False</value>
</setting>
<setting name="CellHeight" serializeAs="String">
<value>20</value>
</setting>
<setting name="CellWidth" serializeAs="String">
<value>10</value>
</setting>
<setting name="HighlightColor" serializeAs="String">
<value>OldLace</value>
</setting>
<setting name="SeperatorColor" serializeAs="String">
<value>DarkGray</value>
</setting>
<setting name="Columns" serializeAs="String">
<value>80</value>
</setting>
<setting name="Rows" serializeAs="String">
<value>15</value>
</setting>
<setting name="LMBColor" serializeAs="String">
<value>0</value>
</setting>
<setting name="MMBColor" serializeAs="String">
<value>4</value>
</setting>
<setting name="RMBColor" serializeAs="String">
<value>1</value>
</setting>
</ColorPumper.Properties.Settings>
</userSettings>
</configuration>

69
source/CellInfo.cs Normal file
View File

@ -0,0 +1,69 @@
#region Copyright (c) 2007, PP4L Software
/************************************************************************************
Copyright 2007, PP4L Software
Author: Lampiasis <lampiasis@dvolker.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
'***********************************************************************************/
#endregion
using System;
using System.Collections.Generic;
using System.Text;
namespace AsciiPumper
{
public class CellInfo
{
public CellInfo()
{
Selected = false;
Character = ' ';
BackColor = 1;
ForeColor = 0;
}
public CellInfo(char character, byte backcolor, byte forecolor)
{
Selected = false;
Character = character;
BackColor = backcolor;
ForeColor = forecolor;
}
public bool Bold = false;
public bool Underlined = false;
/// <summary>
/// Gets or sets the Selected.
/// </summary>
public bool Selected;
public char Character;
public byte BackColor;
public byte ForeColor;
}
}

99
source/ColorPalette.cs Normal file
View File

@ -0,0 +1,99 @@
#region Copyright (c) 2007, PP4L Software
/************************************************************************************
Copyright 2007, PP4L Software
Author: Lampiasis <lampiasis@dvolker.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
'***********************************************************************************/
#endregion
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
namespace AsciiPumper
{
public class ColorPalette : List<Color>
{
public SolidBrush [] SolidBrushes = new SolidBrush[16];
/*
0 white
1 black
2 blue (navy)
3 green
4 red
5 brown (maroon)
6 purple
7 orange (olive)
8 yellow
9 lt.green (lime)
10 teal (a kinda green/blue cyan)
11 lt.cyan (cyan ?) (aqua)
12 lt.blue (royal)
13 pink (light purple) (fuchsia)
14 grey
15 lt.grey (silver)
*/
public ColorPalette() : base(16)
{
this.Add(Color.White);
this.Add(Color.Black);
this.Add(Color.FromArgb(0, 0, 127)); // this.Add(Color.Blue);
this.Add(Color.FromArgb(0, 147, 0)); // this.Add(Color.Green);
this.Add(Color.FromArgb(255, 0, 0)); // this.Add(Color.Red);
this.Add(Color.FromArgb(127, 0, 0)); // this.Add(Color.Brown);
this.Add(Color.FromArgb(156, 0, 156)); // this.Add(Color.Purple);
this.Add(Color.FromArgb(252, 127, 0)); // this.Add(Color.Orange);
this.Add(Color.FromArgb(255, 255, 0)); // this.Add( Color.Yellow);
this.Add(Color.FromArgb(0, 252, 0)); // this.Add( Color.LightGreen);
this.Add(Color.FromArgb(0, 147, 147)); // this.Add( Color.Teal);
this.Add(Color.FromArgb(0, 255, 255)); // this.Add( Color.LightCyan);
this.Add(Color.FromArgb(0, 0, 252)); // this.Add( Color.LightBlue);
this.Add(Color.FromArgb(255, 0, 255)); // this.Add( Color.Pink);
this.Add(Color.FromArgb(127, 127, 127)); // this.Add( Color.Gray);
this.Add(Color.FromArgb(210, 210, 210)); // this.Add(Color.LightGray);
for(int i = 0; i < 16; i++)
SolidBrushes[i] = new SolidBrush(this[i]);
}
public byte FindClosestColor(Color color)
{
byte smallestindex = 0;
int smallestdistance = int.MaxValue;
for (byte i = 0; i < this.Count; i++)
{
Color curcolor = this[i];
int distance = (curcolor.R - color.R) * (curcolor.R - color.R) + (curcolor.G - color.G) * (curcolor.G - color.G) + (curcolor.B - color.B) * (curcolor.B - color.B);
if (distance < smallestdistance)
{
smallestdistance = distance;
smallestindex = i;
}
}
return smallestindex;
}
}
}

317
source/ColorSelector.Designer.cs generated Normal file
View File

@ -0,0 +1,317 @@
namespace AsciiPumper
{
partial class ColorSelector
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.colorLayoutPanel = new System.Windows.Forms.FlowLayoutPanel();
this.color0 = new System.Windows.Forms.PictureBox();
this.color1 = new System.Windows.Forms.PictureBox();
this.color2 = new System.Windows.Forms.PictureBox();
this.color3 = new System.Windows.Forms.PictureBox();
this.color4 = new System.Windows.Forms.PictureBox();
this.color5 = new System.Windows.Forms.PictureBox();
this.color7 = new System.Windows.Forms.PictureBox();
this.color8 = new System.Windows.Forms.PictureBox();
this.color9 = new System.Windows.Forms.PictureBox();
this.color10 = new System.Windows.Forms.PictureBox();
this.color11 = new System.Windows.Forms.PictureBox();
this.color12 = new System.Windows.Forms.PictureBox();
this.color13 = new System.Windows.Forms.PictureBox();
this.color14 = new System.Windows.Forms.PictureBox();
this.color15 = new System.Windows.Forms.PictureBox();
this.color6 = new System.Windows.Forms.PictureBox();
this.colorLayoutPanel.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.color0)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.color1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.color2)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.color3)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.color4)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.color5)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.color7)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.color8)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.color9)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.color10)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.color11)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.color12)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.color13)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.color14)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.color15)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.color6)).BeginInit();
this.SuspendLayout();
//
// colorLayoutPanel
//
this.colorLayoutPanel.Controls.Add(this.color0);
this.colorLayoutPanel.Controls.Add(this.color1);
this.colorLayoutPanel.Controls.Add(this.color2);
this.colorLayoutPanel.Controls.Add(this.color3);
this.colorLayoutPanel.Controls.Add(this.color4);
this.colorLayoutPanel.Controls.Add(this.color5);
this.colorLayoutPanel.Controls.Add(this.color6);
this.colorLayoutPanel.Controls.Add(this.color7);
this.colorLayoutPanel.Controls.Add(this.color8);
this.colorLayoutPanel.Controls.Add(this.color9);
this.colorLayoutPanel.Controls.Add(this.color10);
this.colorLayoutPanel.Controls.Add(this.color11);
this.colorLayoutPanel.Controls.Add(this.color12);
this.colorLayoutPanel.Controls.Add(this.color13);
this.colorLayoutPanel.Controls.Add(this.color14);
this.colorLayoutPanel.Controls.Add(this.color15);
this.colorLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill;
this.colorLayoutPanel.Location = new System.Drawing.Point(0, 0);
this.colorLayoutPanel.Name = "colorLayoutPanel";
this.colorLayoutPanel.Size = new System.Drawing.Size(208, 52);
this.colorLayoutPanel.TabIndex = 0;
//
// color0
//
this.color0.BackColor = System.Drawing.Color.White;
this.color0.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.color0.Location = new System.Drawing.Point(3, 3);
this.color0.Name = "color0";
this.color0.Size = new System.Drawing.Size(20, 20);
this.color0.TabIndex = 0;
this.color0.TabStop = false;
this.color0.MouseClick += new System.Windows.Forms.MouseEventHandler(this.color0_MouseClick);
//
// color1
//
this.color1.BackColor = System.Drawing.Color.Black;
this.color1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.color1.Location = new System.Drawing.Point(29, 3);
this.color1.Name = "color1";
this.color1.Size = new System.Drawing.Size(20, 20);
this.color1.TabIndex = 1;
this.color1.TabStop = false;
this.color1.Click += new System.EventHandler(this.color1_Click);
this.color1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.color1_MouseClick);
//
// color2
//
this.color2.BackColor = System.Drawing.Color.Blue;
this.color2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.color2.Location = new System.Drawing.Point(55, 3);
this.color2.Name = "color2";
this.color2.Size = new System.Drawing.Size(20, 20);
this.color2.TabIndex = 2;
this.color2.TabStop = false;
this.color2.MouseClick += new System.Windows.Forms.MouseEventHandler(this.color2_MouseClick);
//
// color3
//
this.color3.BackColor = System.Drawing.Color.Green;
this.color3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.color3.Location = new System.Drawing.Point(81, 3);
this.color3.Name = "color3";
this.color3.Size = new System.Drawing.Size(20, 20);
this.color3.TabIndex = 3;
this.color3.TabStop = false;
this.color3.MouseClick += new System.Windows.Forms.MouseEventHandler(this.color3_MouseClick);
//
// color4
//
this.color4.BackColor = System.Drawing.Color.Red;
this.color4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.color4.Location = new System.Drawing.Point(107, 3);
this.color4.Name = "color4";
this.color4.Size = new System.Drawing.Size(20, 20);
this.color4.TabIndex = 4;
this.color4.TabStop = false;
this.color4.MouseClick += new System.Windows.Forms.MouseEventHandler(this.color4_MouseClick);
//
// color5
//
this.color5.BackColor = System.Drawing.Color.Brown;
this.color5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.color5.Location = new System.Drawing.Point(133, 3);
this.color5.Name = "color5";
this.color5.Size = new System.Drawing.Size(20, 20);
this.color5.TabIndex = 5;
this.color5.TabStop = false;
this.color5.MouseClick += new System.Windows.Forms.MouseEventHandler(this.color5_MouseClick);
//
// color7
//
this.color7.BackColor = System.Drawing.Color.Orange;
this.color7.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.color7.Location = new System.Drawing.Point(185, 3);
this.color7.Name = "color7";
this.color7.Size = new System.Drawing.Size(20, 20);
this.color7.TabIndex = 6;
this.color7.TabStop = false;
this.color7.MouseClick += new System.Windows.Forms.MouseEventHandler(this.color7_MouseClick);
//
// color8
//
this.color8.BackColor = System.Drawing.Color.Yellow;
this.color8.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.color8.Location = new System.Drawing.Point(3, 29);
this.color8.Name = "color8";
this.color8.Size = new System.Drawing.Size(20, 20);
this.color8.TabIndex = 7;
this.color8.TabStop = false;
this.color8.MouseClick += new System.Windows.Forms.MouseEventHandler(this.color8_MouseClick);
//
// color9
//
this.color9.BackColor = System.Drawing.Color.LightGreen;
this.color9.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.color9.Location = new System.Drawing.Point(29, 29);
this.color9.Name = "color9";
this.color9.Size = new System.Drawing.Size(20, 20);
this.color9.TabIndex = 8;
this.color9.TabStop = false;
this.color9.MouseClick += new System.Windows.Forms.MouseEventHandler(this.color9_MouseClick);
//
// color10
//
this.color10.BackColor = System.Drawing.Color.Teal;
this.color10.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.color10.Location = new System.Drawing.Point(55, 29);
this.color10.Name = "color10";
this.color10.Size = new System.Drawing.Size(20, 20);
this.color10.TabIndex = 9;
this.color10.TabStop = false;
this.color10.MouseClick += new System.Windows.Forms.MouseEventHandler(this.color10_MouseClick);
//
// color11
//
this.color11.BackColor = System.Drawing.Color.LightCyan;
this.color11.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.color11.Location = new System.Drawing.Point(81, 29);
this.color11.Name = "color11";
this.color11.Size = new System.Drawing.Size(20, 20);
this.color11.TabIndex = 10;
this.color11.TabStop = false;
this.color11.Click += new System.EventHandler(this.color11_Click);
this.color11.MouseClick += new System.Windows.Forms.MouseEventHandler(this.color11_MouseClick);
//
// color12
//
this.color12.BackColor = System.Drawing.Color.LightBlue;
this.color12.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.color12.Location = new System.Drawing.Point(107, 29);
this.color12.Name = "color12";
this.color12.Size = new System.Drawing.Size(20, 20);
this.color12.TabIndex = 11;
this.color12.TabStop = false;
this.color12.MouseClick += new System.Windows.Forms.MouseEventHandler(this.color12_MouseClick);
//
// color13
//
this.color13.BackColor = System.Drawing.Color.Pink;
this.color13.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.color13.Location = new System.Drawing.Point(133, 29);
this.color13.Name = "color13";
this.color13.Size = new System.Drawing.Size(20, 20);
this.color13.TabIndex = 12;
this.color13.TabStop = false;
this.color13.MouseClick += new System.Windows.Forms.MouseEventHandler(this.color13_MouseClick);
//
// color14
//
this.color14.BackColor = System.Drawing.Color.Gray;
this.color14.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.color14.Location = new System.Drawing.Point(159, 29);
this.color14.Name = "color14";
this.color14.Size = new System.Drawing.Size(20, 20);
this.color14.TabIndex = 13;
this.color14.TabStop = false;
this.color14.MouseClick += new System.Windows.Forms.MouseEventHandler(this.color14_MouseClick);
//
// color15
//
this.color15.BackColor = System.Drawing.Color.LightGray;
this.color15.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.color15.Location = new System.Drawing.Point(185, 29);
this.color15.Name = "color15";
this.color15.Size = new System.Drawing.Size(20, 20);
this.color15.TabIndex = 14;
this.color15.TabStop = false;
this.color15.MouseClick += new System.Windows.Forms.MouseEventHandler(this.color15_MouseClick);
//
// color6
//
this.color6.BackColor = System.Drawing.Color.Purple;
this.color6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.color6.Location = new System.Drawing.Point(159, 3);
this.color6.Name = "color6";
this.color6.Size = new System.Drawing.Size(20, 20);
this.color6.TabIndex = 15;
this.color6.TabStop = false;
this.color6.MouseClick += new System.Windows.Forms.MouseEventHandler(this.color6_MouseClick);
//
// ColorSelector
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.colorLayoutPanel);
this.Name = "ColorSelector";
this.Size = new System.Drawing.Size(208, 52);
this.colorLayoutPanel.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.color0)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.color1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.color2)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.color3)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.color4)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.color5)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.color7)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.color8)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.color9)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.color10)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.color11)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.color12)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.color13)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.color14)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.color15)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.color6)).EndInit();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.FlowLayoutPanel colorLayoutPanel;
private System.Windows.Forms.PictureBox color0;
private System.Windows.Forms.PictureBox color1;
private System.Windows.Forms.PictureBox color2;
private System.Windows.Forms.PictureBox color3;
private System.Windows.Forms.PictureBox color4;
private System.Windows.Forms.PictureBox color5;
private System.Windows.Forms.PictureBox color7;
private System.Windows.Forms.PictureBox color8;
private System.Windows.Forms.PictureBox color9;
private System.Windows.Forms.PictureBox color10;
private System.Windows.Forms.PictureBox color11;
private System.Windows.Forms.PictureBox color12;
private System.Windows.Forms.PictureBox color13;
private System.Windows.Forms.PictureBox color14;
private System.Windows.Forms.PictureBox color15;
private System.Windows.Forms.PictureBox color6;
}
}

191
source/ColorSelector.cs Normal file
View File

@ -0,0 +1,191 @@
#region Copyright (c) 2007, PP4L Software
/************************************************************************************
Copyright 2007, PP4L Software
Author: Lampiasis <lampiasis@dvolker.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
'***********************************************************************************/
#endregion
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
namespace AsciiPumper
{
public partial class ColorSelector : UserControl
{
public ColorSelector()
{
InitializeComponent();
LoadColorPalette(new ColorPalette());
}
public void LoadColorPalette(ColorPalette colors)
{
m_Colors = colors;
color0.BackColor = colors[0];
color1.BackColor = colors[1];
color2.BackColor = colors[2];
color3.BackColor = colors[3];
color4.BackColor = colors[4];
color5.BackColor = colors[5];
color6.BackColor = colors[6];
color7.BackColor = colors[7];
color8.BackColor = colors[8];
color9.BackColor = colors[9];
color10.BackColor = colors[10];
color11.BackColor = colors[11];
color12.BackColor = colors[12];
color13.BackColor = colors[13];
color14.BackColor = colors[14];
color15.BackColor = colors[15];
}
private ColorPalette m_Colors = new ColorPalette();
/// <summary>
/// Gets or sets the Colors.
/// </summary>
public ColorPalette Colors
{
get { return m_Colors; }
set { LoadColorPalette(value); }
}
public class ButtonColorChangedEventArgs : EventArgs
{
public static readonly new ButtonColorChangedEventArgs Empty = new ButtonColorChangedEventArgs(0, new MouseEventArgs(MouseButtons.None, 1, 0, 0, 0));
public ButtonColorChangedEventArgs(byte colorindex, MouseEventArgs e )
{
ColorIndex = colorindex;
MouseEvent = e;
}
public MouseEventArgs MouseEvent;
public byte ColorIndex;
}
public event EventHandler<ButtonColorChangedEventArgs> ButtonColorChanged;
protected virtual void OnButtonColorChanged(ButtonColorChangedEventArgs e)
{
EventHandler<ButtonColorChangedEventArgs> handler = ButtonColorChanged;
if (handler != null)
{
handler(this, e);
}
}
private void color0_MouseClick(object sender, MouseEventArgs e)
{
OnButtonColorChanged(new ButtonColorChangedEventArgs(0, e));
}
private void color1_Click(object sender, EventArgs e)
{
}
private void color1_MouseClick(object sender, MouseEventArgs e)
{
OnButtonColorChanged(new ButtonColorChangedEventArgs(1, e));
}
private void color2_MouseClick(object sender, MouseEventArgs e)
{
OnButtonColorChanged(new ButtonColorChangedEventArgs(2, e));
}
private void color3_MouseClick(object sender, MouseEventArgs e)
{
OnButtonColorChanged(new ButtonColorChangedEventArgs(3, e));
}
private void color4_MouseClick(object sender, MouseEventArgs e)
{
OnButtonColorChanged(new ButtonColorChangedEventArgs(4, e));
}
private void color5_MouseClick(object sender, MouseEventArgs e)
{
OnButtonColorChanged(new ButtonColorChangedEventArgs(5, e));
}
private void color6_MouseClick(object sender, MouseEventArgs e)
{
OnButtonColorChanged(new ButtonColorChangedEventArgs(6, e));
}
private void color7_MouseClick(object sender, MouseEventArgs e)
{
OnButtonColorChanged(new ButtonColorChangedEventArgs(7, e));
}
private void color8_MouseClick(object sender, MouseEventArgs e)
{
OnButtonColorChanged(new ButtonColorChangedEventArgs(8, e));
}
private void color9_MouseClick(object sender, MouseEventArgs e)
{
OnButtonColorChanged(new ButtonColorChangedEventArgs(9, e));
}
private void color10_MouseClick(object sender, MouseEventArgs e)
{
OnButtonColorChanged(new ButtonColorChangedEventArgs(10, e));
}
private void color11_Click(object sender, EventArgs e)
{
}
private void color11_MouseClick(object sender, MouseEventArgs e)
{
OnButtonColorChanged(new ButtonColorChangedEventArgs(11, e));
}
private void color12_MouseClick(object sender, MouseEventArgs e)
{
OnButtonColorChanged(new ButtonColorChangedEventArgs(12, e));
}
private void color13_MouseClick(object sender, MouseEventArgs e)
{
OnButtonColorChanged(new ButtonColorChangedEventArgs(13, e));
}
private void color14_MouseClick(object sender, MouseEventArgs e)
{
OnButtonColorChanged(new ButtonColorChangedEventArgs(14, e));
}
private void color15_MouseClick(object sender, MouseEventArgs e)
{
OnButtonColorChanged(new ButtonColorChangedEventArgs(15, e));
}
}
}

120
source/ColorSelector.resx Normal file
View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

11
source/ImageImporter.cs Normal file
View File

@ -0,0 +1,11 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace AsciiPumper
{
public class ImageImporter
{
}
}

60
source/KeypressAction.cs Normal file
View File

@ -0,0 +1,60 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace AsciiPumper
{
public class KeypressAction : IUndoableAction
{
private struct CharChangeInfo
{
public int x;
public int y;
public char origchar;
public char newchar;
}
private List<CharChangeInfo> ChangedCharacters = new List<CharChangeInfo>();
public void AddCharacter(int x, int y, char origchar, char newchar)
{
foreach (CharChangeInfo info in ChangedCharacters)
{
if (info.x == x && info.y == y)
{
ChangedCharacters.Remove(info);
break;
}
}
CharChangeInfo newinfo = new CharChangeInfo();
newinfo.x = x;
newinfo.y = y;
newinfo.origchar = origchar;
newinfo.newchar = newchar;
ChangedCharacters.Add(newinfo);
}
#region IUndoableAction Members
public void Undo(PaintCanvas canvas)
{
foreach (CharChangeInfo info in ChangedCharacters)
{
canvas.CellRows[info.y][info.x].Character = info.origchar;
}
canvas.CompleteRepaint();
}
public void Redo(PaintCanvas canvas)
{
foreach (CharChangeInfo info in ChangedCharacters)
{
canvas.CellRows[info.y][info.x].Character = info.newchar;
}
canvas.CompleteRepaint();
}
#endregion
}
}

536
source/MainForm.Designer.cs generated Normal file
View File

@ -0,0 +1,536 @@
namespace AsciiPumper
{
partial class MainForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
this.fontDialog1 = new System.Windows.Forms.FontDialog();
this.colorDialog1 = new System.Windows.Forms.ColorDialog();
this.splitContainer = new System.Windows.Forms.SplitContainer();
this.PaintPanel = new System.Windows.Forms.Panel();
this.AsciiPaintCanvas = new AsciiPumper.PaintCanvas();
this.txtWatermark = new System.Windows.Forms.TextBox();
this.chkWatermark = new System.Windows.Forms.CheckBox();
this.panel1 = new System.Windows.Forms.Panel();
this.radioRemoveFormatting = new System.Windows.Forms.RadioButton();
this.radioUnderline = new System.Windows.Forms.RadioButton();
this.radioBold = new System.Windows.Forms.RadioButton();
this.radioFill = new System.Windows.Forms.RadioButton();
this.radioPaintBrush = new System.Windows.Forms.RadioButton();
this.btnCopy = new System.Windows.Forms.Button();
this.checkRMBfg = new System.Windows.Forms.CheckBox();
this.colorRMB = new System.Windows.Forms.PictureBox();
this.lblRMB = new System.Windows.Forms.Label();
this.checkMMBfg = new System.Windows.Forms.CheckBox();
this.colorMMB = new System.Windows.Forms.PictureBox();
this.lblMMB = new System.Windows.Forms.Label();
this.lblForeground = new System.Windows.Forms.Label();
this.checkLMBfg = new System.Windows.Forms.CheckBox();
this.colorLMB = new System.Windows.Forms.PictureBox();
this.lblLeftMouseButton = new System.Windows.Forms.Label();
this.colorSelector1 = new AsciiPumper.ColorSelector();
this.numColumns = new System.Windows.Forms.NumericUpDown();
this.lblColumns = new System.Windows.Forms.Label();
this.numRows = new System.Windows.Forms.NumericUpDown();
this.lblRows = new System.Windows.Forms.Label();
this.saveFileDialog = new System.Windows.Forms.SaveFileDialog();
this.openFileDialog = new System.Windows.Forms.OpenFileDialog();
this.toolTip1 = new System.Windows.Forms.ToolTip(this.components);
this.splitContainer.Panel1.SuspendLayout();
this.splitContainer.Panel2.SuspendLayout();
this.splitContainer.SuspendLayout();
this.PaintPanel.SuspendLayout();
this.panel1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.colorRMB)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.colorMMB)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.colorLMB)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.numColumns)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.numRows)).BeginInit();
this.SuspendLayout();
//
// fontDialog1
//
this.fontDialog1.FixedPitchOnly = true;
//
// splitContainer
//
this.splitContainer.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer.Location = new System.Drawing.Point(0, 0);
this.splitContainer.Name = "splitContainer";
//
// splitContainer.Panel1
//
this.splitContainer.Panel1.Controls.Add(this.PaintPanel);
//
// splitContainer.Panel2
//
this.splitContainer.Panel2.Controls.Add(this.txtWatermark);
this.splitContainer.Panel2.Controls.Add(this.chkWatermark);
this.splitContainer.Panel2.Controls.Add(this.panel1);
this.splitContainer.Panel2.Controls.Add(this.btnCopy);
this.splitContainer.Panel2.Controls.Add(this.checkRMBfg);
this.splitContainer.Panel2.Controls.Add(this.colorRMB);
this.splitContainer.Panel2.Controls.Add(this.lblRMB);
this.splitContainer.Panel2.Controls.Add(this.checkMMBfg);
this.splitContainer.Panel2.Controls.Add(this.colorMMB);
this.splitContainer.Panel2.Controls.Add(this.lblMMB);
this.splitContainer.Panel2.Controls.Add(this.lblForeground);
this.splitContainer.Panel2.Controls.Add(this.checkLMBfg);
this.splitContainer.Panel2.Controls.Add(this.colorLMB);
this.splitContainer.Panel2.Controls.Add(this.lblLeftMouseButton);
this.splitContainer.Panel2.Controls.Add(this.colorSelector1);
this.splitContainer.Panel2.Controls.Add(this.numColumns);
this.splitContainer.Panel2.Controls.Add(this.lblColumns);
this.splitContainer.Panel2.Controls.Add(this.numRows);
this.splitContainer.Panel2.Controls.Add(this.lblRows);
this.splitContainer.Size = new System.Drawing.Size(978, 438);
this.splitContainer.Panel2MinSize = 220;
this.splitContainer.SplitterDistance = 751;
this.splitContainer.TabIndex = 2;
//
// PaintPanel
//
this.PaintPanel.AutoScroll = true;
this.PaintPanel.Controls.Add(this.AsciiPaintCanvas);
this.PaintPanel.Dock = System.Windows.Forms.DockStyle.Fill;
this.PaintPanel.Location = new System.Drawing.Point(0, 0);
this.PaintPanel.Name = "PaintPanel";
this.PaintPanel.Size = new System.Drawing.Size(751, 438);
this.PaintPanel.TabIndex = 2;
//
// AsciiPaintCanvas
//
this.AsciiPaintCanvas.BackColor = System.Drawing.Color.White;
this.AsciiPaintCanvas.CausesValidation = false;
this.AsciiPaintCanvas.CellHeight = 20;
this.AsciiPaintCanvas.CellWidth = 10;
new AsciiPumper.ColorPalette().Add(System.Drawing.Color.White);
new AsciiPumper.ColorPalette().Add(System.Drawing.Color.Black);
new AsciiPumper.ColorPalette().Add(System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(127))))));
new AsciiPumper.ColorPalette().Add(System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(147)))), ((int)(((byte)(0))))));
new AsciiPumper.ColorPalette().Add(System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))));
new AsciiPumper.ColorPalette().Add(System.Drawing.Color.FromArgb(((int)(((byte)(127)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))));
new AsciiPumper.ColorPalette().Add(System.Drawing.Color.FromArgb(((int)(((byte)(156)))), ((int)(((byte)(0)))), ((int)(((byte)(156))))));
new AsciiPumper.ColorPalette().Add(System.Drawing.Color.FromArgb(((int)(((byte)(252)))), ((int)(((byte)(127)))), ((int)(((byte)(0))))));
new AsciiPumper.ColorPalette().Add(System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(0))))));
new AsciiPumper.ColorPalette().Add(System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(252)))), ((int)(((byte)(0))))));
new AsciiPumper.ColorPalette().Add(System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(147)))), ((int)(((byte)(147))))));
new AsciiPumper.ColorPalette().Add(System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(255)))), ((int)(((byte)(255))))));
new AsciiPumper.ColorPalette().Add(System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(252))))));
new AsciiPumper.ColorPalette().Add(System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(0)))), ((int)(((byte)(255))))));
new AsciiPumper.ColorPalette().Add(System.Drawing.Color.FromArgb(((int)(((byte)(127)))), ((int)(((byte)(127)))), ((int)(((byte)(127))))));
new AsciiPumper.ColorPalette().Add(System.Drawing.Color.FromArgb(((int)(((byte)(210)))), ((int)(((byte)(210)))), ((int)(((byte)(210))))));
this.AsciiPaintCanvas.Columns = 60;
this.AsciiPaintCanvas.DontRepaint = false;
this.AsciiPaintCanvas.Font = new System.Drawing.Font("Consolas", 10F);
this.AsciiPaintCanvas.HighlightColor = System.Drawing.Color.Salmon;
this.AsciiPaintCanvas.HighlightWidth = 2;
this.AsciiPaintCanvas.LeftMouseColor = ((byte)(0));
this.AsciiPaintCanvas.LeftMouseIsForeground = false;
this.AsciiPaintCanvas.Location = new System.Drawing.Point(0, 0);
this.AsciiPaintCanvas.MiddleMouseColor = ((byte)(4));
this.AsciiPaintCanvas.MiddleMouseIsForeground = true;
this.AsciiPaintCanvas.Modified = false;
this.AsciiPaintCanvas.MostRecentForegroundColor = ((byte)(4));
this.AsciiPaintCanvas.Name = "AsciiPaintCanvas";
this.AsciiPaintCanvas.PaintMode = AsciiPumper.PaintCanvas.PaintModes.PaintBrush;
this.AsciiPaintCanvas.RightMouseColor = ((byte)(1));
this.AsciiPaintCanvas.RightMouseIsForeground = false;
this.AsciiPaintCanvas.Rows = 20;
this.AsciiPaintCanvas.SelectedCellPosition = new System.Drawing.Point(0, 0);
this.AsciiPaintCanvas.SeperatorColor = System.Drawing.Color.DimGray;
this.AsciiPaintCanvas.SeperatorWidth = 1;
this.AsciiPaintCanvas.Size = new System.Drawing.Size(600, 400);
this.AsciiPaintCanvas.TabIndex = 0;
//
// txtWatermark
//
this.txtWatermark.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.txtWatermark.Location = new System.Drawing.Point(2, 345);
this.txtWatermark.Name = "txtWatermark";
this.txtWatermark.Size = new System.Drawing.Size(218, 22);
this.txtWatermark.TabIndex = 18;
this.txtWatermark.Text = "http://code.google.com/p/asciipumper/ ";
this.txtWatermark.Enter += new System.EventHandler(this.txtWatermark_Enter);
//
// chkWatermark
//
this.chkWatermark.AutoSize = true;
this.chkWatermark.Location = new System.Drawing.Point(3, 322);
this.chkWatermark.Name = "chkWatermark";
this.chkWatermark.Size = new System.Drawing.Size(166, 17);
this.chkWatermark.TabIndex = 17;
this.chkWatermark.Text = "Hardspace with watermark:";
this.chkWatermark.UseVisualStyleBackColor = true;
this.chkWatermark.CheckedChanged += new System.EventHandler(this.chkWatermark_CheckedChanged);
//
// panel1
//
this.panel1.Controls.Add(this.radioRemoveFormatting);
this.panel1.Controls.Add(this.radioUnderline);
this.panel1.Controls.Add(this.radioBold);
this.panel1.Controls.Add(this.radioFill);
this.panel1.Controls.Add(this.radioPaintBrush);
this.panel1.Location = new System.Drawing.Point(3, 213);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(210, 73);
this.panel1.TabIndex = 16;
//
// radioRemoveFormatting
//
this.radioRemoveFormatting.AutoSize = true;
this.radioRemoveFormatting.Location = new System.Drawing.Point(4, 50);
this.radioRemoveFormatting.Name = "radioRemoveFormatting";
this.radioRemoveFormatting.Size = new System.Drawing.Size(123, 17);
this.radioRemoveFormatting.TabIndex = 4;
this.radioRemoveFormatting.Text = "Remove formatting";
this.radioRemoveFormatting.UseVisualStyleBackColor = true;
this.radioRemoveFormatting.CheckedChanged += new System.EventHandler(this.radioRemoveFormatting_CheckedChanged);
//
// radioUnderline
//
this.radioUnderline.AutoSize = true;
this.radioUnderline.Location = new System.Drawing.Point(118, 27);
this.radioUnderline.Name = "radioUnderline";
this.radioUnderline.Size = new System.Drawing.Size(76, 17);
this.radioUnderline.TabIndex = 3;
this.radioUnderline.Text = "Underline";
this.radioUnderline.UseVisualStyleBackColor = true;
this.radioUnderline.CheckedChanged += new System.EventHandler(this.radioUnderline_CheckedChanged);
//
// radioBold
//
this.radioBold.AutoSize = true;
this.radioBold.Location = new System.Drawing.Point(118, 4);
this.radioBold.Name = "radioBold";
this.radioBold.Size = new System.Drawing.Size(49, 17);
this.radioBold.TabIndex = 2;
this.radioBold.Text = "Bold";
this.radioBold.UseVisualStyleBackColor = true;
this.radioBold.CheckedChanged += new System.EventHandler(this.radioBold_CheckedChanged);
//
// radioFill
//
this.radioFill.AutoSize = true;
this.radioFill.Location = new System.Drawing.Point(4, 27);
this.radioFill.Name = "radioFill";
this.radioFill.Size = new System.Drawing.Size(40, 17);
this.radioFill.TabIndex = 1;
this.radioFill.Text = "Fill";
this.radioFill.UseVisualStyleBackColor = true;
this.radioFill.CheckedChanged += new System.EventHandler(this.radioFill_CheckedChanged);
//
// radioPaintBrush
//
this.radioPaintBrush.AutoSize = true;
this.radioPaintBrush.Checked = true;
this.radioPaintBrush.Location = new System.Drawing.Point(4, 4);
this.radioPaintBrush.Name = "radioPaintBrush";
this.radioPaintBrush.Size = new System.Drawing.Size(84, 17);
this.radioPaintBrush.TabIndex = 0;
this.radioPaintBrush.TabStop = true;
this.radioPaintBrush.Text = "Paint brush";
this.radioPaintBrush.UseVisualStyleBackColor = true;
this.radioPaintBrush.CheckedChanged += new System.EventHandler(this.radioPaintBrush_CheckedChanged);
//
// btnCopy
//
this.btnCopy.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.btnCopy.Location = new System.Drawing.Point(0, 292);
this.btnCopy.Name = "btnCopy";
this.btnCopy.Size = new System.Drawing.Size(218, 23);
this.btnCopy.TabIndex = 15;
this.btnCopy.Text = "Copy art to clipboard";
this.btnCopy.UseVisualStyleBackColor = true;
this.btnCopy.Click += new System.EventHandler(this.button1_Click);
//
// checkRMBfg
//
this.checkRMBfg.AutoSize = true;
this.checkRMBfg.Location = new System.Drawing.Point(164, 193);
this.checkRMBfg.Name = "checkRMBfg";
this.checkRMBfg.Size = new System.Drawing.Size(15, 14);
this.checkRMBfg.TabIndex = 14;
this.checkRMBfg.UseVisualStyleBackColor = true;
this.checkRMBfg.CheckedChanged += new System.EventHandler(this.checkRMBfg_CheckedChanged);
//
// colorRMB
//
this.colorRMB.BackColor = System.Drawing.SystemColors.ControlDarkDark;
this.colorRMB.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.colorRMB.Location = new System.Drawing.Point(121, 187);
this.colorRMB.Name = "colorRMB";
this.colorRMB.Size = new System.Drawing.Size(20, 20);
this.colorRMB.TabIndex = 13;
this.colorRMB.TabStop = false;
//
// lblRMB
//
this.lblRMB.AutoSize = true;
this.lblRMB.Location = new System.Drawing.Point(1, 194);
this.lblRMB.Name = "lblRMB";
this.lblRMB.Size = new System.Drawing.Size(115, 13);
this.lblRMB.TabIndex = 12;
this.lblRMB.Text = "Right Mouse Button:";
//
// checkMMBfg
//
this.checkMMBfg.AutoSize = true;
this.checkMMBfg.Checked = true;
this.checkMMBfg.CheckState = System.Windows.Forms.CheckState.Checked;
this.checkMMBfg.Location = new System.Drawing.Point(164, 167);
this.checkMMBfg.Name = "checkMMBfg";
this.checkMMBfg.Size = new System.Drawing.Size(15, 14);
this.checkMMBfg.TabIndex = 11;
this.checkMMBfg.UseVisualStyleBackColor = true;
this.checkMMBfg.CheckedChanged += new System.EventHandler(this.checkMMBfg_CheckedChanged);
//
// colorMMB
//
this.colorMMB.BackColor = System.Drawing.SystemColors.ControlDarkDark;
this.colorMMB.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.colorMMB.Location = new System.Drawing.Point(121, 161);
this.colorMMB.Name = "colorMMB";
this.colorMMB.Size = new System.Drawing.Size(20, 20);
this.colorMMB.TabIndex = 10;
this.colorMMB.TabStop = false;
//
// lblMMB
//
this.lblMMB.AutoSize = true;
this.lblMMB.Location = new System.Drawing.Point(1, 168);
this.lblMMB.Name = "lblMMB";
this.lblMMB.Size = new System.Drawing.Size(123, 13);
this.lblMMB.TabIndex = 9;
this.lblMMB.Text = "Middle Mouse Button:";
//
// lblForeground
//
this.lblForeground.AutoSize = true;
this.lblForeground.Location = new System.Drawing.Point(140, 118);
this.lblForeground.Name = "lblForeground";
this.lblForeground.Size = new System.Drawing.Size(74, 13);
this.lblForeground.TabIndex = 8;
this.lblForeground.Text = "Foreground?";
//
// checkLMBfg
//
this.checkLMBfg.AutoSize = true;
this.checkLMBfg.Location = new System.Drawing.Point(164, 140);
this.checkLMBfg.Name = "checkLMBfg";
this.checkLMBfg.Size = new System.Drawing.Size(15, 14);
this.checkLMBfg.TabIndex = 7;
this.checkLMBfg.UseVisualStyleBackColor = true;
this.checkLMBfg.CheckedChanged += new System.EventHandler(this.checkLMBfg_CheckedChanged);
//
// colorLMB
//
this.colorLMB.BackColor = System.Drawing.SystemColors.ControlDarkDark;
this.colorLMB.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.colorLMB.Location = new System.Drawing.Point(121, 134);
this.colorLMB.Name = "colorLMB";
this.colorLMB.Size = new System.Drawing.Size(20, 20);
this.colorLMB.TabIndex = 6;
this.colorLMB.TabStop = false;
//
// lblLeftMouseButton
//
this.lblLeftMouseButton.AutoSize = true;
this.lblLeftMouseButton.Location = new System.Drawing.Point(1, 141);
this.lblLeftMouseButton.Name = "lblLeftMouseButton";
this.lblLeftMouseButton.Size = new System.Drawing.Size(106, 13);
this.lblLeftMouseButton.TabIndex = 5;
this.lblLeftMouseButton.Text = "Left Mouse Button:";
//
// colorSelector1
//
new AsciiPumper.ColorPalette().Add(System.Drawing.Color.White);
new AsciiPumper.ColorPalette().Add(System.Drawing.Color.Black);
new AsciiPumper.ColorPalette().Add(System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(127))))));
new AsciiPumper.ColorPalette().Add(System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(147)))), ((int)(((byte)(0))))));
new AsciiPumper.ColorPalette().Add(System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))));
new AsciiPumper.ColorPalette().Add(System.Drawing.Color.FromArgb(((int)(((byte)(127)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))));
new AsciiPumper.ColorPalette().Add(System.Drawing.Color.FromArgb(((int)(((byte)(156)))), ((int)(((byte)(0)))), ((int)(((byte)(156))))));
new AsciiPumper.ColorPalette().Add(System.Drawing.Color.FromArgb(((int)(((byte)(252)))), ((int)(((byte)(127)))), ((int)(((byte)(0))))));
new AsciiPumper.ColorPalette().Add(System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(0))))));
new AsciiPumper.ColorPalette().Add(System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(252)))), ((int)(((byte)(0))))));
new AsciiPumper.ColorPalette().Add(System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(147)))), ((int)(((byte)(147))))));
new AsciiPumper.ColorPalette().Add(System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(255)))), ((int)(((byte)(255))))));
new AsciiPumper.ColorPalette().Add(System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(252))))));
new AsciiPumper.ColorPalette().Add(System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(0)))), ((int)(((byte)(255))))));
new AsciiPumper.ColorPalette().Add(System.Drawing.Color.FromArgb(((int)(((byte)(127)))), ((int)(((byte)(127)))), ((int)(((byte)(127))))));
new AsciiPumper.ColorPalette().Add(System.Drawing.Color.FromArgb(((int)(((byte)(210)))), ((int)(((byte)(210)))), ((int)(((byte)(210))))));
this.colorSelector1.Location = new System.Drawing.Point(3, 51);
this.colorSelector1.Name = "colorSelector1";
this.colorSelector1.Size = new System.Drawing.Size(209, 54);
this.colorSelector1.TabIndex = 4;
this.colorSelector1.ButtonColorChanged += new System.EventHandler<AsciiPumper.ColorSelector.ButtonColorChangedEventArgs>(this.colorSelector1_ButtonColorChanged);
//
// numColumns
//
this.numColumns.Location = new System.Drawing.Point(106, 16);
this.numColumns.Maximum = new decimal(new int[] {
10000,
0,
0,
0});
this.numColumns.Minimum = new decimal(new int[] {
1,
0,
0,
0});
this.numColumns.Name = "numColumns";
this.numColumns.Size = new System.Drawing.Size(46, 22);
this.numColumns.TabIndex = 3;
this.numColumns.Value = new decimal(new int[] {
80,
0,
0,
0});
this.numColumns.ValueChanged += new System.EventHandler(this.numColumns_ValueChanged);
//
// lblColumns
//
this.lblColumns.AutoSize = true;
this.lblColumns.Location = new System.Drawing.Point(103, 0);
this.lblColumns.Name = "lblColumns";
this.lblColumns.Size = new System.Drawing.Size(55, 13);
this.lblColumns.TabIndex = 2;
this.lblColumns.Text = "Columns:";
//
// numRows
//
this.numRows.Location = new System.Drawing.Point(44, 23);
this.numRows.Maximum = new decimal(new int[] {
10000,
0,
0,
0});
this.numRows.Minimum = new decimal(new int[] {
1,
0,
0,
0});
this.numRows.Name = "numRows";
this.numRows.Size = new System.Drawing.Size(46, 22);
this.numRows.TabIndex = 1;
this.numRows.Value = new decimal(new int[] {
50,
0,
0,
0});
this.numRows.ValueChanged += new System.EventHandler(this.numRows_ValueChanged);
//
// lblRows
//
this.lblRows.AutoSize = true;
this.lblRows.Location = new System.Drawing.Point(6, 25);
this.lblRows.Name = "lblRows";
this.lblRows.Size = new System.Drawing.Size(38, 13);
this.lblRows.TabIndex = 0;
this.lblRows.Text = "Rows:";
//
// saveFileDialog
//
this.saveFileDialog.DefaultExt = "txt";
this.saveFileDialog.Filter = "Text files|*.txt|All files|*.*";
//
// openFileDialog
//
this.openFileDialog.DefaultExt = "txt";
this.openFileDialog.Filter = "Text files|*.txt|All files|*.*";
//
// MainForm
//
this.ClientSize = new System.Drawing.Size(978, 438);
this.Controls.Add(this.splitContainer);
this.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "MainForm";
this.Text = "Ascii Pumper";
this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
this.Load += new System.EventHandler(this.MainForm_Load);
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainForm_FormClosing);
this.Resize += new System.EventHandler(this.MainForm_Resize);
this.splitContainer.Panel1.ResumeLayout(false);
this.splitContainer.Panel2.ResumeLayout(false);
this.splitContainer.Panel2.PerformLayout();
this.splitContainer.ResumeLayout(false);
this.PaintPanel.ResumeLayout(false);
this.panel1.ResumeLayout(false);
this.panel1.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.colorRMB)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.colorMMB)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.colorLMB)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.numColumns)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.numRows)).EndInit();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.FontDialog fontDialog1;
private System.Windows.Forms.ColorDialog colorDialog1;
private System.Windows.Forms.SplitContainer splitContainer;
private System.Windows.Forms.Panel PaintPanel;
private PaintCanvas AsciiPaintCanvas;
private System.Windows.Forms.NumericUpDown numColumns;
private System.Windows.Forms.Label lblColumns;
private System.Windows.Forms.NumericUpDown numRows;
private System.Windows.Forms.Label lblRows;
private ColorSelector colorSelector1;
private System.Windows.Forms.Label lblLeftMouseButton;
private System.Windows.Forms.PictureBox colorLMB;
private System.Windows.Forms.CheckBox checkRMBfg;
private System.Windows.Forms.PictureBox colorRMB;
private System.Windows.Forms.Label lblRMB;
private System.Windows.Forms.CheckBox checkMMBfg;
private System.Windows.Forms.PictureBox colorMMB;
private System.Windows.Forms.Label lblMMB;
private System.Windows.Forms.Label lblForeground;
private System.Windows.Forms.CheckBox checkLMBfg;
private System.Windows.Forms.Button btnCopy;
private System.Windows.Forms.SaveFileDialog saveFileDialog;
private System.Windows.Forms.OpenFileDialog openFileDialog;
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.RadioButton radioFill;
private System.Windows.Forms.RadioButton radioPaintBrush;
private System.Windows.Forms.CheckBox chkWatermark;
private System.Windows.Forms.ToolTip toolTip1;
private System.Windows.Forms.TextBox txtWatermark;
private System.Windows.Forms.RadioButton radioRemoveFormatting;
private System.Windows.Forms.RadioButton radioUnderline;
private System.Windows.Forms.RadioButton radioBold;
}
}

575
source/MainForm.cs Normal file
View File

@ -0,0 +1,575 @@
#region Copyright (c) 2007, PP4L Software
/************************************************************************************
Copyright 2007, PP4L Software
Author: Lampiasis <lampiasis@dvolker.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
'***********************************************************************************/
#endregion
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Reflection;
using System.Runtime;
using System.Diagnostics;
using System.IO;
using System.Drawing.Printing;
namespace AsciiPumper
{
public partial class MainForm : Form
{
public void Undo()
{
AsciiPaintCanvas.Undo();
}
public void Redo()
{
AsciiPaintCanvas.Redo();
}
public Stack<IUndoableAction> UndoList
{
get { return AsciiPaintCanvas.UndoList; }
}
public Stack<IUndoableAction> RedoList
{
get { return AsciiPaintCanvas.RedoList; }
}
private string m_FileName = "(Untitled)";
/// <summary>
/// Gets or sets the FileName.
/// </summary>
public string FileName
{
get { return m_FileName; }
set { m_FileName = value; this.Text = m_FileName + (m_FileModified ? "" : "*"); }
}
private bool m_FileModified = false;
/// <summary>
/// Gets or sets the FileModified.
/// </summary>
public bool FileModified
{
get { return m_FileModified; }
set {
m_FileModified = value;
if (value == true)
this.Text = m_FileName + "*";
else
{
this.Text = m_FileName;
AsciiPaintCanvas.Modified = false;
}
}
}
public void LoadStream(Stream stream)
{
m_LoadingFile = true;
AsciiPaintCanvas.DontRepaint = true;
try
{
AsciiPaintCanvas.LoadStream(stream);
numColumns.Value = AsciiPaintCanvas.Columns;
numRows.Value = AsciiPaintCanvas.Rows;
m_LoadingFile = false;
}
finally
{
AsciiPaintCanvas.DontRepaint = false;
AsciiPaintCanvas.CompleteRepaint();
}
}
public MainForm()
{
InitializeComponent();
//this.Icon = new Icon(typeof(MainForm), "MainIcon");
AsciiPaintCanvas.Columns = (int)numColumns.Value;
AsciiPaintCanvas.Rows = (int)numRows.Value;
ColorPalette pal = AsciiPaintCanvas.Colors;
colorLMB.BackColor = pal[AsciiPaintCanvas.LeftMouseColor];
colorMMB.BackColor = pal[AsciiPaintCanvas.MiddleMouseColor];
colorRMB.BackColor = pal[AsciiPaintCanvas.RightMouseColor];
//AsciiPumper.Properties.Settings.Default.
/*AsciiPaintCanvas.Font = new Font("Consolas", 10);
if (AsciiPaintCanvas.Font.Name != "Consolas")
AsciiPaintCanvas.Font = new Font("Fixedsys", 9);
*/
this.AsciiPaintCanvas.Font = new Font((string) Program.Settings["PaintFontName"] , (float) Program.Settings["PaintFontSize"]);
AsciiPaintCanvas.CellWidth = (int)Program.Settings["CellWidth"];
AsciiPaintCanvas.CellHeight = (int)Program.Settings["CellHeight"];
numColumns.Value = (int)Program.Settings["Columns"];
numRows.Value = (int)Program.Settings["Rows"];
ColorSelector.ButtonColorChangedEventArgs ea = new ColorSelector.ButtonColorChangedEventArgs((byte)Program.Settings["LMBColor"], new MouseEventArgs(MouseButtons.Left, 0, 0, 0, 0));
this.colorSelector1_ButtonColorChanged(this, ea);
ea = new ColorSelector.ButtonColorChangedEventArgs((byte)Program.Settings["MMBColor"], new MouseEventArgs(MouseButtons.Middle, 0, 0, 0, 0));
this.colorSelector1_ButtonColorChanged(this, ea);
ea = new ColorSelector.ButtonColorChangedEventArgs((byte)Program.Settings["RMBColor"], new MouseEventArgs(MouseButtons.Right, 0, 0, 0, 0));
this.colorSelector1_ButtonColorChanged(this, ea);
this.checkLMBfg.Checked = Program.Settings.LMBIsForeground;
this.checkMMBfg.Checked = Program.Settings.MMBIsForeground;
this.checkRMBfg.Checked = Program.Settings.RMBIsForeground;
//P//rogram.Settings.PropertyChanged += new PropertyChangedEventHandler(Settings_PropertyChanged);
this.chkWatermark.Checked = Program.Settings.ShouldWatermark;
AsciiPaintCanvas.CanvasModified += new EventHandler<PaintCanvas.CanvasModifiedEventArgs>(AsciiPaintCanvas_CanvasModified);
AsciiPaintCanvas.UndoChanged += new EventHandler<PaintCanvas.UndoChangedEventArgs>(AsciiPaintCanvas_UndoChanged);
AsciiPaintCanvas.RedoChanged += new EventHandler<PaintCanvas.RedoChangedEventArgs>(AsciiPaintCanvas_RedoChanged);
}
void AsciiPaintCanvas_RedoChanged(object sender, PaintCanvas.RedoChangedEventArgs e)
{
OnRedoChanged(RedoChangedEventArgs.Empty);
}
void AsciiPaintCanvas_UndoChanged(object sender, PaintCanvas.UndoChangedEventArgs e)
{
OnUndoChanged(UndoChangedEventArgs.Empty);
}
public class UndoChangedEventArgs : EventArgs
{
public static readonly new UndoChangedEventArgs Empty = new UndoChangedEventArgs();
}
public event EventHandler<UndoChangedEventArgs> UndoChanged;
protected virtual void OnUndoChanged(UndoChangedEventArgs e)
{
EventHandler<UndoChangedEventArgs> handler = UndoChanged;
if (handler != null)
{
handler(this, e);
}
}
public class RedoChangedEventArgs : EventArgs
{
public static readonly new RedoChangedEventArgs Empty = new RedoChangedEventArgs();
}
public event EventHandler<RedoChangedEventArgs> RedoChanged;
protected virtual void OnRedoChanged(RedoChangedEventArgs e)
{
EventHandler<RedoChangedEventArgs> handler = RedoChanged;
if (handler != null)
{
handler(this, e);
}
}
void AsciiPaintCanvas_CanvasModified(object sender, PaintCanvas.CanvasModifiedEventArgs e)
{
FileModified = true;
}
void Settings_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
//AsciiPaintCanvas.CompleteRepaint();
}
private void MainForm_Load(object sender, EventArgs e)
{
}
private void numColumns_ValueChanged(object sender, EventArgs e)
{
if ( !this.m_LoadingFile )
AsciiPaintCanvas.Columns = (int) numColumns.Value;
}
private void numRows_ValueChanged(object sender, EventArgs e)
{
if ( !this.m_LoadingFile )
AsciiPaintCanvas.Rows = (int) numRows.Value;
}
private void colorSelector1_ButtonColorChanged(object sender, ColorSelector.ButtonColorChangedEventArgs e)
{
switch (e.MouseEvent.Button)
{
case MouseButtons.Left:
AsciiPaintCanvas.LeftMouseColor = e.ColorIndex;
colorLMB.BackColor = colorSelector1.Colors[e.ColorIndex];
Program.Settings.LMBColor = e.ColorIndex;
break;
case MouseButtons.Middle:
AsciiPaintCanvas.MiddleMouseColor = e.ColorIndex;
colorMMB.BackColor = colorSelector1.Colors[e.ColorIndex];
Program.Settings.MMBColor = e.ColorIndex;
break;
case MouseButtons.Right:
AsciiPaintCanvas.RightMouseColor = e.ColorIndex;
colorRMB.BackColor = colorSelector1.Colors[e.ColorIndex];
Program.Settings.RMBColor = e.ColorIndex;
break;
default:
throw new Exception("Invalid mouse button color changed.");
}
}
public const string WaterMark = "http://code.google.com/p/asciipumper/ ";
public char WatermarkCharAtPos(int pos)
{
string watermark = txtWatermark.Text;
if (watermark == "")
watermark = WaterMark;
return watermark[pos % watermark.Length];
}
private const char ColorControl = '\x0003';
private const char UnderlineControl = '\x001F';
private const char BoldControl = '\x0002';
private const char PlainControl = '\x000F';
private const char ReverseControl = '\x0016';
public string GetIRCString( bool watermark)
{
StringBuilder sb = new StringBuilder();
CellInfo lastcell;
int rowcount = 0;
foreach (List<CellInfo> row in AsciiPaintCanvas.CellRows)
{
rowcount++;
if (rowcount > AsciiPaintCanvas.Rows)
break;
// something that will not be used normally so that color is always printed at beginning of line
lastcell = new CellInfo('z', 100, 100);
int cellcount = 0;
foreach (CellInfo cell in row)
{ // FIXME: check for digits and use two digit color code.
cellcount++;
if (cellcount > AsciiPaintCanvas.Columns)
break;
if (lastcell.Bold != cell.Bold)
sb.Append(BoldControl);
if (lastcell.Underlined != cell.Underlined)
sb.Append(UnderlineControl);
if (cell.Character == ' ' && watermark)
{
cell.ForeColor = cell.BackColor;
char character = WatermarkCharAtPos(cellcount - 1);
if (lastcell.BackColor != cell.BackColor || lastcell.ForeColor != cell.BackColor)
{
if (cell.BackColor < 10 && char.IsDigit(character))
sb.AppendFormat(ColorControl + "{0},0{1}{2}", cell.ForeColor, cell.BackColor, character);
else
sb.AppendFormat(ColorControl + "{0},{1}{2}", cell.ForeColor, cell.BackColor, character);
}
else
sb.Append(character);
}
else if (lastcell.BackColor != cell.BackColor)
{
if (char.IsDigit(cell.Character) || cell.Character == ',' )
{
if (cell.BackColor < 10 && char.IsDigit(cell.Character))
sb.AppendFormat(ColorControl + "{0},0{1}{2}", cell.ForeColor, cell.BackColor, cell.Character);
else
sb.AppendFormat(ColorControl + "{0},{1}{2}", cell.ForeColor, cell.BackColor, cell.Character);
}
else
sb.AppendFormat(ColorControl + "{0},{1}{2}", cell.ForeColor, cell.BackColor, cell.Character);
}
else if (lastcell.ForeColor != cell.ForeColor)
{
if (char.IsDigit(cell.Character))
{
if (cell.ForeColor < 10 && char.IsDigit(cell.Character))
sb.AppendFormat(ColorControl + "0{0}{1}", cell.ForeColor, cell.Character);
else
sb.AppendFormat(ColorControl + "{0}{1}", cell.ForeColor, cell.Character);
}
else if (cell.Character == ',')
{
if (cell.BackColor < 10 && char.IsDigit(cell.Character))
sb.AppendFormat(ColorControl + "{0},0{1}{2}", cell.ForeColor, cell.BackColor, cell.Character);
else
sb.AppendFormat(ColorControl + "{0},{1}{2}", cell.ForeColor, cell.BackColor, cell.Character);
}
else
sb.AppendFormat(ColorControl + "{0}{1}", cell.ForeColor, cell.Character);
}
else
sb.Append(cell.Character);
lastcell = cell;
}
sb.Append("\r\n");
}
return sb.ToString();
}
private void button1_Click(object sender, EventArgs e)
{
Cursor cur = Cursor.Current;
Cursor.Current = Cursors.WaitCursor;
try
{
Clipboard.SetText(GetIRCString(chkWatermark.Checked), TextDataFormat.Text);
}
finally
{
Cursor.Current = cur;
}
}
private void aboutToolStripMenuItem_Click(object sender, EventArgs e)
{
AboutBox1 about = new AboutBox1();
about.ShowDialog(this);
}
public void SaveDocument()
{
if ( File.Exists(m_FileName) )
{
Stream stream = File.OpenWrite(m_FileName);
StreamWriter writer = new StreamWriter(stream);
writer.WriteLine(GetIRCString(false));
writer.Close();
this.FileModified = false;
}
else
saveAsToolStripMenuItem_Click(this, EventArgs.Empty);
}
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
if (AsciiPaintCanvas.Modified == true)
{
DialogResult res = MessageBox.Show(this, m_FileName + " has been modified. Would you like to save changes?", "Save changes?", MessageBoxButtons.YesNoCancel);
if (res == DialogResult.Yes)
{
if ( File.Exists(m_FileName) )
{
Stream stream = File.OpenWrite(m_FileName);
StreamWriter writer = new StreamWriter(stream);
writer.WriteLine(GetIRCString(false));
writer.Close();
this.m_FileModified = false;
}
else
saveAsToolStripMenuItem_Click(this, EventArgs.Empty);
}
else if (res == DialogResult.Cancel)
{
e.Cancel = true;
}
else if (res == DialogResult.No)
{
}
}
Program.Settings.PropertyChanged -= new PropertyChangedEventHandler(Settings_PropertyChanged);
Program.Settings.LMBIsForeground = checkLMBfg.Checked;
Program.Settings.MMBIsForeground = checkMMBfg.Checked;
Program.Settings.RMBIsForeground = checkRMBfg.Checked;
Program.Settings.ShouldWatermark = chkWatermark.Checked;
Program.Settings.Save();
}
private void checkLMBfg_CheckedChanged(object sender, EventArgs e)
{
AsciiPaintCanvas.LeftMouseIsForeground = checkLMBfg.Checked;
}
private void checkMMBfg_CheckedChanged(object sender, EventArgs e)
{
AsciiPaintCanvas.MiddleMouseIsForeground = checkMMBfg.Checked;
}
private void checkRMBfg_CheckedChanged(object sender, EventArgs e)
{
AsciiPaintCanvas.RightMouseIsForeground = checkRMBfg.Checked;
}
private void linklabelVersion_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
ProcessStartInfo pi = new ProcessStartInfo("http://code.google.com/p/asciipumper/");
Process.Start(pi);
}
private void saveAsToolStripMenuItem_Click(object sender, EventArgs e)
{
DialogResult res = saveFileDialog.ShowDialog(this);
if (res == DialogResult.OK)
{
Stream stream = saveFileDialog.OpenFile();
FileName = saveFileDialog.FileName;
StreamWriter writer = new StreamWriter(stream);
writer.WriteLine(GetIRCString(false));
writer.Close();
this.FileModified = false;
}
}
private bool m_LoadingFile = false;
private void openToolStripMenuItem_Click(object sender, EventArgs e)
{
DialogResult res = openFileDialog.ShowDialog(this);
if (res == DialogResult.OK)
{
Cursor cur = Cursor.Current;
Cursor.Current = Cursors.WaitCursor;
try
{
m_LoadingFile = true;
Stream stream = openFileDialog.OpenFile();
AsciiPaintCanvas.LoadStream(stream);
stream.Close();
numColumns.Value = AsciiPaintCanvas.Columns;
numRows.Value = AsciiPaintCanvas.Rows;
m_LoadingFile = false;
}
finally
{
Cursor.Current = cur;
}
}
}
private void optionsToolStripMenuItem_Click(object sender, EventArgs e)
{
}
void form_SettingsSaved(object sender, OptionsForm.SettingsSavedEventArgs e)
{
AsciiPaintCanvas.CompleteRepaint();
}
public void RepaintCanvas()
{
AsciiPaintCanvas.CompleteRepaint();
}
private void exitToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Close();
}
private void radioPaintBrush_CheckedChanged(object sender, EventArgs e)
{
if (radioPaintBrush.Checked)
AsciiPaintCanvas.PaintMode = PaintCanvas.PaintModes.PaintBrush;
}
private void radioFill_CheckedChanged(object sender, EventArgs e)
{
if (radioFill.Checked)
AsciiPaintCanvas.PaintMode = PaintCanvas.PaintModes.Fill;
}
private void MainForm_Resize(object sender, EventArgs e)
{
}
private void chkWatermark_CheckedChanged(object sender, EventArgs e)
{
}
public void ImportImage(string filename)
{
AsciiPaintCanvas.ImportImage(filename);
numColumns.Value = AsciiPaintCanvas.Columns;
numRows.Value = AsciiPaintCanvas.Rows;
}
private void txtWatermark_Enter(object sender, EventArgs e)
{
txtWatermark.SelectAll();
}
public void PrintToGraphicDevice(Graphics graphics, PrintPageEventArgs e)
{
AsciiPaintCanvas.PrintToGraphicDevice(graphics, e);
}
private void radioBold_CheckedChanged(object sender, EventArgs e)
{
if (radioBold.Checked == true)
AsciiPaintCanvas.PaintMode = PaintCanvas.PaintModes.Bold;
}
private void radioUnderline_CheckedChanged(object sender, EventArgs e)
{
if (radioUnderline.Checked == true)
AsciiPaintCanvas.PaintMode = PaintCanvas.PaintModes.Underline;
}
private void radioRemoveFormatting_CheckedChanged(object sender, EventArgs e)
{
if (radioRemoveFormatting.Checked == true)
AsciiPaintCanvas.PaintMode = PaintCanvas.PaintModes.RemoveFormatting;
}
}
}

158
source/MainForm.resx Normal file
View File

@ -0,0 +1,158 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="fontDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="colorDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>133, 17</value>
</metadata>
<metadata name="saveFileDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>254, 17</value>
</metadata>
<metadata name="openFileDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>498, 17</value>
</metadata>
<metadata name="toolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>631, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAIAEBAQAAAABAAoAQAAJgAAACAgEAAAAAQA6AIAAE4BAAAoAAAAEAAAACAAAAABAAQAAAAAAIAA
AAAAAAAAAAAAABAAAAAQAAAAAAAAAAAAgAAAgAAAAICAAIAAAACAAIAAgIAAAICAgADAwMAAAAD/AAD/
AAAA//8A/wAAAP8A/wD//wAA////AACIiIgAAAAAAIiIiAAAAAAACZmQAAzMAAAJmZAAzMwAAAmZkADM
zAAACZmQAAzMAAAJmZAAAHAAAAmZkAAAcAAACZmQAAB3AAAJmZAAAAcAAAmZkAAABwAACZmQAAB3AAAA
mQAAB3AAAAAHAAB3AAAAAAd3d3AAAAAAAAAAAAAAwP8AAMD/AADh4wAA4cMAAOHDAADh4wAA4fcAAOH3
AADh8wAA4fsAAOH7AADh8wAA8+cAAPvPAAD4HwAA//8AACgAAAAgAAAAQAAAAAEABAAAAAAAAAIAAAAA
AAAAAAAAEAAAABAAAAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD/
/wD/AAAA/wD/AP//AAD///8AAAAAAAAAAAAAAAAAAAAAAAAACIiIiIiIAAAAAAAAAAAAAACIiIiIgAAA
AAAAAAAAAAAAiIiIiIAAAAAAAAAAAAAAAAiIiIgAAAAAAAAAAAAAAAAAmZmQAAAAAAAAAAAAAAAAAJmZ
kAAAAADMwAAAAAAAAACZmZAAAAAMzMwAAAAAAAAAmZmQAAAAzMzMwAAAAAAAAJmZkAAAAMzMzMAAAAAA
AACZmZAAAADMzMzAAAAAAAAAmZmQAAAAzMzMwAAAAAAAAJmZkAAAAAzMzAAAAAAAAACZmZAAAAAMzMwA
AAAAAAAAmZmQAAAADMzMAAAAAAAAAJmZkAAAAAAHAAAAAAAAAACZmZAAAAAAB3AAAAAAAAAAmZmQAAAA
AABwAAAAAAAAAJmZkAAAAAAAcAAAAAAAAACZmZAAAAAAB3AAAAAAAAAAmZmQAAAAAAcAAAAAAAAAAJmZ
kAAAAAAHAAAAAAAAAACZmZAAAAAABwAAAAAAAAAAmZmQAAAAAAcAAAAAAAAAAJmZkAAAAAAHAAAAAAAA
AACZmZAAAAAAdwAAAAAAAAAACZkAAAAAB3AAAAAAAAAAAABwAAAAAAcAAAAAAAAAAAAAcAAAAAB3AAAA
AAAAAAAAAHcAAAAHcAAAAAAAAAAAAAAHd3d3dwAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////+AD///wB
///8Af///gP///8H////B/x//wf4P/8H8B//B/Af/wfwH/8H8B//B/g//wf4P/8H+D//B/7//wf+f/8H
/3//B/9//wf+f/8H/v//B/7//wf+//8H/v//B/7//wf8//+P+f//3/v//9/z///P5///4A///////w==
</value>
</data>
</root>

444
source/OptionsForm.Designer.cs generated Normal file
View File

@ -0,0 +1,444 @@
namespace AsciiPumper
{
partial class OptionsForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
this.lbCategories = new System.Windows.Forms.ListBox();
this.grpEditor = new System.Windows.Forms.GroupBox();
this.tableEditor = new System.Windows.Forms.TableLayoutPanel();
this.lblEditorFont = new System.Windows.Forms.Label();
this.lblSampleText = new System.Windows.Forms.Label();
this.btnEditorFont = new System.Windows.Forms.Button();
this.lblCellWidth = new System.Windows.Forms.Label();
this.panel1 = new System.Windows.Forms.Panel();
this.lblPx1 = new System.Windows.Forms.Label();
this.numCellWidth = new System.Windows.Forms.NumericUpDown();
this.lblCellHeight = new System.Windows.Forms.Label();
this.panel2 = new System.Windows.Forms.Panel();
this.lblPx2 = new System.Windows.Forms.Label();
this.numCellHeight = new System.Windows.Forms.NumericUpDown();
this.lblSeperatorColor = new System.Windows.Forms.Label();
this.panel3 = new System.Windows.Forms.Panel();
this.btnSeperatorColor = new System.Windows.Forms.Button();
this.colorSeperator = new System.Windows.Forms.PictureBox();
this.lblHighlightColor = new System.Windows.Forms.Label();
this.panel4 = new System.Windows.Forms.Panel();
this.btnHighlightColor = new System.Windows.Forms.Button();
this.colorHighlight = new System.Windows.Forms.PictureBox();
this.btnOK = new System.Windows.Forms.Button();
this.btnApply = new System.Windows.Forms.Button();
this.btnCancel = new System.Windows.Forms.Button();
this.fontdlgEditorFont = new System.Windows.Forms.FontDialog();
this.colordlgSeperator = new System.Windows.Forms.ColorDialog();
this.colordlgHighlight = new System.Windows.Forms.ColorDialog();
this.splitContainer1.Panel1.SuspendLayout();
this.splitContainer1.Panel2.SuspendLayout();
this.splitContainer1.SuspendLayout();
this.grpEditor.SuspendLayout();
this.tableEditor.SuspendLayout();
this.panel1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.numCellWidth)).BeginInit();
this.panel2.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.numCellHeight)).BeginInit();
this.panel3.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.colorSeperator)).BeginInit();
this.panel4.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.colorHighlight)).BeginInit();
this.SuspendLayout();
//
// splitContainer1
//
this.splitContainer1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.splitContainer1.Location = new System.Drawing.Point(0, 0);
this.splitContainer1.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.splitContainer1.Name = "splitContainer1";
//
// splitContainer1.Panel1
//
this.splitContainer1.Panel1.Controls.Add(this.lbCategories);
this.splitContainer1.Panel1MinSize = 85;
//
// splitContainer1.Panel2
//
this.splitContainer1.Panel2.Controls.Add(this.grpEditor);
this.splitContainer1.Size = new System.Drawing.Size(508, 330);
this.splitContainer1.SplitterDistance = 95;
this.splitContainer1.SplitterWidth = 5;
this.splitContainer1.TabIndex = 0;
//
// lbCategories
//
this.lbCategories.Dock = System.Windows.Forms.DockStyle.Fill;
this.lbCategories.FormattingEnabled = true;
this.lbCategories.ItemHeight = 17;
this.lbCategories.Items.AddRange(new object[] {
"Editor"});
this.lbCategories.Location = new System.Drawing.Point(0, 0);
this.lbCategories.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.lbCategories.Name = "lbCategories";
this.lbCategories.Size = new System.Drawing.Size(95, 327);
this.lbCategories.TabIndex = 0;
//
// grpEditor
//
this.grpEditor.Controls.Add(this.tableEditor);
this.grpEditor.Dock = System.Windows.Forms.DockStyle.Fill;
this.grpEditor.Location = new System.Drawing.Point(0, 0);
this.grpEditor.Name = "grpEditor";
this.grpEditor.Size = new System.Drawing.Size(408, 330);
this.grpEditor.TabIndex = 1;
this.grpEditor.TabStop = false;
this.grpEditor.Text = "Editor";
//
// tableEditor
//
this.tableEditor.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.tableEditor.ColumnCount = 3;
this.tableEditor.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 40.44586F));
this.tableEditor.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 59.55414F));
this.tableEditor.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 82F));
this.tableEditor.Controls.Add(this.lblEditorFont, 0, 0);
this.tableEditor.Controls.Add(this.lblSampleText, 1, 0);
this.tableEditor.Controls.Add(this.btnEditorFont, 2, 0);
this.tableEditor.Controls.Add(this.lblCellWidth, 0, 1);
this.tableEditor.Controls.Add(this.panel1, 1, 1);
this.tableEditor.Controls.Add(this.lblCellHeight, 0, 2);
this.tableEditor.Controls.Add(this.panel2, 1, 2);
this.tableEditor.Controls.Add(this.lblSeperatorColor, 0, 3);
this.tableEditor.Controls.Add(this.panel3, 1, 3);
this.tableEditor.Controls.Add(this.lblHighlightColor, 0, 4);
this.tableEditor.Controls.Add(this.panel4, 1, 4);
this.tableEditor.Location = new System.Drawing.Point(6, 24);
this.tableEditor.Name = "tableEditor";
this.tableEditor.RowCount = 6;
this.tableEditor.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 44.28571F));
this.tableEditor.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 55.71429F));
this.tableEditor.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F));
this.tableEditor.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 35F));
this.tableEditor.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 35F));
this.tableEditor.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 134F));
this.tableEditor.Size = new System.Drawing.Size(396, 300);
this.tableEditor.TabIndex = 0;
//
// lblEditorFont
//
this.lblEditorFont.AutoSize = true;
this.lblEditorFont.Location = new System.Drawing.Point(3, 0);
this.lblEditorFont.Name = "lblEditorFont";
this.lblEditorFont.Size = new System.Drawing.Size(73, 17);
this.lblEditorFont.TabIndex = 0;
this.lblEditorFont.Text = "Editor font:";
//
// lblSampleText
//
this.lblSampleText.AutoSize = true;
this.lblSampleText.Location = new System.Drawing.Point(130, 0);
this.lblSampleText.Name = "lblSampleText";
this.lblSampleText.Size = new System.Drawing.Size(76, 17);
this.lblSampleText.TabIndex = 1;
this.lblSampleText.Text = "Sample text";
//
// btnEditorFont
//
this.btnEditorFont.Location = new System.Drawing.Point(316, 3);
this.btnEditorFont.Name = "btnEditorFont";
this.btnEditorFont.Size = new System.Drawing.Size(25, 23);
this.btnEditorFont.TabIndex = 2;
this.btnEditorFont.Text = "...";
this.btnEditorFont.UseVisualStyleBackColor = true;
this.btnEditorFont.Click += new System.EventHandler(this.btnEditorFont_Click);
//
// lblCellWidth
//
this.lblCellWidth.AutoSize = true;
this.lblCellWidth.Location = new System.Drawing.Point(3, 29);
this.lblCellWidth.Name = "lblCellWidth";
this.lblCellWidth.Size = new System.Drawing.Size(67, 17);
this.lblCellWidth.TabIndex = 3;
this.lblCellWidth.Text = "Cell width:";
//
// panel1
//
this.panel1.Controls.Add(this.lblPx1);
this.panel1.Controls.Add(this.numCellWidth);
this.panel1.Location = new System.Drawing.Point(130, 32);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(180, 30);
this.panel1.TabIndex = 4;
//
// lblPx1
//
this.lblPx1.AutoSize = true;
this.lblPx1.Location = new System.Drawing.Point(85, 5);
this.lblPx1.Name = "lblPx1";
this.lblPx1.Size = new System.Drawing.Size(22, 17);
this.lblPx1.TabIndex = 1;
this.lblPx1.Text = "px";
//
// numCellWidth
//
this.numCellWidth.Location = new System.Drawing.Point(3, 3);
this.numCellWidth.Minimum = new decimal(new int[] {
5,
0,
0,
0});
this.numCellWidth.Name = "numCellWidth";
this.numCellWidth.Size = new System.Drawing.Size(76, 25);
this.numCellWidth.TabIndex = 0;
this.numCellWidth.Value = new decimal(new int[] {
5,
0,
0,
0});
//
// lblCellHeight
//
this.lblCellHeight.AutoSize = true;
this.lblCellHeight.Location = new System.Drawing.Point(3, 65);
this.lblCellHeight.Name = "lblCellHeight";
this.lblCellHeight.Size = new System.Drawing.Size(72, 17);
this.lblCellHeight.TabIndex = 5;
this.lblCellHeight.Text = "Cell height:";
//
// panel2
//
this.panel2.Controls.Add(this.lblPx2);
this.panel2.Controls.Add(this.numCellHeight);
this.panel2.Location = new System.Drawing.Point(130, 68);
this.panel2.Name = "panel2";
this.panel2.Size = new System.Drawing.Size(180, 24);
this.panel2.TabIndex = 6;
//
// lblPx2
//
this.lblPx2.AutoSize = true;
this.lblPx2.Location = new System.Drawing.Point(85, 1);
this.lblPx2.Name = "lblPx2";
this.lblPx2.Size = new System.Drawing.Size(22, 17);
this.lblPx2.TabIndex = 3;
this.lblPx2.Text = "px";
//
// numCellHeight
//
this.numCellHeight.Location = new System.Drawing.Point(3, -1);
this.numCellHeight.Minimum = new decimal(new int[] {
5,
0,
0,
0});
this.numCellHeight.Name = "numCellHeight";
this.numCellHeight.Size = new System.Drawing.Size(76, 25);
this.numCellHeight.TabIndex = 2;
this.numCellHeight.Value = new decimal(new int[] {
5,
0,
0,
0});
//
// lblSeperatorColor
//
this.lblSeperatorColor.AutoSize = true;
this.lblSeperatorColor.Location = new System.Drawing.Point(3, 95);
this.lblSeperatorColor.Name = "lblSeperatorColor";
this.lblSeperatorColor.Size = new System.Drawing.Size(103, 17);
this.lblSeperatorColor.TabIndex = 7;
this.lblSeperatorColor.Text = "Seperator color:";
//
// panel3
//
this.panel3.Controls.Add(this.btnSeperatorColor);
this.panel3.Controls.Add(this.colorSeperator);
this.panel3.Location = new System.Drawing.Point(130, 98);
this.panel3.Name = "panel3";
this.panel3.Size = new System.Drawing.Size(180, 29);
this.panel3.TabIndex = 8;
//
// btnSeperatorColor
//
this.btnSeperatorColor.Location = new System.Drawing.Point(29, 3);
this.btnSeperatorColor.Name = "btnSeperatorColor";
this.btnSeperatorColor.Size = new System.Drawing.Size(25, 23);
this.btnSeperatorColor.TabIndex = 3;
this.btnSeperatorColor.Text = "...";
this.btnSeperatorColor.UseVisualStyleBackColor = true;
this.btnSeperatorColor.Click += new System.EventHandler(this.button1_Click);
//
// colorSeperator
//
this.colorSeperator.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.colorSeperator.Location = new System.Drawing.Point(3, 3);
this.colorSeperator.Name = "colorSeperator";
this.colorSeperator.Size = new System.Drawing.Size(20, 20);
this.colorSeperator.TabIndex = 0;
this.colorSeperator.TabStop = false;
//
// lblHighlightColor
//
this.lblHighlightColor.AutoSize = true;
this.lblHighlightColor.Location = new System.Drawing.Point(3, 130);
this.lblHighlightColor.Name = "lblHighlightColor";
this.lblHighlightColor.Size = new System.Drawing.Size(97, 17);
this.lblHighlightColor.TabIndex = 9;
this.lblHighlightColor.Text = "Highlight color:";
//
// panel4
//
this.panel4.Controls.Add(this.btnHighlightColor);
this.panel4.Controls.Add(this.colorHighlight);
this.panel4.Location = new System.Drawing.Point(130, 133);
this.panel4.Name = "panel4";
this.panel4.Size = new System.Drawing.Size(180, 29);
this.panel4.TabIndex = 10;
//
// btnHighlightColor
//
this.btnHighlightColor.Location = new System.Drawing.Point(29, 3);
this.btnHighlightColor.Name = "btnHighlightColor";
this.btnHighlightColor.Size = new System.Drawing.Size(25, 23);
this.btnHighlightColor.TabIndex = 5;
this.btnHighlightColor.Text = "...";
this.btnHighlightColor.UseVisualStyleBackColor = true;
this.btnHighlightColor.Click += new System.EventHandler(this.button1_Click_1);
//
// colorHighlight
//
this.colorHighlight.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.colorHighlight.Location = new System.Drawing.Point(3, 3);
this.colorHighlight.Name = "colorHighlight";
this.colorHighlight.Size = new System.Drawing.Size(20, 20);
this.colorHighlight.TabIndex = 4;
this.colorHighlight.TabStop = false;
//
// btnOK
//
this.btnOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.btnOK.Location = new System.Drawing.Point(213, 338);
this.btnOK.Name = "btnOK";
this.btnOK.Size = new System.Drawing.Size(91, 29);
this.btnOK.TabIndex = 1;
this.btnOK.Text = "&Ok";
this.btnOK.UseVisualStyleBackColor = true;
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
//
// btnApply
//
this.btnApply.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.btnApply.Location = new System.Drawing.Point(310, 338);
this.btnApply.Name = "btnApply";
this.btnApply.Size = new System.Drawing.Size(91, 29);
this.btnApply.TabIndex = 2;
this.btnApply.Text = "&Apply";
this.btnApply.UseVisualStyleBackColor = true;
this.btnApply.Click += new System.EventHandler(this.btnApply_Click);
//
// btnCancel
//
this.btnCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.btnCancel.Location = new System.Drawing.Point(407, 338);
this.btnCancel.Name = "btnCancel";
this.btnCancel.Size = new System.Drawing.Size(91, 29);
this.btnCancel.TabIndex = 3;
this.btnCancel.Text = "&Cancel";
this.btnCancel.UseVisualStyleBackColor = true;
this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click);
//
// OptionsForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(510, 379);
this.Controls.Add(this.btnCancel);
this.Controls.Add(this.btnApply);
this.Controls.Add(this.btnOK);
this.Controls.Add(this.splitContainer1);
this.Font = new System.Drawing.Font("Segoe UI", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.Name = "OptionsForm";
this.ShowInTaskbar = false;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "Ascii Pumper Options";
this.Load += new System.EventHandler(this.OptionsForm_Load);
this.splitContainer1.Panel1.ResumeLayout(false);
this.splitContainer1.Panel2.ResumeLayout(false);
this.splitContainer1.ResumeLayout(false);
this.grpEditor.ResumeLayout(false);
this.tableEditor.ResumeLayout(false);
this.tableEditor.PerformLayout();
this.panel1.ResumeLayout(false);
this.panel1.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.numCellWidth)).EndInit();
this.panel2.ResumeLayout(false);
this.panel2.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.numCellHeight)).EndInit();
this.panel3.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.colorSeperator)).EndInit();
this.panel4.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.colorHighlight)).EndInit();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.SplitContainer splitContainer1;
private System.Windows.Forms.ListBox lbCategories;
private System.Windows.Forms.GroupBox grpEditor;
private System.Windows.Forms.Button btnOK;
private System.Windows.Forms.Button btnApply;
private System.Windows.Forms.Button btnCancel;
private System.Windows.Forms.TableLayoutPanel tableEditor;
private System.Windows.Forms.Label lblEditorFont;
private System.Windows.Forms.Label lblSampleText;
private System.Windows.Forms.Button btnEditorFont;
private System.Windows.Forms.FontDialog fontdlgEditorFont;
private System.Windows.Forms.Label lblCellWidth;
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.Label lblPx1;
private System.Windows.Forms.NumericUpDown numCellWidth;
private System.Windows.Forms.Label lblCellHeight;
private System.Windows.Forms.Panel panel2;
private System.Windows.Forms.Label lblPx2;
private System.Windows.Forms.NumericUpDown numCellHeight;
private System.Windows.Forms.Label lblSeperatorColor;
private System.Windows.Forms.Panel panel3;
private System.Windows.Forms.PictureBox colorSeperator;
private System.Windows.Forms.Button btnSeperatorColor;
private System.Windows.Forms.ColorDialog colordlgSeperator;
private System.Windows.Forms.ColorDialog colordlgHighlight;
private System.Windows.Forms.Label lblHighlightColor;
private System.Windows.Forms.Panel panel4;
private System.Windows.Forms.Button btnHighlightColor;
private System.Windows.Forms.PictureBox colorHighlight;
}
}

129
source/OptionsForm.cs Normal file
View File

@ -0,0 +1,129 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace AsciiPumper
{
public partial class OptionsForm : Form
{
public OptionsForm()
{
InitializeComponent();
fontdlgEditorFont.Font = new Font(Program.Settings.PaintFontName, Program.Settings.PaintFontSize);
lblSampleText.Font = new Font(Program.Settings.PaintFontName, Program.Settings.PaintFontSize);
colorSeperator.BackColor = Program.Settings.SeperatorColor;
colorHighlight.BackColor = Program.Settings.HighlightColor;
numCellHeight.Value = Program.Settings.CellHeight;
numCellWidth.Value = Program.Settings.CellWidth;
colordlgHighlight.Color = Program.Settings.HighlightColor;
colordlgSeperator.Color = Program.Settings.SeperatorColor;
}
public class SettingsSavedEventArgs : EventArgs
{
public static readonly new SettingsSavedEventArgs Empty = new SettingsSavedEventArgs();
}
public event EventHandler<SettingsSavedEventArgs> SettingsSaved;
protected virtual void OnSettingsSaved(SettingsSavedEventArgs e)
{
EventHandler<SettingsSavedEventArgs> handler = SettingsSaved;
if (handler != null)
{
handler(this, e);
}
}
private void OptionsForm_Load(object sender, EventArgs e)
{
lbCategories.SelectedValue = "Editor";
}
private void ApplySettings()
{
Cursor cur = Cursor.Current;
Cursor.Current = Cursors.WaitCursor;
try
{
if (fontdlgEditorFont.Font.Name != Program.Settings.PaintFontName)
{
Program.Settings.PaintFontName = fontdlgEditorFont.Font.Name;
}
if (fontdlgEditorFont.Font.Size != Program.Settings.PaintFontSize)
{
Program.Settings.PaintFontSize = fontdlgEditorFont.Font.Size;
}
if (colordlgHighlight.Color != Program.Settings.HighlightColor)
Program.Settings.HighlightColor = colordlgHighlight.Color;
if (colordlgSeperator.Color != Program.Settings.SeperatorColor)
Program.Settings.SeperatorColor = colordlgSeperator.Color;
if (numCellHeight.Value != Program.Settings.CellHeight)
Program.Settings.CellHeight = (int)numCellHeight.Value;
if (numCellWidth.Value != Program.Settings.CellWidth)
Program.Settings.CellWidth = (int) numCellWidth.Value;
Program.Settings.Save();
this.OnSettingsSaved(SettingsSavedEventArgs.Empty);
}
finally
{
Cursor.Current = cur;
}
}
private void btnOK_Click(object sender, EventArgs e)
{
ApplySettings();
this.DialogResult = DialogResult.OK;
this.Close();
}
private void btnApply_Click(object sender, EventArgs e)
{
ApplySettings();
}
private void btnCancel_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.Cancel;
this.Close();
}
private void btnEditorFont_Click(object sender, EventArgs e)
{
DialogResult res = fontdlgEditorFont.ShowDialog(this);
if (res == DialogResult.OK)
{
lblSampleText.Font = fontdlgEditorFont.Font;
}
}
private void button1_Click(object sender, EventArgs e)
{
DialogResult res = colordlgSeperator.ShowDialog(this);
if (res == DialogResult.OK)
colorSeperator.BackColor = colordlgSeperator.Color;
}
private void button1_Click_1(object sender, EventArgs e)
{
DialogResult res = colordlgHighlight.ShowDialog(this);
if (res == DialogResult.OK)
colorHighlight.BackColor = colordlgHighlight.Color;
}
}
}

129
source/OptionsForm.resx Normal file
View File

@ -0,0 +1,129 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="fontdlgEditorFont.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="colordlgSeperator.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>165, 17</value>
</metadata>
<metadata name="colordlgHighlight.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>286, 17</value>
</metadata>
</root>

53
source/PaintAction.cs Normal file
View File

@ -0,0 +1,53 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
namespace AsciiPumper
{
public class PaintAction : IUndoableAction
{
public List<Point> PaintedPoints = new List<Point>();
public byte OldPaintColor = 0;
public byte NewPaintColor = 1;
public bool IsForeground = false;
public bool PointExists(Point point)
{
foreach (Point p in PaintedPoints)
{
if (p.X == point.X && p.Y == point.Y)
return true;
}
return false;
}
#region IUndoableAction Members
public void Undo(PaintCanvas canvas)
{
foreach (Point p in PaintedPoints)
{
if (IsForeground)
canvas.CellRows[p.Y][p.X].ForeColor = OldPaintColor;
else
canvas.CellRows[p.Y][p.X].BackColor = OldPaintColor;
}
canvas.RepaintAll();
}
public void Redo(PaintCanvas canvas)
{
foreach (Point p in PaintedPoints)
{
if (IsForeground)
canvas.CellRows[p.Y][p.X].ForeColor = NewPaintColor;
else
canvas.CellRows[p.Y][p.X].BackColor = NewPaintColor;
}
canvas.RepaintAll();
}
#endregion
}
}

56
source/PaintCanvas.Designer.cs generated Normal file
View File

@ -0,0 +1,56 @@
namespace AsciiPumper
{
partial class PaintCanvas
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.SuspendLayout();
//
// PaintCanvas
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.White;
this.DoubleBuffered = true;
this.Font = new System.Drawing.Font("Consolas", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.Name = "PaintCanvas";
this.Size = new System.Drawing.Size(666, 413);
this.PreviewKeyDown += new System.Windows.Forms.PreviewKeyDownEventHandler(this.PaintCanvas_PreviewKeyDown);
this.Load += new System.EventHandler(this.PaintCanvas_Load);
this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.PaintCanvas_MouseDown);
this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.PaintCanvas_MouseMove);
this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.PaintCanvas_KeyPress);
this.MouseUp += new System.Windows.Forms.MouseEventHandler(this.PaintCanvas_MouseUp);
this.SizeChanged += new System.EventHandler(this.PaintCanvas_SizeChanged);
this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.PaintCanvas_KeyDown);
this.ResumeLayout(false);
}
#endregion
}
}

1265
source/PaintCanvas.cs Normal file

File diff suppressed because it is too large Load Diff

120
source/PaintCanvas.resx Normal file
View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

45
source/Program.cs Normal file
View File

@ -0,0 +1,45 @@
#region Copyright (c) 2007, PP4L Software
/************************************************************************************
Copyright 2007, PP4L Software
Author: Lampiasis <lampiasis@dvolker.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
'***********************************************************************************/
#endregion
using System;
using System.Collections.Generic;
using System.Windows.Forms;
namespace AsciiPumper
{
static class Program
{
public static AsciiPumper.Properties.Settings Settings = new AsciiPumper.Properties.Settings();
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new PumpForm()); //new MainForm());
}
}
}

View File

@ -0,0 +1,33 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("Ascii Pumper")]
[assembly: AssemblyDescription("Pumps up your IRC ascii art.")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("PP4L")]
[assembly: AssemblyProduct("AsciiPumper")]
[assembly: AssemblyCopyright("Copyright © Lampiasis <lampiasis@dvolker.com> 2007")]
[assembly: AssemblyTrademark("ya we pumpin")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("eb9df274-3e3c-4d3f-82de-890971e593b5")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
[assembly: AssemblyVersion("1.1.0.1")]
[assembly: AssemblyFileVersion("1.1.0.1")]

70
source/Properties/Resources.Designer.cs generated Normal file
View File

@ -0,0 +1,70 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:2.0.50727.1318
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace AsciiPumper.Properties {
using System;
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources() {
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("AsciiPumper.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
internal static System.Drawing.Icon MainIcon {
get {
object obj = ResourceManager.GetObject("MainIcon", resourceCulture);
return ((System.Drawing.Icon)(obj));
}
}
}
}

View File

@ -0,0 +1,124 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="MainIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\MainIcon.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>

220
source/Properties/Settings.Designer.cs generated Normal file
View File

@ -0,0 +1,220 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:2.0.50727.1318
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace AsciiPumper.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "9.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("Consolas")]
public string PaintFontName {
get {
return ((string)(this["PaintFontName"]));
}
set {
this["PaintFontName"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool LMBIsForeground {
get {
return ((bool)(this["LMBIsForeground"]));
}
set {
this["LMBIsForeground"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool MMBIsForeground {
get {
return ((bool)(this["MMBIsForeground"]));
}
set {
this["MMBIsForeground"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool RMBIsForeground {
get {
return ((bool)(this["RMBIsForeground"]));
}
set {
this["RMBIsForeground"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("20")]
public int CellHeight {
get {
return ((int)(this["CellHeight"]));
}
set {
this["CellHeight"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("10")]
public int CellWidth {
get {
return ((int)(this["CellWidth"]));
}
set {
this["CellWidth"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("Salmon")]
public global::System.Drawing.Color HighlightColor {
get {
return ((global::System.Drawing.Color)(this["HighlightColor"]));
}
set {
this["HighlightColor"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("DimGray")]
public global::System.Drawing.Color SeperatorColor {
get {
return ((global::System.Drawing.Color)(this["SeperatorColor"]));
}
set {
this["SeperatorColor"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("80")]
public int Columns {
get {
return ((int)(this["Columns"]));
}
set {
this["Columns"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("15")]
public int Rows {
get {
return ((int)(this["Rows"]));
}
set {
this["Rows"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("0")]
public byte LMBColor {
get {
return ((byte)(this["LMBColor"]));
}
set {
this["LMBColor"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("4")]
public byte MMBColor {
get {
return ((byte)(this["MMBColor"]));
}
set {
this["MMBColor"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("1")]
public byte RMBColor {
get {
return ((byte)(this["RMBColor"]));
}
set {
this["RMBColor"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("10")]
public float PaintFontSize {
get {
return ((float)(this["PaintFontSize"]));
}
set {
this["PaintFontSize"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool ShouldWatermark {
get {
return ((bool)(this["ShouldWatermark"]));
}
set {
this["ShouldWatermark"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("<?xml version=\"1.0\" encoding=\"utf-16\"?>\r\n<ArrayOfString xmlns:xsi=\"http://www.w3." +
"org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\r\n <s" +
"tring>asciipumper.txt</string>\r\n</ArrayOfString>")]
public global::System.Collections.Specialized.StringCollection RecentFiles {
get {
return ((global::System.Collections.Specialized.StringCollection)(this["RecentFiles"]));
}
set {
this["RecentFiles"] = value;
}
}
}
}

688
source/PumpForm.Designer.cs generated Normal file
View File

@ -0,0 +1,688 @@
namespace AsciiPumper
{
partial class PumpForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PumpForm));
this.menuStrip = new System.Windows.Forms.MenuStrip();
this.fileMenu = new System.Windows.Forms.ToolStripMenuItem();
this.newToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.openToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.openRecentToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.recentFilesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
this.saveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.saveAsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator();
this.printToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.printPreviewToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.printSetupToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator();
this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.editMenu = new System.Windows.Forms.ToolStripMenuItem();
this.undoToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.redoToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator();
this.cutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.copyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.pasteToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator7 = new System.Windows.Forms.ToolStripSeparator();
this.selectAllToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.viewMenu = new System.Windows.Forms.ToolStripMenuItem();
this.toolBarToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.statusBarToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolsMenu = new System.Windows.Forms.ToolStripMenuItem();
this.optionsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.imageImporterToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.windowsMenu = new System.Windows.Forms.ToolStripMenuItem();
this.newWindowToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.cascadeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.tileVerticalToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.tileHorizontalToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.closeAllToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.arrangeIconsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.helpMenu = new System.Windows.Forms.ToolStripMenuItem();
this.rEADMETXTToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.contentsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.indexToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.searchToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator8 = new System.Windows.Forms.ToolStripSeparator();
this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStrip = new System.Windows.Forms.ToolStrip();
this.newToolStripButton = new System.Windows.Forms.ToolStripButton();
this.openToolStripButton = new System.Windows.Forms.ToolStripButton();
this.saveToolStripButton = new System.Windows.Forms.ToolStripButton();
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
this.printToolStripButton = new System.Windows.Forms.ToolStripButton();
this.printPreviewToolStripButton = new System.Windows.Forms.ToolStripButton();
this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
this.helpToolStripButton = new System.Windows.Forms.ToolStripButton();
this.statusStrip = new System.Windows.Forms.StatusStrip();
this.toolStripStatusLabel = new System.Windows.Forms.ToolStripStatusLabel();
this.toolStripProgressBar1 = new System.Windows.Forms.ToolStripProgressBar();
this.menuStrip.SuspendLayout();
this.toolStrip.SuspendLayout();
this.statusStrip.SuspendLayout();
this.SuspendLayout();
//
// menuStrip
//
this.menuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.fileMenu,
this.editMenu,
this.viewMenu,
this.toolsMenu,
this.windowsMenu,
this.helpMenu});
this.menuStrip.Location = new System.Drawing.Point(0, 0);
this.menuStrip.MdiWindowListItem = this.windowsMenu;
this.menuStrip.Name = "menuStrip";
this.menuStrip.Size = new System.Drawing.Size(1008, 24);
this.menuStrip.TabIndex = 0;
this.menuStrip.Text = "MenuStrip";
//
// fileMenu
//
this.fileMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.newToolStripMenuItem,
this.openToolStripMenuItem,
this.openRecentToolStripMenuItem,
this.toolStripSeparator3,
this.saveToolStripMenuItem,
this.saveAsToolStripMenuItem,
this.toolStripSeparator4,
this.printToolStripMenuItem,
this.printPreviewToolStripMenuItem,
this.printSetupToolStripMenuItem,
this.toolStripSeparator5,
this.exitToolStripMenuItem});
this.fileMenu.ImageTransparentColor = System.Drawing.SystemColors.ActiveBorder;
this.fileMenu.Name = "fileMenu";
this.fileMenu.Size = new System.Drawing.Size(37, 20);
this.fileMenu.Text = "&File";
//
// newToolStripMenuItem
//
this.newToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("newToolStripMenuItem.Image")));
this.newToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Black;
this.newToolStripMenuItem.Name = "newToolStripMenuItem";
this.newToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.N)));
this.newToolStripMenuItem.Size = new System.Drawing.Size(146, 22);
this.newToolStripMenuItem.Text = "&New";
this.newToolStripMenuItem.Click += new System.EventHandler(this.ShowNewForm);
//
// openToolStripMenuItem
//
this.openToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("openToolStripMenuItem.Image")));
this.openToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Black;
this.openToolStripMenuItem.Name = "openToolStripMenuItem";
this.openToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.O)));
this.openToolStripMenuItem.Size = new System.Drawing.Size(146, 22);
this.openToolStripMenuItem.Text = "&Open";
this.openToolStripMenuItem.Click += new System.EventHandler(this.OpenFile);
//
// openRecentToolStripMenuItem
//
this.openRecentToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.recentFilesToolStripMenuItem});
this.openRecentToolStripMenuItem.Name = "openRecentToolStripMenuItem";
this.openRecentToolStripMenuItem.Size = new System.Drawing.Size(146, 22);
this.openRecentToolStripMenuItem.Text = "Open &Recent";
//
// recentFilesToolStripMenuItem
//
this.recentFilesToolStripMenuItem.Name = "recentFilesToolStripMenuItem";
this.recentFilesToolStripMenuItem.Size = new System.Drawing.Size(131, 22);
this.recentFilesToolStripMenuItem.Text = "recent files";
//
// toolStripSeparator3
//
this.toolStripSeparator3.Name = "toolStripSeparator3";
this.toolStripSeparator3.Size = new System.Drawing.Size(143, 6);
//
// saveToolStripMenuItem
//
this.saveToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("saveToolStripMenuItem.Image")));
this.saveToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Black;
this.saveToolStripMenuItem.Name = "saveToolStripMenuItem";
this.saveToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.S)));
this.saveToolStripMenuItem.Size = new System.Drawing.Size(146, 22);
this.saveToolStripMenuItem.Text = "&Save";
this.saveToolStripMenuItem.Click += new System.EventHandler(this.saveToolStripMenuItem_Click);
//
// saveAsToolStripMenuItem
//
this.saveAsToolStripMenuItem.Name = "saveAsToolStripMenuItem";
this.saveAsToolStripMenuItem.Size = new System.Drawing.Size(146, 22);
this.saveAsToolStripMenuItem.Text = "Save &As";
this.saveAsToolStripMenuItem.Click += new System.EventHandler(this.SaveAsToolStripMenuItem_Click);
//
// toolStripSeparator4
//
this.toolStripSeparator4.Name = "toolStripSeparator4";
this.toolStripSeparator4.Size = new System.Drawing.Size(143, 6);
//
// printToolStripMenuItem
//
this.printToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("printToolStripMenuItem.Image")));
this.printToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Black;
this.printToolStripMenuItem.Name = "printToolStripMenuItem";
this.printToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.P)));
this.printToolStripMenuItem.Size = new System.Drawing.Size(146, 22);
this.printToolStripMenuItem.Text = "&Print";
this.printToolStripMenuItem.Click += new System.EventHandler(this.printToolStripMenuItem_Click);
//
// printPreviewToolStripMenuItem
//
this.printPreviewToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("printPreviewToolStripMenuItem.Image")));
this.printPreviewToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Black;
this.printPreviewToolStripMenuItem.Name = "printPreviewToolStripMenuItem";
this.printPreviewToolStripMenuItem.Size = new System.Drawing.Size(146, 22);
this.printPreviewToolStripMenuItem.Text = "Print Pre&view";
this.printPreviewToolStripMenuItem.Click += new System.EventHandler(this.printPreviewToolStripMenuItem_Click);
//
// printSetupToolStripMenuItem
//
this.printSetupToolStripMenuItem.Enabled = false;
this.printSetupToolStripMenuItem.Name = "printSetupToolStripMenuItem";
this.printSetupToolStripMenuItem.Size = new System.Drawing.Size(146, 22);
this.printSetupToolStripMenuItem.Text = "Print Setup";
this.printSetupToolStripMenuItem.Visible = false;
this.printSetupToolStripMenuItem.Click += new System.EventHandler(this.printSetupToolStripMenuItem_Click);
//
// toolStripSeparator5
//
this.toolStripSeparator5.Name = "toolStripSeparator5";
this.toolStripSeparator5.Size = new System.Drawing.Size(143, 6);
//
// exitToolStripMenuItem
//
this.exitToolStripMenuItem.Name = "exitToolStripMenuItem";
this.exitToolStripMenuItem.Size = new System.Drawing.Size(146, 22);
this.exitToolStripMenuItem.Text = "E&xit";
this.exitToolStripMenuItem.Click += new System.EventHandler(this.ExitToolsStripMenuItem_Click);
//
// editMenu
//
this.editMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.undoToolStripMenuItem,
this.redoToolStripMenuItem,
this.toolStripSeparator6,
this.cutToolStripMenuItem,
this.copyToolStripMenuItem,
this.pasteToolStripMenuItem,
this.toolStripSeparator7,
this.selectAllToolStripMenuItem});
this.editMenu.Name = "editMenu";
this.editMenu.Size = new System.Drawing.Size(39, 20);
this.editMenu.Text = "&Edit";
//
// undoToolStripMenuItem
//
this.undoToolStripMenuItem.Enabled = false;
this.undoToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("undoToolStripMenuItem.Image")));
this.undoToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Black;
this.undoToolStripMenuItem.Name = "undoToolStripMenuItem";
this.undoToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Z)));
this.undoToolStripMenuItem.Size = new System.Drawing.Size(164, 22);
this.undoToolStripMenuItem.Text = "&Undo";
this.undoToolStripMenuItem.Click += new System.EventHandler(this.undoToolStripMenuItem_Click);
//
// redoToolStripMenuItem
//
this.redoToolStripMenuItem.Enabled = false;
this.redoToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("redoToolStripMenuItem.Image")));
this.redoToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Black;
this.redoToolStripMenuItem.Name = "redoToolStripMenuItem";
this.redoToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Y)));
this.redoToolStripMenuItem.Size = new System.Drawing.Size(164, 22);
this.redoToolStripMenuItem.Text = "&Redo";
this.redoToolStripMenuItem.Click += new System.EventHandler(this.redoToolStripMenuItem_Click);
//
// toolStripSeparator6
//
this.toolStripSeparator6.Name = "toolStripSeparator6";
this.toolStripSeparator6.Size = new System.Drawing.Size(161, 6);
this.toolStripSeparator6.Visible = false;
//
// cutToolStripMenuItem
//
this.cutToolStripMenuItem.Enabled = false;
this.cutToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("cutToolStripMenuItem.Image")));
this.cutToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Black;
this.cutToolStripMenuItem.Name = "cutToolStripMenuItem";
this.cutToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.X)));
this.cutToolStripMenuItem.Size = new System.Drawing.Size(164, 22);
this.cutToolStripMenuItem.Text = "Cu&t";
this.cutToolStripMenuItem.Visible = false;
this.cutToolStripMenuItem.Click += new System.EventHandler(this.CutToolStripMenuItem_Click);
//
// copyToolStripMenuItem
//
this.copyToolStripMenuItem.Enabled = false;
this.copyToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("copyToolStripMenuItem.Image")));
this.copyToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Black;
this.copyToolStripMenuItem.Name = "copyToolStripMenuItem";
this.copyToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.C)));
this.copyToolStripMenuItem.Size = new System.Drawing.Size(164, 22);
this.copyToolStripMenuItem.Text = "&Copy";
this.copyToolStripMenuItem.Visible = false;
this.copyToolStripMenuItem.Click += new System.EventHandler(this.CopyToolStripMenuItem_Click);
//
// pasteToolStripMenuItem
//
this.pasteToolStripMenuItem.Enabled = false;
this.pasteToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("pasteToolStripMenuItem.Image")));
this.pasteToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Black;
this.pasteToolStripMenuItem.Name = "pasteToolStripMenuItem";
this.pasteToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.V)));
this.pasteToolStripMenuItem.Size = new System.Drawing.Size(164, 22);
this.pasteToolStripMenuItem.Text = "&Paste";
this.pasteToolStripMenuItem.Visible = false;
this.pasteToolStripMenuItem.Click += new System.EventHandler(this.PasteToolStripMenuItem_Click);
//
// toolStripSeparator7
//
this.toolStripSeparator7.Name = "toolStripSeparator7";
this.toolStripSeparator7.Size = new System.Drawing.Size(161, 6);
this.toolStripSeparator7.Visible = false;
//
// selectAllToolStripMenuItem
//
this.selectAllToolStripMenuItem.Enabled = false;
this.selectAllToolStripMenuItem.Name = "selectAllToolStripMenuItem";
this.selectAllToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.A)));
this.selectAllToolStripMenuItem.Size = new System.Drawing.Size(164, 22);
this.selectAllToolStripMenuItem.Text = "Select &All";
this.selectAllToolStripMenuItem.Visible = false;
//
// viewMenu
//
this.viewMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.toolBarToolStripMenuItem,
this.statusBarToolStripMenuItem});
this.viewMenu.Name = "viewMenu";
this.viewMenu.Size = new System.Drawing.Size(44, 20);
this.viewMenu.Text = "&View";
//
// toolBarToolStripMenuItem
//
this.toolBarToolStripMenuItem.Checked = true;
this.toolBarToolStripMenuItem.CheckOnClick = true;
this.toolBarToolStripMenuItem.CheckState = System.Windows.Forms.CheckState.Checked;
this.toolBarToolStripMenuItem.Name = "toolBarToolStripMenuItem";
this.toolBarToolStripMenuItem.Size = new System.Drawing.Size(126, 22);
this.toolBarToolStripMenuItem.Text = "&Toolbar";
this.toolBarToolStripMenuItem.Click += new System.EventHandler(this.ToolBarToolStripMenuItem_Click);
//
// statusBarToolStripMenuItem
//
this.statusBarToolStripMenuItem.Checked = true;
this.statusBarToolStripMenuItem.CheckOnClick = true;
this.statusBarToolStripMenuItem.CheckState = System.Windows.Forms.CheckState.Checked;
this.statusBarToolStripMenuItem.Name = "statusBarToolStripMenuItem";
this.statusBarToolStripMenuItem.Size = new System.Drawing.Size(126, 22);
this.statusBarToolStripMenuItem.Text = "&Status Bar";
this.statusBarToolStripMenuItem.Click += new System.EventHandler(this.StatusBarToolStripMenuItem_Click);
//
// toolsMenu
//
this.toolsMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.optionsToolStripMenuItem,
this.imageImporterToolStripMenuItem});
this.toolsMenu.Name = "toolsMenu";
this.toolsMenu.Size = new System.Drawing.Size(48, 20);
this.toolsMenu.Text = "&Tools";
//
// optionsToolStripMenuItem
//
this.optionsToolStripMenuItem.Name = "optionsToolStripMenuItem";
this.optionsToolStripMenuItem.Size = new System.Drawing.Size(165, 22);
this.optionsToolStripMenuItem.Text = "&Options";
this.optionsToolStripMenuItem.Click += new System.EventHandler(this.optionsToolStripMenuItem_Click);
//
// imageImporterToolStripMenuItem
//
this.imageImporterToolStripMenuItem.Name = "imageImporterToolStripMenuItem";
this.imageImporterToolStripMenuItem.Size = new System.Drawing.Size(165, 22);
this.imageImporterToolStripMenuItem.Text = "Image importer...";
this.imageImporterToolStripMenuItem.Click += new System.EventHandler(this.imageImporterToolStripMenuItem_Click);
//
// windowsMenu
//
this.windowsMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.newWindowToolStripMenuItem,
this.cascadeToolStripMenuItem,
this.tileVerticalToolStripMenuItem,
this.tileHorizontalToolStripMenuItem,
this.closeAllToolStripMenuItem,
this.arrangeIconsToolStripMenuItem});
this.windowsMenu.Name = "windowsMenu";
this.windowsMenu.Size = new System.Drawing.Size(68, 20);
this.windowsMenu.Text = "&Windows";
//
// newWindowToolStripMenuItem
//
this.newWindowToolStripMenuItem.Name = "newWindowToolStripMenuItem";
this.newWindowToolStripMenuItem.Size = new System.Drawing.Size(151, 22);
this.newWindowToolStripMenuItem.Text = "&New Window";
this.newWindowToolStripMenuItem.Click += new System.EventHandler(this.ShowNewForm);
//
// cascadeToolStripMenuItem
//
this.cascadeToolStripMenuItem.Name = "cascadeToolStripMenuItem";
this.cascadeToolStripMenuItem.Size = new System.Drawing.Size(151, 22);
this.cascadeToolStripMenuItem.Text = "&Cascade";
this.cascadeToolStripMenuItem.Click += new System.EventHandler(this.CascadeToolStripMenuItem_Click);
//
// tileVerticalToolStripMenuItem
//
this.tileVerticalToolStripMenuItem.Name = "tileVerticalToolStripMenuItem";
this.tileVerticalToolStripMenuItem.Size = new System.Drawing.Size(151, 22);
this.tileVerticalToolStripMenuItem.Text = "Tile &Vertical";
this.tileVerticalToolStripMenuItem.Click += new System.EventHandler(this.TileVerticalToolStripMenuItem_Click);
//
// tileHorizontalToolStripMenuItem
//
this.tileHorizontalToolStripMenuItem.Name = "tileHorizontalToolStripMenuItem";
this.tileHorizontalToolStripMenuItem.Size = new System.Drawing.Size(151, 22);
this.tileHorizontalToolStripMenuItem.Text = "Tile &Horizontal";
this.tileHorizontalToolStripMenuItem.Click += new System.EventHandler(this.TileHorizontalToolStripMenuItem_Click);
//
// closeAllToolStripMenuItem
//
this.closeAllToolStripMenuItem.Name = "closeAllToolStripMenuItem";
this.closeAllToolStripMenuItem.Size = new System.Drawing.Size(151, 22);
this.closeAllToolStripMenuItem.Text = "C&lose All";
this.closeAllToolStripMenuItem.Click += new System.EventHandler(this.CloseAllToolStripMenuItem_Click);
//
// arrangeIconsToolStripMenuItem
//
this.arrangeIconsToolStripMenuItem.Name = "arrangeIconsToolStripMenuItem";
this.arrangeIconsToolStripMenuItem.Size = new System.Drawing.Size(151, 22);
this.arrangeIconsToolStripMenuItem.Text = "&Arrange Icons";
this.arrangeIconsToolStripMenuItem.Click += new System.EventHandler(this.ArrangeIconsToolStripMenuItem_Click);
//
// helpMenu
//
this.helpMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.rEADMETXTToolStripMenuItem,
this.contentsToolStripMenuItem,
this.indexToolStripMenuItem,
this.searchToolStripMenuItem,
this.toolStripSeparator8,
this.aboutToolStripMenuItem});
this.helpMenu.Name = "helpMenu";
this.helpMenu.Size = new System.Drawing.Size(44, 20);
this.helpMenu.Text = "&Help";
//
// rEADMETXTToolStripMenuItem
//
this.rEADMETXTToolStripMenuItem.Name = "rEADMETXTToolStripMenuItem";
this.rEADMETXTToolStripMenuItem.Size = new System.Drawing.Size(168, 22);
this.rEADMETXTToolStripMenuItem.Text = "README.TXT";
this.rEADMETXTToolStripMenuItem.Click += new System.EventHandler(this.rEADMETXTToolStripMenuItem_Click);
//
// contentsToolStripMenuItem
//
this.contentsToolStripMenuItem.Enabled = false;
this.contentsToolStripMenuItem.Name = "contentsToolStripMenuItem";
this.contentsToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.F1)));
this.contentsToolStripMenuItem.Size = new System.Drawing.Size(168, 22);
this.contentsToolStripMenuItem.Text = "&Contents";
//
// indexToolStripMenuItem
//
this.indexToolStripMenuItem.Enabled = false;
this.indexToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("indexToolStripMenuItem.Image")));
this.indexToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Black;
this.indexToolStripMenuItem.Name = "indexToolStripMenuItem";
this.indexToolStripMenuItem.Size = new System.Drawing.Size(168, 22);
this.indexToolStripMenuItem.Text = "&Index";
//
// searchToolStripMenuItem
//
this.searchToolStripMenuItem.Enabled = false;
this.searchToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("searchToolStripMenuItem.Image")));
this.searchToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Black;
this.searchToolStripMenuItem.Name = "searchToolStripMenuItem";
this.searchToolStripMenuItem.Size = new System.Drawing.Size(168, 22);
this.searchToolStripMenuItem.Text = "&Search";
//
// toolStripSeparator8
//
this.toolStripSeparator8.Name = "toolStripSeparator8";
this.toolStripSeparator8.Size = new System.Drawing.Size(165, 6);
//
// aboutToolStripMenuItem
//
this.aboutToolStripMenuItem.Name = "aboutToolStripMenuItem";
this.aboutToolStripMenuItem.Size = new System.Drawing.Size(168, 22);
this.aboutToolStripMenuItem.Text = "&About ...";
this.aboutToolStripMenuItem.Click += new System.EventHandler(this.aboutToolStripMenuItem_Click);
//
// toolStrip
//
this.toolStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.newToolStripButton,
this.openToolStripButton,
this.saveToolStripButton,
this.toolStripSeparator1,
this.printToolStripButton,
this.printPreviewToolStripButton,
this.toolStripSeparator2,
this.helpToolStripButton});
this.toolStrip.Location = new System.Drawing.Point(0, 24);
this.toolStrip.Name = "toolStrip";
this.toolStrip.Size = new System.Drawing.Size(1008, 25);
this.toolStrip.TabIndex = 1;
this.toolStrip.Text = "ToolStrip";
//
// newToolStripButton
//
this.newToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.newToolStripButton.Image = ((System.Drawing.Image)(resources.GetObject("newToolStripButton.Image")));
this.newToolStripButton.ImageTransparentColor = System.Drawing.Color.Black;
this.newToolStripButton.Name = "newToolStripButton";
this.newToolStripButton.Size = new System.Drawing.Size(23, 22);
this.newToolStripButton.Text = "New";
this.newToolStripButton.Click += new System.EventHandler(this.ShowNewForm);
//
// openToolStripButton
//
this.openToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.openToolStripButton.Image = ((System.Drawing.Image)(resources.GetObject("openToolStripButton.Image")));
this.openToolStripButton.ImageTransparentColor = System.Drawing.Color.Black;
this.openToolStripButton.Name = "openToolStripButton";
this.openToolStripButton.Size = new System.Drawing.Size(23, 22);
this.openToolStripButton.Text = "Open";
this.openToolStripButton.Click += new System.EventHandler(this.OpenFile);
//
// saveToolStripButton
//
this.saveToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.saveToolStripButton.Image = ((System.Drawing.Image)(resources.GetObject("saveToolStripButton.Image")));
this.saveToolStripButton.ImageTransparentColor = System.Drawing.Color.Black;
this.saveToolStripButton.Name = "saveToolStripButton";
this.saveToolStripButton.Size = new System.Drawing.Size(23, 22);
this.saveToolStripButton.Text = "Save";
this.saveToolStripButton.Click += new System.EventHandler(this.saveToolStripButton_Click);
//
// toolStripSeparator1
//
this.toolStripSeparator1.Name = "toolStripSeparator1";
this.toolStripSeparator1.Size = new System.Drawing.Size(6, 25);
//
// printToolStripButton
//
this.printToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.printToolStripButton.Image = ((System.Drawing.Image)(resources.GetObject("printToolStripButton.Image")));
this.printToolStripButton.ImageTransparentColor = System.Drawing.Color.Black;
this.printToolStripButton.Name = "printToolStripButton";
this.printToolStripButton.Size = new System.Drawing.Size(23, 22);
this.printToolStripButton.Text = "Print";
this.printToolStripButton.Click += new System.EventHandler(this.printToolStripButton_Click);
//
// printPreviewToolStripButton
//
this.printPreviewToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.printPreviewToolStripButton.Image = ((System.Drawing.Image)(resources.GetObject("printPreviewToolStripButton.Image")));
this.printPreviewToolStripButton.ImageTransparentColor = System.Drawing.Color.Black;
this.printPreviewToolStripButton.Name = "printPreviewToolStripButton";
this.printPreviewToolStripButton.Size = new System.Drawing.Size(23, 22);
this.printPreviewToolStripButton.Text = "Print Preview";
this.printPreviewToolStripButton.Click += new System.EventHandler(this.printPreviewToolStripButton_Click);
//
// toolStripSeparator2
//
this.toolStripSeparator2.Name = "toolStripSeparator2";
this.toolStripSeparator2.Size = new System.Drawing.Size(6, 25);
//
// helpToolStripButton
//
this.helpToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.helpToolStripButton.Enabled = false;
this.helpToolStripButton.Image = ((System.Drawing.Image)(resources.GetObject("helpToolStripButton.Image")));
this.helpToolStripButton.ImageTransparentColor = System.Drawing.Color.Black;
this.helpToolStripButton.Name = "helpToolStripButton";
this.helpToolStripButton.Size = new System.Drawing.Size(23, 22);
this.helpToolStripButton.Text = "Help";
//
// statusStrip
//
this.statusStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.toolStripStatusLabel,
this.toolStripProgressBar1});
this.statusStrip.Location = new System.Drawing.Point(0, 604);
this.statusStrip.Name = "statusStrip";
this.statusStrip.Size = new System.Drawing.Size(1008, 22);
this.statusStrip.TabIndex = 2;
this.statusStrip.Text = "StatusStrip";
this.statusStrip.Visible = false;
//
// toolStripStatusLabel
//
this.toolStripStatusLabel.Name = "toolStripStatusLabel";
this.toolStripStatusLabel.Size = new System.Drawing.Size(891, 17);
this.toolStripStatusLabel.Spring = true;
//
// toolStripProgressBar1
//
this.toolStripProgressBar1.Name = "toolStripProgressBar1";
this.toolStripProgressBar1.Size = new System.Drawing.Size(100, 16);
//
// PumpForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(1008, 626);
this.Controls.Add(this.statusStrip);
this.Controls.Add(this.toolStrip);
this.Controls.Add(this.menuStrip);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.IsMdiContainer = true;
this.MainMenuStrip = this.menuStrip;
this.Name = "PumpForm";
this.Text = "Ascii Pumper";
this.Load += new System.EventHandler(this.PumpForm_Load);
this.MdiChildActivate += new System.EventHandler(this.PumpForm_MdiChildActivate);
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.PumpForm_FormClosing);
this.menuStrip.ResumeLayout(false);
this.menuStrip.PerformLayout();
this.toolStrip.ResumeLayout(false);
this.toolStrip.PerformLayout();
this.statusStrip.ResumeLayout(false);
this.statusStrip.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.MenuStrip menuStrip;
private System.Windows.Forms.ToolStrip toolStrip;
private System.Windows.Forms.StatusStrip statusStrip;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator3;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator4;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator5;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator6;
private System.Windows.Forms.ToolStripMenuItem printSetupToolStripMenuItem;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator7;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator8;
private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel;
private System.Windows.Forms.ToolStripMenuItem aboutToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem tileHorizontalToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem fileMenu;
private System.Windows.Forms.ToolStripMenuItem newToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem openToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem saveToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem saveAsToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem printToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem printPreviewToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem editMenu;
private System.Windows.Forms.ToolStripMenuItem undoToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem redoToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem cutToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem copyToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem pasteToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem selectAllToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem viewMenu;
private System.Windows.Forms.ToolStripMenuItem toolBarToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem statusBarToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem toolsMenu;
private System.Windows.Forms.ToolStripMenuItem optionsToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem windowsMenu;
private System.Windows.Forms.ToolStripMenuItem newWindowToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem cascadeToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem tileVerticalToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem closeAllToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem arrangeIconsToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem helpMenu;
private System.Windows.Forms.ToolStripMenuItem contentsToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem indexToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem searchToolStripMenuItem;
private System.Windows.Forms.ToolStripButton newToolStripButton;
private System.Windows.Forms.ToolStripButton openToolStripButton;
private System.Windows.Forms.ToolStripButton saveToolStripButton;
private System.Windows.Forms.ToolStripButton printToolStripButton;
private System.Windows.Forms.ToolStripButton printPreviewToolStripButton;
private System.Windows.Forms.ToolStripButton helpToolStripButton;
private System.Windows.Forms.ToolStripProgressBar toolStripProgressBar1;
private System.Windows.Forms.ToolStripMenuItem imageImporterToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem openRecentToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem recentFilesToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem rEADMETXTToolStripMenuItem;
}
}

474
source/PumpForm.cs Normal file
View File

@ -0,0 +1,474 @@
#region Copyright (c) 2007, PP4L Software
/************************************************************************************
Copyright 2007, PP4L Software
Author: Lampiasis <lampiasis@dvolker.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
'***********************************************************************************/
#endregion
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Net;
using System.Text.RegularExpressions;
using System.Reflection;
using System.Diagnostics;
using System.Threading;
using System.Drawing.Printing;
namespace AsciiPumper
{
public partial class PumpForm : Form
{
private int childFormNumber = 0;
public PumpForm()
{
InitializeComponent();
}
private void ShowNewForm(object sender, EventArgs e)
{
// Create a new instance of the child form.
MainForm childForm = new MainForm();
// Make it a child of this MDI form before showing it.
childForm.MdiParent = this;
//childForm.Text = "(Untitled)";
childForm.FileName = "(Untitled " + ++childFormNumber + ")";
childForm.FileModified = false;
childForm.UndoChanged += new EventHandler<MainForm.UndoChangedEventArgs>(childForm_UndoChanged);
childForm.RedoChanged += new EventHandler<MainForm.RedoChangedEventArgs>(childForm_RedoChanged);
childForm.Show();
}
void childForm_RedoChanged(object sender, MainForm.RedoChangedEventArgs e)
{
if (sender is MainForm)
{
MainForm form = (MainForm)sender;
if (form.RedoList.Count > 0)
redoToolStripMenuItem.Enabled = true;
else
redoToolStripMenuItem.Enabled = false;
}
}
void childForm_UndoChanged(object sender, MainForm.UndoChangedEventArgs e)
{
if (sender is MainForm)
{
MainForm form = (MainForm)sender;
if (form.UndoList.Count > 0)
undoToolStripMenuItem.Enabled = true;
else
undoToolStripMenuItem.Enabled = false;
}
}
private void OpenFile(object sender, EventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
openFileDialog.Filter = "Text Files (*.txt)|*.txt|All Files (*.*)|*.*";
if (openFileDialog.ShowDialog(this) == DialogResult.OK)
{
OpenFileByName(openFileDialog.FileName);
}
}
private void OpenFileByName(string fn)
{
Cursor cur = Cursor.Current;
Cursor.Current = Cursors.WaitCursor;
try
{
Stream stream = File.OpenRead(fn);
MainForm form = new MainForm();
form.LoadStream(stream);
stream.Close();
form.FileName = fn;
form.MdiParent = this;
form.FileModified = false;
form.UndoChanged += new EventHandler<MainForm.UndoChangedEventArgs>(childForm_UndoChanged);
form.RedoChanged += new EventHandler<MainForm.RedoChangedEventArgs>(childForm_RedoChanged);
form.Show();
}
finally
{
Cursor.Current = cur;
}
AddFileToRecentFiles(fn);
}
private void SaveAsToolStripMenuItem_Click(object sender, EventArgs e)
{
if (this.ActiveMdiChild == null)
{
MessageBox.Show(this, "No files are loaded.");
return;
}
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
saveFileDialog.Filter = "Text Files (*.txt)|*.txt|All Files (*.*)|*.*";
if (saveFileDialog.ShowDialog(this) == DialogResult.OK)
{
Stream stream = saveFileDialog.OpenFile();
StreamWriter writer = new StreamWriter(stream);
if (this.ActiveMdiChild is MainForm)
{
((MainForm)this.ActiveMdiChild).FileName = saveFileDialog.FileName;
((MainForm)this.ActiveMdiChild).FileModified = false;
writer.Write(((MainForm)this.ActiveMdiChild).GetIRCString(false));
writer.Close();
}
AddFileToRecentFiles(saveFileDialog.FileName);
}
}
private void ExitToolsStripMenuItem_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void CutToolStripMenuItem_Click(object sender, EventArgs e)
{
// TODO: Use System.Windows.Forms.Clipboard to insert the selected text or images into the clipboard
}
private void CopyToolStripMenuItem_Click(object sender, EventArgs e)
{
// TODO: Use System.Windows.Forms.Clipboard to insert the selected text or images into the clipboard
}
private void PasteToolStripMenuItem_Click(object sender, EventArgs e)
{
// TODO: Use System.Windows.Forms.Clipboard.GetText() or System.Windows.Forms.GetData to retrieve information from the clipboard.
}
private void ToolBarToolStripMenuItem_Click(object sender, EventArgs e)
{
toolStrip.Visible = toolBarToolStripMenuItem.Checked;
}
private void StatusBarToolStripMenuItem_Click(object sender, EventArgs e)
{
statusStrip.Visible = statusBarToolStripMenuItem.Checked;
}
private void CascadeToolStripMenuItem_Click(object sender, EventArgs e)
{
LayoutMdi(MdiLayout.Cascade);
}
private void TileVerticalToolStripMenuItem_Click(object sender, EventArgs e)
{
LayoutMdi(MdiLayout.TileVertical);
}
private void TileHorizontalToolStripMenuItem_Click(object sender, EventArgs e)
{
LayoutMdi(MdiLayout.TileHorizontal);
}
private void ArrangeIconsToolStripMenuItem_Click(object sender, EventArgs e)
{
LayoutMdi(MdiLayout.ArrangeIcons);
}
private void CloseAllToolStripMenuItem_Click(object sender, EventArgs e)
{
foreach (Form childForm in MdiChildren)
{
childForm.Close();
}
}
private void aboutToolStripMenuItem_Click(object sender, EventArgs e)
{
(new AboutBox1()).ShowDialog(this);
}
private void optionsToolStripMenuItem_Click(object sender, EventArgs e)
{
OptionsForm optionsform = new OptionsForm();
optionsform.SettingsSaved += new EventHandler<OptionsForm.SettingsSavedEventArgs>(optionsform_SettingsSaved);
optionsform.ShowDialog(this);
}
private void AddFileToRecentFiles(string fn)
{
Program.Settings.RecentFiles.Remove(fn);
Program.Settings.RecentFiles.Add(fn);
while (Program.Settings.RecentFiles.Count > 10)
{
Program.Settings.RecentFiles.RemoveAt(0);
}
ReloadRecentFiles();
}
void optionsform_SettingsSaved(object sender, OptionsForm.SettingsSavedEventArgs e)
{
foreach (Form form in this.MdiChildren)
{
if (form is MainForm)
{
((MainForm)form).RepaintCanvas();
}
}
}
private void ReloadRecentFiles()
{
openRecentToolStripMenuItem.DropDownItems.Clear();
if (Program.Settings.RecentFiles == null)
{
Program.Settings.RecentFiles = new System.Collections.Specialized.StringCollection();
}
for (int i = Program.Settings.RecentFiles.Count - 1; i >= 0; i--)
{
openRecentToolStripMenuItem.DropDownItems.Add(Program.Settings.RecentFiles[i], null, new EventHandler(OpenRecentHandler));
}
}
private void PumpForm_Load(object sender, EventArgs e)
{
new Thread(new ThreadStart(this.CheckForNewVersion)).Start();
ReloadRecentFiles();
string[] args = Environment.GetCommandLineArgs();
if ( args.Length > 1 )
OpenFileByName(args[1]);
else
ShowNewForm(this, EventArgs.Empty);
}
private void OpenRecentHandler(object sender, EventArgs e)
{
ToolStripMenuItem menu = (ToolStripMenuItem) sender;
// see if file is open already
foreach (Form form in this.MdiChildren)
{
if (form is MainForm)
{
if (((MainForm)form).FileName == menu.Text)
{
form.Activate();
return;
}
}
}
// open file
OpenFileByName(menu.Text);
}
private void CheckForNewVersion()
{
// this is really non-critical code so let's discard all exceptions and go on with life ok?
try
{
WebRequest request = WebRequest.Create("http://code.google.com/p/asciipumper");
// Get the response.
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
// Get the stream containing content returned by the server.
Stream dataStream = response.GetResponseStream();
// Open the stream using a StreamReader for easy access.
StreamReader reader = new StreamReader(dataStream);
// Read the content.
string responseFromServer = reader.ReadToEnd();
Regex versionregex = new Regex(@"Latest release version: (\d+)\.(\d+)\.(\d+)\.(\d+)", RegexOptions.Multiline);
MatchCollection matches = versionregex.Matches(responseFromServer);
if (matches.Count >= 1 && matches[0].Captures.Count >= 1)
{
int v1, v2, v3, v4;
v1 = int.Parse(matches[0].Groups[1].Value);
v2 = int.Parse(matches[0].Groups[2].Value);
v3 = int.Parse(matches[0].Groups[3].Value);
v4 = int.Parse(matches[0].Groups[4].Value);
Version v = Assembly.GetExecutingAssembly().GetName().Version;
bool old = false;
if (v.Major < v1)
old = true;
if (v.Major == v1 && v.Minor < v2)
old = true;
if (v.Major == v1 && v.Minor == v2 && v.Build < v3)
old = true;
if (v.Major == v1 && v.Minor == v2 && v.Build == v3 && v.Revision < v4)
old = true;
if (old)
{
DialogResult res = MessageBox.Show(string.Format("A new version of Ascii Pumper is available.\r\nYou have: {0}.\r\nLatest release: {1}.{2}.{3}.{4}.\r\n\r\nVisit homepage?", v.ToString(), v1, v2, v3, v4), "New Ascii Pumper version", MessageBoxButtons.YesNo);
if (res == DialogResult.Yes)
{
ProcessStartInfo pi = new ProcessStartInfo("http://code.google.com/p/asciipumper/");
Process.Start(pi);
}
}
}
}
catch (Exception e)
{
// this is really non-critical code so let's discard all exceptions and go on with life ok?
}
}
private void saveToolStripButton_Click(object sender, EventArgs e)
{
if (this.ActiveMdiChild == null)
{
MessageBox.Show(this, "No files are loaded.");
return;
}
if (this.ActiveMdiChild is MainForm)
{
((MainForm)this.ActiveMdiChild).SaveDocument();
AddFileToRecentFiles(((MainForm)this.ActiveMdiChild).FileName );
}
}
private void saveToolStripMenuItem_Click(object sender, EventArgs e)
{
saveToolStripButton_Click(sender, e);
}
private void imageImporterToolStripMenuItem_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "Supported images (*.bmp, *.jpeg, *.jpg, *.png, *.gif)|*.bmp;*.jpeg;*.jpg;*.png;*.gif|Bitmaps (*.bmp)|*.bmp|GIFs (*.gif)|*.gif|JPEGs (*.jpg,*.jpeg)|*.jpeg;*.jpg|PNGs (*.png)|*.png|All Files (*.*)|*.*";
DialogResult res = ofd.ShowDialog(this);
if (res == DialogResult.OK)
{
// Create a new instance of the child form.
MainForm childForm = new MainForm();
// Make it a child of this MDI form before showing it.
childForm.MdiParent = this;
//childForm.Text = "(Untitled)";
childForm.FileName = "(Imported image " + ++childFormNumber + ")";
childForm.FileModified = false;
childForm.Show();
childForm.ImportImage(ofd.FileName);
}
}
private void printPreviewToolStripMenuItem_Click(object sender, EventArgs e)
{
PrintPreviewDialog previewdlg = new PrintPreviewDialog();
previewdlg.Document = new System.Drawing.Printing.PrintDocument();
previewdlg.Document.PrintPage += new PrintPageEventHandler(Document_PrintPage);
previewdlg.ShowDialog(this);
}
void Document_PrintPage(object sender, PrintPageEventArgs e)
{
if (this.ActiveMdiChild is MainForm)
{
((MainForm)this.ActiveMdiChild).PrintToGraphicDevice(e.Graphics, e);
}
}
private void printToolStripButton_Click(object sender, EventArgs e)
{
PrintDialog printdlg = new PrintDialog();
printdlg.Document = new PrintDocument();
printdlg.Document.PrintPage += new PrintPageEventHandler(Document_PrintPage);
if (printdlg.ShowDialog(this) == DialogResult.OK)
printdlg.Document.Print();
}
private void printPreviewToolStripButton_Click(object sender, EventArgs e)
{
printPreviewToolStripMenuItem_Click(sender, e);
}
private void printSetupToolStripMenuItem_Click(object sender, EventArgs e)
{
}
private void printToolStripMenuItem_Click(object sender, EventArgs e)
{
printToolStripButton_Click(sender, e);
}
private void redoToolStripMenuItem_Click(object sender, EventArgs e)
{
if (this.ActiveMdiChild is MainForm)
{
MainForm form = (MainForm)this.ActiveMdiChild;
form.Redo();
}
}
private void undoToolStripMenuItem_Click(object sender, EventArgs e)
{
if (this.ActiveMdiChild is MainForm)
{
MainForm form = (MainForm)this.ActiveMdiChild;
form.Undo();
}
}
private void PumpForm_FormClosing(object sender, FormClosingEventArgs e)
{
Program.Settings.Save();
}
private void rEADMETXTToolStripMenuItem_Click(object sender, EventArgs e)
{
ProcessStartInfo pi = new ProcessStartInfo( /*Assembly.GetExecutingAssembly().Location*/ "README.TXT");
Process.Start(pi);
}
private void PumpForm_MdiChildActivate(object sender, EventArgs e)
{
childForm_UndoChanged(this.ActiveMdiChild, MainForm.UndoChangedEventArgs.Empty);
childForm_RedoChanged(this.ActiveMdiChild, MainForm.RedoChangedEventArgs.Empty);
}
}
}

430
source/PumpForm.resx Normal file
View File

@ -0,0 +1,430 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="menuStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>218, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="newToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAQpJREFUOE+t021L
wlAUB3C/VH6H+hr5jSRfiPSiFiEDgwWGRhZm0EoQcQN7QoblWPNp6py6h3/cwWDkvde98MDhvrnndznn
cFOpfYVU7+J/lmoKipUWhGs5TO5bpJgVBfEB6aMMH7m6V5nAiVBB9UnhI+Jtmwlkz27C4iiprVyWm0zA
9XwQJIKowLn0TAWCIIDtbGCM7BA4ODymD/O09EgF1hsPY8uBplt8IF+sbQGeH2BmrzEwF3jXxnwgd1Hd
ApyVC3OyRO9nis6HyQdIf/Egg5vOV+gbM3R7I7yqenIgPrjP/gTtt180Wt/Jgfjg1K8h5M4Ady9aMiDa
N+tkrjHaMbmwK/f1gUPnD9/19ZYU1J08AAAAAElFTkSuQmCC
</value>
</data>
<data name="openToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAl9JREFUOE+9k1tI
E2AYhnfRRVcWaVEIRpaEXYiBIdVFSNJJUUqzwkgTylMHDMU2D206dXMnp650mNt0TZ1WlmFYIRSKRGip
o8S0LCgqxcxQydPT3EKTLPCmH96bn+99vvf7fn6B4H+cnGIzEq2Fy3ITeToraUojy+obnawjLF7lMJ0X
lpNlh6VIDUQlFyOoM2tYSo01sr92SUgrITxRRWh8gRPQ22VkYqTWoR/DFqYGDVhNKurN0iUhYQlqQuO0
BMcWIaitUDM+XLXIPPOphClbElXlcipLczEUZ6EvyOSaUkSRLHUxtNqoYPyLcb7zrN1MrwhssUvqD8CN
MhnfP+odsefMTXUKh+5b82mwyLhdmYvVkI1FL8Gku8J1bTqlahE6hdCZplKfy+i7QuZiv2kRU1+lZuaN
BAaki/XWftefBj3J8DKRzpoILsaEIDDosvnWJ4f3Su5Uq2h7oHQW/T7CiyhoD2e6NYiJhwG8rvDh3Kn9
TkCZVszXVxIGWjOotyiZ7RdDd5wT0BljNx5nui2EieZ9jDbuZqhuO5J4L04EujmXWaLOYKhLyE2zgo4n
9iQ9SXbAGeg4yezTw0w+PshY0x6G6/34XO1Ne85qIoM88dvq4gTo8kV0N2dyy5wPfZnw3B732VEmW4IZ
exTASIM/g1YfPhi3YFO6Io7djO8294WnLMxLpdYkx3Y3gXaNYF5tyhU0y1ZyL2sVNelrMaS6c/XSRiIP
bcLf12MBoJGmoBGfJU8YTdqFY47FnI4I5MiBnezd5cMOHy+8Pd3x2ODGujUurHf9FX1Zv+kfxT8BMS7u
X4BvNFkAAAAASUVORK5CYII=
</value>
</data>
<data name="saveToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAilJREFUOE+tk91L
k3EUx/cvdN9N0EW3NTWGa7EaPOUcyqphWBG9PZEv5dJlmqhYmUYtXyBb4dJJy+kknFT4BqZIjaFMJUsz
V7TEoabYRDD49ju/6Pm1Mm/qB+fy8znPOef7qFT/4z17GgWVr30Zbd4lPHYvoLEhgvuOGdTWfIL9dgg3
yqdQWjKBwoLXyMsdxYXzQSi9CeztAWqqV7HRW1ldgzGtF4fTnvBSBN7WRS6orPjyV57gyMIKdpufQ62W
YTnkEQL3o3kuKC35vK7gJ/w+vIg4kw8Fl6dxwNwkBM76WS64ZHv3h+BXeGQygm2SF9accaSmOIWg7m6Y
C7KzRmMEv8ODwTA2692Q5QBMJocQVFd95AL5TEARrAf3+D9gU2IDjhx9gaSkWiG4WTmN7i6wUwLHT76C
5dgA3zYtjGamz6bOP+A+HLR0QpLsQnC1bBIdPrAMAE2ub+zuX1F+fY4vlRZGM2dmBBU4ObUdBkOFEFwp
HIenGXjoXGPBicKYnhNT5hM2pJ8r4p2TUxi83wO9vkwIbHljDAaq7kR5ZxJQSOK0EobezmJsag5y7jXs
NbZxWLvHBZ2uSAgolo57UD6bBASfzb+FN6F5hGaWcLHYjni9i8GNiN/1ANrEfCHIzBhmcy/zmbcaPNiy
Q0JLRz98XYPo7vNj4OUQ9pksUOvqkcDg7Zo6aDTWWMHpU/08npQwCgndmU5F26aF0czUlYrgnQnZQvAv
f/R3bGg6a0rM640AAAAASUVORK5CYII=
</value>
</data>
<data name="printToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAi5JREFUOE+tk+1P
klEYxlkf+39aW1utttpM1NJqwzIjnM5J0TAmBSHLCFNJ7cVaUqNH5gLdQxY4RkxrbDqDzBJdOt0SKLAg
TEDDeLl6nkPgSNz64L1d29nZ7ut3nfucw+HsdBltUxi0f4RpdGZb0SNubMtlDd67ffi3Nn4n4fGvYNA6
gZJzV8GtvrLVhG1mlUqlEQxH4HB9IhqyO2Ewj8M140WVSE0MCibQW1z4/DWcB2fJq9E4ZheXQduchFyQ
rqXHwSrJ0L2BUB7d6piG0+1BZYMKx87LodG+wL0+62YKRecz0jzinCd0lpolB0IxzC+F0Guwo5Qvg7Kr
H0/oMZQyRuQYTW16qB8OgTK/wyOjA/qXb3GXsuH6HSPELVrwGztQXqNA8VkpTl+4iW6dBRKVFsXZId5+
+gqRWHzL1NmNRDKF9XiCzOB7eB1fvkUhb6dQJ+1iEsgyCVQPTDC/+YDndhco02vc7xuGumcAsnYdRM09
EFzuAK+hBccFchSdkeAis1cpvIGDJ0UZA2X3AHz+YMEEkbUNeAKr2A0O0S6KA764DSXVUuw5WpMxaO40
YHpuCczccsWuf0QTmPOtYWw2TJotfw1O1CpwoEK4aaDUUND00vAG4wjH0vD/TGNxOYWJhV8Ynoyi37FC
yFkd4YlJcy5BvaQVsls6jE76yN3+j/IM2GNIVI9RUadEmeAauMwzLapqwmFeIw6duoT95ULsK6vHXm5t
jpyj78RP/gPgHTGb+rLlcwAAAABJRU5ErkJggg==
</value>
</data>
<data name="printPreviewToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAdVJREFUOE+t099L
U2Ecx3H/GemqiygrwpsIzESJqJzzx4VOnMQkKFToZjcZQf5oDd0SXa0m/sJjnJU5K5eb1oIig8nUiwah
brLUInG6zb3znLB2PNu68QtfHjjweX2f5+E8OTmHUaJnnoMtTPoZdH3G4fwgd9Y5UjhT9Qy/5WRRbXZk
1D2XEeh0uJiY8WdHhl99yQiYn7yUw/ud9ij9Yx9VQDy2xdTMFJZHdm63mbhr6iS/RJf+Lp6KPgWwvb2F
OD7Oa880och3voUjOAQRnaGRKsMtNWITvArAPe3F5fbI3+IJ+BXdZWU9gdk2hLZarwa6BycVQJfNzvJq
5G84/CPOwnIMp3eesspKNdDVN6EAOizdLK2uyZPDG4m98A6+hSgPR3xcLi1VA9JNp5YgOhFdbkIbe5NX
YrxfjPLi0yYNzUbKyssxtTQqkVQgmUzyNRjkXoeZ3oHnPPMGsAo+GpqMaLRXGbhfhWi9rkRSgZ1YgvWf
UfyBAA8sFvTXDNTU1lGhuYT55jlCj8+z+64ae/uNf8g+IK2ZuuVOK/UlJ5g15rFkPcuaU0OT/uKfo0ih
vAu6/3ZB0RX0xcd503yausKjaItPZX9k6X5baRf5x45QeCZXDv8Gd10kHhF4wJIAAAAASUVORK5CYII=
</value>
</data>
<data name="undoToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAZlJREFUOE+1ktsr
w2EYx/0p7sidnIkWlmMsSQxzlrkxhxySOV4oM9qSHG+ctuVsLCmxG+5QcoOUhZxP++324zdKDit+ylvP
3fP5vM/zfl8vr/88RqsL45LA6JrA1KaAWSyLXeBXd+rnBdzVNSvQanLSPO5kZPVN4FHSZblicvvN7oZ6
FlyUGO6I1WwTUWIjJN9KXP0xAzYPArexdfyS0Q2BZpNA76ILle4CuWaLqLI1gnKnia1YJixviozOOybE
vm9rVA9cUD74TOWwkyzdI+FFVkIL5kXY/NqsaLLhnzmGvO6Qlgnnd0Gh/pykthuyu5+pHb7BN8lAYI7p
vdFbpiWq3I689ogWswdBWvsZwdUnJLRdvU5SoDtFO3b7WaC2k6g9p92TILregazqgHD1FoF5K/grZ/BN
7nsXBKvmiFRvoui4RtPv+DnKr1H5JBrE8Q8pNd7TLcb7q7/wsSm0eJ30zgcytDvSYJX+HlnFLqkdD6Q0
7OOnGJImiG90iPAT8TV7BCgt0mD3Ckox1piaA4JyZqXDkh/qL8ALl3QQwQeUb4QAAAAASUVORK5CYII=
</value>
</data>
<data name="redoToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAZNJREFUOE/Nkt8r
Q2EcxvenuMGSdsE2mptdGGYrU7NiZsoi5HdhyTY/VohdbKSxTdjM1mrKr6SEm7njSolQu9FaRue814/3
HFHr0CgXTj1X5/l+3ud9vq9I9Fdf9JwgckYQpgocE8zHWVjXWfyIzw1z8h8R2IMsJrZZOKMsRjcohCon
hBv2HhJUWx9R1roHheUAyp4ELB4GAz4WA/53yNYFgXLwWggMnRIYZp4hN66hsjcOmSnGS27eRRuFdHgZ
dFNIgPoqOhN82qxUjhAL1cgdCmvnoRs/5H/KTBGUGsMo1q2iYfaVT9K1wkBq3hcmcEQ4wD0K1C7kKW2f
BmnzNsQaN4Z9aRgXGGgm05A0bAoBUxSgsT9RsycLsLhPwIk7WT2ZgnzoAWLtkhDQv5xEvTONksZYFoAr
TEHvLDUfQKIP8sP5VXNCwMIOQbsnA9XwLe3BnWUQFPbdTg22S+hnXlBuOcm9968gRbTturFr1E2/QNl3
hRZX5vcgDqK13kDnZFAzlvw94COZxpFCE11bzif8LwxvxTcHtycxLyQAAAAASUVORK5CYII=
</value>
</data>
<data name="cutToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAaNJREFUOE+V07tL
W2EcxnH/AgcHJ6GjWifxVrR4K81gokdOYpoSpcHEYGuJCDFqFNEajdeUGgmIWomCkMugB4cWiqVLK95A
xU1EBC+oOGq3rzkRnOTw+s6/5/Pw3lJSBBaJJTD2MBJRfjOzpDwG1PDh8Sndg1NiSHAuznhoEe/gdDJw
e/efmPILx2evGKCGJmciBGdjajlnF9c4W3tIT0sVByIra4wGw6xv7fLn7w7mDy3PA8LRH4xNLTARCtPR
H8AgW8Xb1S2MfAvj7gtgd/VS1/ARnV5+HqAiNpcPs60Nk3MIyeYTB6zDN1hGrjANHKP3bGDo2KbGu4+h
fRNdy09tyOK/5P34Dca+Q0qs3ymQA+hca0jdB7xNhIvr57UBs/8c89ApFc7lZLhAnkDv3kDqOqCyWSHf
+FUbqPOdIPcfUdmkkFc7lgRqE+3Vndu8soTIKf+kDRi/HCF59ii1x8k1PByc3v2P0sYo2a/tZLzI1gZq
unYpa4wl2kfJLHyXfDxljjgvS2xkFlnIk/zawJvmVQpNk2QVN5Bb1SN+dcJf9YnBe5GF6RjGCzzaAAAA
AElFTkSuQmCC
</value>
</data>
<data name="copyToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAd1JREFUOE+lk99L
U2EYgP1TShlSXdt9RGpSYFB4UVCQRVe70KuuIsMgqxkLnG0Tc5ayzc70RKSLlJlraTJzrl+TlkFtMJVz
dDmnZ/a480mzLdgEX3juvvd5f3zfV1a235DHv6AjjYUFzuEgvfI77tpk9uTWkwvDMRTgastTjtY1lpZ4
RsN5+ZmtP3T0vcLrD3O+qb20xDkyIwTeCEgfIBRVeeh4iTSh4h5XcPkUHo8omAeXBRfvx/K76pUDuQ42
NjOoq2liiaQQFEZr/yJVV/yC3H7sbp841+3fxDSsclP6RXNPlL7XS/8JmqwJ5EmVIw1DAiGxZOfV515L
aSwqKRZiK3yKLmF/EReCNikjCM2vcMkU53DDcw6dHaCy/smOQJ93Pa3lKhvtEa5ZPvLAtZDXgfpbY/7n
Ov65VazSNIbTXbsCNZnm8/cEM19jBEI/GHv/jZbuneu90Z/EaIlz4V6EM7dmBVZpCkNd566g6uRlCmk2
zwqBlh0voWjMRdcYDap43izzaCBARY25+BtpbJ0Ugn8r/+2g0/2W8hOm4oJz132kNrawDwaxeaaxPpsS
lfVki3OCg8fvFBfUGL3ZbbsElfUODKdsVNR2UF7dnk1u48Cx26Wf+Z4+034PbQPvwt9VHJdeuQAAAABJ
RU5ErkJggg==
</value>
</data>
<data name="pasteToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAk9JREFUOE+1k1lI
lGEUhn/owm6KFuqqq4LoJooIqouMwixMmzASMzInYlRKRpk0HVJLU3Rym7RsjFwGNbdKlJQiERKHdg3H
aJFIjZwmaxbXyeLp/78YclovogMv5+Z7l3M4nyT9j+pqzabjagbNFSloo3bxR4+m6kJmoyL/AA5bDeO2
Swz155GkCaQwS8d5gx5jVqKAj6BCnnI24nE1MOWoxVyqY2K0iqRoFU+7kzl5LJhk9XpsXYcYbVuONnL3
zwIK2eOq40L2QXoseTjfFDPSr+eV5TAtZSqiI/ypSV3Go0KJ2P0/jNRQlS/cPc4rGFIjSdeFo48L40Rs
KDqNinh1MDERARRpVwiB8CB/3wS15QamnfVM201MDOdgfxKHtWqxQF/lInpK53Hf6CfICgI2rfUVMJuy
mbRXMDmYycSzo4w/3ouzdT4FlW3kmJo5da6eZIOZ+IwyolOMRCbk+gqUl2QwNmRkvF/D2INg3HfW8e76
EkH2lmfmMw7XFIMjDsJiThMSpf8uUlaQhvN5Ju57gbg7V+NqX8pQpSSclSq/1iVgquugb8AmyLe6rewI
VX8TKclN4UPvcVwdq3DeWIi90Y+By5KI/WnmCx/dsvNbB30vbVh6XxMUEU+gTN62cw/+m7cgFZ1JxH43
RiYv4H3TXIar52C9IKGVZ1ZiexNclBMUm9tp6bSKrmDjmpVIZ9MTxIF4t+ztGnlhs51vW14IcuPNHura
HvoKFKQdkS9MhTp0OyFbNwhlZdvKzF63X3WR4He1T9628uBv+OfP/BWTNfjZ3FJ2xwAAAABJRU5ErkJg
gg==
</value>
</data>
<data name="indexToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAqRJREFUOE+Fk1tI
01EYwOdr0HOJvfdm9FpPBZFQDyFBCb71ZoZooZiXMeetnJs6L9O8m2s6clNRN7VdtDmnS5uXleQQ3Zzm
XRMvYfz6b6KVZn3wceBwfr/zfecSIjojqurcbG98F21u7ogODhBlZFwPOWvtqfkAHEiXa5Wa2inUbyaR
SgdIT7fxX8kR7HCsUqJyYbGu8M7ko9c0i6bJjSTDfrboJNzRuYjNtk2/ZQurZYPenlV0unkaGieEigb/
FJ2E29r9mE0bdHUt09q2SIsANmtnaaifRqVyI5ePkpk9eNjSSVin9wVBvd5Pk2aO+noPlZVTlJRMoFCM
kJMzzNMEE7FPDBzDLtd6sGdN0yxa7Rzq1zPU1kzT1OpD1rxOVNEekbItJJU+5CVjxDw2oGsdOBRomseR
K5zU1Hl4VfGZsmI3ysJxqrR+4jVQboEPc0J6obbvgAfZXlpMbqa9M4jEEisa7RgSaR+ygiFk+SO8zHNS
3eghTg3aIZhf2CQ118jth1XBUe/Y4WackzylA9GzRAMziz6M5lGSU3oQi63BO89qWEJlJhhH8PCoNygp
qrUjVS8QHWNElJqupkDZzcKmn9llob9CM9KsPu7lrqEfPRQEIlBFQHDtbhmljSM09O8TerkU0Yv8QWHn
XiENmGzjrO1/xWL/RITYh+43wda3vSCcmGlkekk4C/MuF8Jyfr1MSWYfKWk9FBRb8fjnUHXOI2/fOa7A
Luwur3TgEeBx4TATitxERFadftopaSaeC6IO8xduJXykw7nP7g8wvPcSfqOAyXko7Vjh/FUl2Urz3/9G
mthMUnI3dS2TXIkyIq6eQWPbpdGyQ7xiknPhCmKT3tI/4vv351JVOMlX2ol+1EropSwuhqVy5345MpWV
wTF/EP4JaStxoteu5NMAAAAASUVORK5CYII=
</value>
</data>
<data name="searchToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAtpJREFUOE+Vk1lP
k1EQhutC/CHGGBM1MWpc4oVLSFGhRogfFAREqVCQshSoRRAQSlFUSitQwqKtqChBEepH3IKCC4agxoi4
YdSw1FTQCFpE5LEfF1aCXjhX55yced7MzDuzZH9ERrGIdGVyUjbXZ7Zsns8c2ei3cdnIV7ds0vNWnhMy
68//086ZJS0ctIjY29q5/roLsa8Fe28uSWIMguEk0Rl2VJmnpwRmxAGTiMEm0tB9hYdfntIzNkBaYwGm
V1nEXVaw0VhEmKGDUH0NUbrq6RDdMQdZFgcVnWZanDZuDXfSNdpNj9tFfX8zMVYjcusz1lgaWVumQkgu
ZmdKuRciAfLsItZHRZT16rC9t2DvM1L+xE782XrUFUOEHXvL0nNBLDrjz/r8REISSryA1CNNVDjeYRBN
7HuwjeTOALQ2PWm1nrKqLmEw16AvKibSHMfiUjmLjwQSpC7yApKMjVReGyOnshLFOTlbxVBU5WZKTzdz
o+0Og66PvHe6qL3YRESmhvkFfiiiDV6AJr8Bs8PNgVoXkXoV/pV70NbmcbW1DSl+TMCI+ycDwxNYai6w
ThPElshsL2DfoXqSy96gqfqO2txLYIbGM86j9H9w/U52fv7Bi/5xmtufExQRjm+o3guIyz1PfOFtok98
Jco0TGj+XfYXGuj7MDSl7Pw04Un+TscLNxUNHWwXgtkgaL0AdU7dlEl2FzxEediJPLcTIV9L09VWBj95
lAfGuf/SzZWuURJ02QQIu8jLSp3uBclhETo7IQfvsjTVyDJtOLHaFKrrHDS292C92EFCejbByh3UmcJp
siZSYkibDpEcpkwsZXOSGV9VPAq1ESE2B2HnbgIFJWHB27FoNzF4Ss7Pe1HYjqfMhEgOk0wizVkaldRt
qWFSzWEKX2IDVvA4eyV91g0MNQeTHrPt77vxr42TADH+y7mpW81evyUo/Vf9H0ACS5B1yxbit3bBVPIv
gLX/NgWpi8gAAAAASUVORK5CYII=
</value>
</data>
<metadata name="toolStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>326, 17</value>
</metadata>
<data name="newToolStripButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAQpJREFUOE+t021L
wlAUB3C/VH6H+hr5jSRfiPSiFiEDgwWGRhZm0EoQcQN7QoblWPNp6py6h3/cwWDkvde98MDhvrnndznn
cFOpfYVU7+J/lmoKipUWhGs5TO5bpJgVBfEB6aMMH7m6V5nAiVBB9UnhI+Jtmwlkz27C4iiprVyWm0zA
9XwQJIKowLn0TAWCIIDtbGCM7BA4ODymD/O09EgF1hsPY8uBplt8IF+sbQGeH2BmrzEwF3jXxnwgd1Hd
ApyVC3OyRO9nis6HyQdIf/Egg5vOV+gbM3R7I7yqenIgPrjP/gTtt180Wt/Jgfjg1K8h5M4Ady9aMiDa
N+tkrjHaMbmwK/f1gUPnD9/19ZYU1J08AAAAAElFTkSuQmCC
</value>
</data>
<data name="openToolStripButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAl9JREFUOE+9k1tI
E2AYhnfRRVcWaVEIRpaEXYiBIdVFSNJJUUqzwkgTylMHDMU2D206dXMnp650mNt0TZ1WlmFYIRSKRGip
o8S0LCgqxcxQydPT3EKTLPCmH96bn+99vvf7fn6B4H+cnGIzEq2Fy3ITeToraUojy+obnawjLF7lMJ0X
lpNlh6VIDUQlFyOoM2tYSo01sr92SUgrITxRRWh8gRPQ22VkYqTWoR/DFqYGDVhNKurN0iUhYQlqQuO0
BMcWIaitUDM+XLXIPPOphClbElXlcipLczEUZ6EvyOSaUkSRLHUxtNqoYPyLcb7zrN1MrwhssUvqD8CN
MhnfP+odsefMTXUKh+5b82mwyLhdmYvVkI1FL8Gku8J1bTqlahE6hdCZplKfy+i7QuZiv2kRU1+lZuaN
BAaki/XWftefBj3J8DKRzpoILsaEIDDosvnWJ4f3Su5Uq2h7oHQW/T7CiyhoD2e6NYiJhwG8rvDh3Kn9
TkCZVszXVxIGWjOotyiZ7RdDd5wT0BljNx5nui2EieZ9jDbuZqhuO5J4L04EujmXWaLOYKhLyE2zgo4n
9iQ9SXbAGeg4yezTw0w+PshY0x6G6/34XO1Ne85qIoM88dvq4gTo8kV0N2dyy5wPfZnw3B732VEmW4IZ
exTASIM/g1YfPhi3YFO6Io7djO8294WnLMxLpdYkx3Y3gXaNYF5tyhU0y1ZyL2sVNelrMaS6c/XSRiIP
bcLf12MBoJGmoBGfJU8YTdqFY47FnI4I5MiBnezd5cMOHy+8Pd3x2ODGujUurHf9FX1Zv+kfxT8BMS7u
X4BvNFkAAAAASUVORK5CYII=
</value>
</data>
<data name="saveToolStripButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAilJREFUOE+tk91L
k3EUx/cvdN9N0EW3NTWGa7EaPOUcyqphWBG9PZEv5dJlmqhYmUYtXyBb4dJJy+kknFT4BqZIjaFMJUsz
V7TEoabYRDD49ju/6Pm1Mm/qB+fy8znPOef7qFT/4z17GgWVr30Zbd4lPHYvoLEhgvuOGdTWfIL9dgg3
yqdQWjKBwoLXyMsdxYXzQSi9CeztAWqqV7HRW1ldgzGtF4fTnvBSBN7WRS6orPjyV57gyMIKdpufQ62W
YTnkEQL3o3kuKC35vK7gJ/w+vIg4kw8Fl6dxwNwkBM76WS64ZHv3h+BXeGQygm2SF9accaSmOIWg7m6Y
C7KzRmMEv8ODwTA2692Q5QBMJocQVFd95AL5TEARrAf3+D9gU2IDjhx9gaSkWiG4WTmN7i6wUwLHT76C
5dgA3zYtjGamz6bOP+A+HLR0QpLsQnC1bBIdPrAMAE2ub+zuX1F+fY4vlRZGM2dmBBU4ObUdBkOFEFwp
HIenGXjoXGPBicKYnhNT5hM2pJ8r4p2TUxi83wO9vkwIbHljDAaq7kR5ZxJQSOK0EobezmJsag5y7jXs
NbZxWLvHBZ2uSAgolo57UD6bBASfzb+FN6F5hGaWcLHYjni9i8GNiN/1ANrEfCHIzBhmcy/zmbcaPNiy
Q0JLRz98XYPo7vNj4OUQ9pksUOvqkcDg7Zo6aDTWWMHpU/08npQwCgndmU5F26aF0czUlYrgnQnZQvAv
f/R3bGg6a0rM640AAAAASUVORK5CYII=
</value>
</data>
<data name="printToolStripButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAi5JREFUOE+tk+1P
klEYxlkf+39aW1utttpM1NJqwzIjnM5J0TAmBSHLCFNJ7cVaUqNH5gLdQxY4RkxrbDqDzBJdOt0SKLAg
TEDDeLl6nkPgSNz64L1d29nZ7ut3nfucw+HsdBltUxi0f4RpdGZb0SNubMtlDd67ffi3Nn4n4fGvYNA6
gZJzV8GtvrLVhG1mlUqlEQxH4HB9IhqyO2Ewj8M140WVSE0MCibQW1z4/DWcB2fJq9E4ZheXQduchFyQ
rqXHwSrJ0L2BUB7d6piG0+1BZYMKx87LodG+wL0+62YKRecz0jzinCd0lpolB0IxzC+F0Guwo5Qvg7Kr
H0/oMZQyRuQYTW16qB8OgTK/wyOjA/qXb3GXsuH6HSPELVrwGztQXqNA8VkpTl+4iW6dBRKVFsXZId5+
+gqRWHzL1NmNRDKF9XiCzOB7eB1fvkUhb6dQJ+1iEsgyCVQPTDC/+YDndhco02vc7xuGumcAsnYdRM09
EFzuAK+hBccFchSdkeAis1cpvIGDJ0UZA2X3AHz+YMEEkbUNeAKr2A0O0S6KA764DSXVUuw5WpMxaO40
YHpuCczccsWuf0QTmPOtYWw2TJotfw1O1CpwoEK4aaDUUND00vAG4wjH0vD/TGNxOYWJhV8Ynoyi37FC
yFkd4YlJcy5BvaQVsls6jE76yN3+j/IM2GNIVI9RUadEmeAauMwzLapqwmFeIw6duoT95ULsK6vHXm5t
jpyj78RP/gPgHTGb+rLlcwAAAABJRU5ErkJggg==
</value>
</data>
<data name="printPreviewToolStripButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAdVJREFUOE+t099L
U2Ecx3H/GemqiygrwpsIzESJqJzzx4VOnMQkKFToZjcZQf5oDd0SXa0m/sJjnJU5K5eb1oIig8nUiwah
brLUInG6zb3znLB2PNu68QtfHjjweX2f5+E8OTmHUaJnnoMtTPoZdH3G4fwgd9Y5UjhT9Qy/5WRRbXZk
1D2XEeh0uJiY8WdHhl99yQiYn7yUw/ud9ij9Yx9VQDy2xdTMFJZHdm63mbhr6iS/RJf+Lp6KPgWwvb2F
OD7Oa880och3voUjOAQRnaGRKsMtNWITvArAPe3F5fbI3+IJ+BXdZWU9gdk2hLZarwa6BycVQJfNzvJq
5G84/CPOwnIMp3eesspKNdDVN6EAOizdLK2uyZPDG4m98A6+hSgPR3xcLi1VA9JNp5YgOhFdbkIbe5NX
YrxfjPLi0yYNzUbKyssxtTQqkVQgmUzyNRjkXoeZ3oHnPPMGsAo+GpqMaLRXGbhfhWi9rkRSgZ1YgvWf
UfyBAA8sFvTXDNTU1lGhuYT55jlCj8+z+64ae/uNf8g+IK2ZuuVOK/UlJ5g15rFkPcuaU0OT/uKfo0ih
vAu6/3ZB0RX0xcd503yausKjaItPZX9k6X5baRf5x45QeCZXDv8Gd10kHhF4wJIAAAAASUVORK5CYII=
</value>
</data>
<data name="helpToolStripButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAqRJREFUOE+Fk1tI
01EYwOdr0HOJvfdm9FpPBZFQDyFBCb71ZoZooZiXMeetnJs6L9O8m2s6clNRN7VdtDmnS5uXleQQ3Zzm
XRMvYfz6b6KVZn3wceBwfr/zfecSIjojqurcbG98F21u7ogODhBlZFwPOWvtqfkAHEiXa5Wa2inUbyaR
SgdIT7fxX8kR7HCsUqJyYbGu8M7ko9c0i6bJjSTDfrboJNzRuYjNtk2/ZQurZYPenlV0unkaGieEigb/
FJ2E29r9mE0bdHUt09q2SIsANmtnaaifRqVyI5ePkpk9eNjSSVin9wVBvd5Pk2aO+noPlZVTlJRMoFCM
kJMzzNMEE7FPDBzDLtd6sGdN0yxa7Rzq1zPU1kzT1OpD1rxOVNEekbItJJU+5CVjxDw2oGsdOBRomseR
K5zU1Hl4VfGZsmI3ysJxqrR+4jVQboEPc0J6obbvgAfZXlpMbqa9M4jEEisa7RgSaR+ygiFk+SO8zHNS
3eghTg3aIZhf2CQ118jth1XBUe/Y4WackzylA9GzRAMziz6M5lGSU3oQi63BO89qWEJlJhhH8PCoNygp
qrUjVS8QHWNElJqupkDZzcKmn9llob9CM9KsPu7lrqEfPRQEIlBFQHDtbhmljSM09O8TerkU0Yv8QWHn
XiENmGzjrO1/xWL/RITYh+43wda3vSCcmGlkekk4C/MuF8Jyfr1MSWYfKWk9FBRb8fjnUHXOI2/fOa7A
Luwur3TgEeBx4TATitxERFadftopaSaeC6IO8xduJXykw7nP7g8wvPcSfqOAyXko7Vjh/FUl2Urz3/9G
mthMUnI3dS2TXIkyIq6eQWPbpdGyQ7xiknPhCmKT3tI/4vv351JVOMlX2ol+1EropSwuhqVy5345MpWV
wTF/EP4JaStxoteu5NMAAAAASUVORK5CYII=
</value>
</data>
<metadata name="statusStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>51</value>
</metadata>
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAIAEBAQAAAABAAoAQAAJgAAACAgEAAAAAQA6AIAAE4BAAAoAAAAEAAAACAAAAABAAQAAAAAAIAA
AAAAAAAAAAAAABAAAAAQAAAAAAAAAAAAgAAAgAAAAICAAIAAAACAAIAAgIAAAICAgADAwMAAAAD/AAD/
AAAA//8A/wAAAP8A/wD//wAA////AACIiIgAAAAAAIiIiAAAAAAACZmQAAzMAAAJmZAAzMwAAAmZkADM
zAAACZmQAAzMAAAJmZAAAHAAAAmZkAAAcAAACZmQAAB3AAAJmZAAAAcAAAmZkAAABwAACZmQAAB3AAAA
mQAAB3AAAAAHAAB3AAAAAAd3d3AAAAAAAAAAAAAAwP8AAMD/AADh4wAA4cMAAOHDAADh4wAA4fcAAOH3
AADh8wAA4fsAAOH7AADh8wAA8+cAAPvPAAD4HwAA//8AACgAAAAgAAAAQAAAAAEABAAAAAAAAAIAAAAA
AAAAAAAAEAAAABAAAAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD/
/wD/AAAA/wD/AP//AAD///8AAAAAAAAAAAAAAAAAAAAAAAAACIiIiIiIAAAAAAAAAAAAAACIiIiIgAAA
AAAAAAAAAAAAiIiIiIAAAAAAAAAAAAAAAAiIiIgAAAAAAAAAAAAAAAAAmZmQAAAAAAAAAAAAAAAAAJmZ
kAAAAADMwAAAAAAAAACZmZAAAAAMzMwAAAAAAAAAmZmQAAAAzMzMwAAAAAAAAJmZkAAAAMzMzMAAAAAA
AACZmZAAAADMzMzAAAAAAAAAmZmQAAAAzMzMwAAAAAAAAJmZkAAAAAzMzAAAAAAAAACZmZAAAAAMzMwA
AAAAAAAAmZmQAAAADMzMAAAAAAAAAJmZkAAAAAAHAAAAAAAAAACZmZAAAAAAB3AAAAAAAAAAmZmQAAAA
AABwAAAAAAAAAJmZkAAAAAAAcAAAAAAAAACZmZAAAAAAB3AAAAAAAAAAmZmQAAAAAAcAAAAAAAAAAJmZ
kAAAAAAHAAAAAAAAAACZmZAAAAAABwAAAAAAAAAAmZmQAAAAAAcAAAAAAAAAAJmZkAAAAAAHAAAAAAAA
AACZmZAAAAAAdwAAAAAAAAAACZkAAAAAB3AAAAAAAAAAAABwAAAAAAcAAAAAAAAAAAAAcAAAAAB3AAAA
AAAAAAAAAHcAAAAHcAAAAAAAAAAAAAAHd3d3dwAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////+AD///wB
///8Af///gP///8H////B/x//wf4P/8H8B//B/Af/wfwH/8H8B//B/g//wf4P/8H+D//B/7//wf+f/8H
/3//B/9//wf+f/8H/v//B/7//wf+//8H/v//B/7//wf8//+P+f//3/v//9/z///P5///4A///////w==
</value>
</data>
</root>

55
source/Settings.cs Normal file
View File

@ -0,0 +1,55 @@
#region Copyright (c) 2007, PP4L Software
/************************************************************************************
Copyright 2007, PP4L Software
Author: Lampiasis <lampiasis@dvolker.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
'***********************************************************************************/
#endregion
namespace AsciiPumper.Properties
{
// This class allows you to handle specific events on the settings class:
// The SettingChanging event is raised before a setting's value is changed.
// The PropertyChanged event is raised after a setting's value is changed.
// The SettingsLoaded event is raised after the setting values are loaded.
// The SettingsSaving event is raised before the setting values are saved.
internal sealed partial class Settings {
public Settings() {
// // To add event handlers for saving and changing settings, uncomment the lines below:
//
// this.SettingChanging += this.SettingChangingEventHandler;
//
// this.SettingsSaving += this.SettingsSavingEventHandler;
//
}
private void SettingChangingEventHandler(object sender, System.Configuration.SettingChangingEventArgs e) {
// Add code to handle the SettingChangingEvent event here.
}
private void SettingsSavingEventHandler(object sender, System.ComponentModel.CancelEventArgs e) {
// Add code to handle the SettingsSaving event here.
}
}
}

13
source/UndoableAction.cs Normal file
View File

@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace AsciiPumper
{
public interface IUndoableAction
{
void Undo( PaintCanvas canvas);
void Redo( PaintCanvas canvas );
}
}