You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
847 lines
35 KiB
847 lines
35 KiB
/*
|
|
* Programmer: Hunter Johnson
|
|
* Name: Rich Text Editor
|
|
* Date: November 1, 2016
|
|
*/
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Drawing.Text;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Threading;
|
|
using System.Windows.Forms;
|
|
using System.IO;
|
|
|
|
namespace Tools_StringCipher
|
|
{
|
|
public partial class frmEditor : Form
|
|
{
|
|
List<string> colorList = new List<string>(); // holds the System.Drawing.Color names
|
|
string filenamee; // file opened inside of RTB
|
|
const int MIDDLE = 382; // middle sum of RGB - max is 765
|
|
int sumRGB; // sum of the selected colors RGB
|
|
int pos, line, column; // for detecting line and column numbers
|
|
|
|
public frmEditor()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
private void frmEditor_Load(object sender, EventArgs e)
|
|
{
|
|
richTextBox1.AllowDrop = true; // to allow drag and drop to the RichTextBox
|
|
richTextBox1.AcceptsTab = true; // allow tab
|
|
richTextBox1.WordWrap = false; // disable word wrap on start
|
|
richTextBox1.ShortcutsEnabled = true; // allow shortcuts
|
|
richTextBox1.DetectUrls = true; // allow detect url
|
|
fontDialog1.ShowColor = true;
|
|
fontDialog1.ShowApply = true;
|
|
fontDialog1.ShowHelp = true;
|
|
colorDialog1.AllowFullOpen = true;
|
|
colorDialog1.AnyColor = true;
|
|
colorDialog1.SolidColorOnly = false;
|
|
colorDialog1.ShowHelp = true;
|
|
colorDialog1.AnyColor = true;
|
|
leftAlignStripButton.Checked = true;
|
|
centerAlignStripButton.Checked = false;
|
|
rightAlignStripButton.Checked = false;
|
|
boldStripButton3.Checked = false;
|
|
italicStripButton.Checked = false;
|
|
rightAlignStripButton.Checked = false;
|
|
bulletListStripButton.Checked = false;
|
|
wordWrapToolStripMenuItem.Image = null;
|
|
MinimizeBox = false;
|
|
MaximizeBox = false;
|
|
this.FormBorderStyle = FormBorderStyle.FixedSingle;
|
|
|
|
// fill zoomDropDownButton item list
|
|
zoomDropDownButton.DropDown.Items.Add("20%");
|
|
zoomDropDownButton.DropDown.Items.Add("50%");
|
|
zoomDropDownButton.DropDown.Items.Add("70%");
|
|
zoomDropDownButton.DropDown.Items.Add("100%");
|
|
zoomDropDownButton.DropDown.Items.Add("150%");
|
|
zoomDropDownButton.DropDown.Items.Add("200%");
|
|
zoomDropDownButton.DropDown.Items.Add("300%");
|
|
zoomDropDownButton.DropDown.Items.Add("400%");
|
|
zoomDropDownButton.DropDown.Items.Add("500%");
|
|
|
|
// fill font sizes in combo box
|
|
for (int i = 8; i < 80; i += 2)
|
|
{
|
|
fontSizeComboBox.Items.Add(i);
|
|
}
|
|
|
|
// fill colors in color drop down list
|
|
foreach (System.Reflection.PropertyInfo prop in typeof(Color).GetProperties())
|
|
{
|
|
if (prop.PropertyType.FullName == "System.Drawing.Color")
|
|
{
|
|
colorList.Add(prop.Name);
|
|
}
|
|
}
|
|
|
|
// fill the drop down items list
|
|
foreach(string color in colorList)
|
|
{
|
|
colorStripDropDownButton.DropDownItems.Add(color);
|
|
}
|
|
|
|
// fill BackColor for each color in the DropDownItems list
|
|
for (int i = 0; i < colorStripDropDownButton.DropDownItems.Count; i++)
|
|
{
|
|
// Create KnownColor object
|
|
KnownColor selectedColor;
|
|
selectedColor = (KnownColor)System.Enum.Parse(typeof(KnownColor), colorList[i]); // parse to a KnownColor
|
|
colorStripDropDownButton.DropDownItems[i].BackColor = Color.FromKnownColor(selectedColor); // set the BackColor to its appropriate list item
|
|
|
|
// Set the text color depending on if the barkground is darker or lighter
|
|
// create Color object
|
|
Color col = Color.FromName(colorList[i]);
|
|
|
|
// 255,255,255 = White and 0,0,0 = Black
|
|
// Max sum of RGB values is 765 -> (255 + 255 + 255)
|
|
// Middle sum of RGB values is 382 -> (765/2)
|
|
// Color is considered darker if its <= 382
|
|
// Color is considered lighter if its > 382
|
|
sumRGB = ConvertToRGB(col); // get the color objects sum of the RGB value
|
|
if (sumRGB <= MIDDLE) // Darker Background
|
|
{
|
|
colorStripDropDownButton.DropDownItems[i].ForeColor = Color.White; // set to White text
|
|
}
|
|
else if (sumRGB > MIDDLE) // Lighter Background
|
|
{
|
|
colorStripDropDownButton.DropDownItems[i].ForeColor = Color.Black; // set to Black text
|
|
}
|
|
}
|
|
|
|
// fill fonts in font combo box
|
|
InstalledFontCollection fonts = new InstalledFontCollection();
|
|
foreach (FontFamily family in fonts.Families)
|
|
{
|
|
fontStripComboBox.Items.Add(family.Name);
|
|
}
|
|
|
|
// determines the line and column numbers of mouse position on the richTextBox
|
|
int pos = richTextBox1.SelectionStart;
|
|
int line = richTextBox1.GetLineFromCharIndex(pos);
|
|
int column = richTextBox1.SelectionStart - richTextBox1.GetFirstCharIndexFromLine(line);
|
|
lineColumnStatusLabel.Text = "Line " + (line + 1) + ", Column " + (column + 1);
|
|
}
|
|
|
|
//******************************************************************************************************************************
|
|
// ConvertToRGB - Accepts a Color object as its parameter. Gets the RGB values of the object passed to it, calculates the sum. *
|
|
//******************************************************************************************************************************
|
|
private int ConvertToRGB(System.Drawing.Color c)
|
|
{
|
|
int r = c.R, // RED component value
|
|
g = c.G, // GREEN component value
|
|
b = c.B; // BLUE component value
|
|
int sum = 0;
|
|
|
|
// calculate sum of RGB
|
|
sum = r + g + b;
|
|
|
|
return sum;
|
|
}
|
|
private void selectAllToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
richTextBox1.SelectAll(); // select all text
|
|
}
|
|
|
|
private void clearToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
// clear
|
|
richTextBox1.Clear();
|
|
}
|
|
|
|
private void pasteToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
richTextBox1.Paste(); // paste text
|
|
}
|
|
|
|
private void copyToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
richTextBox1.Copy(); // copy text
|
|
}
|
|
|
|
private void cutToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
richTextBox1.Cut(); // cut text
|
|
}
|
|
|
|
private void boldStripButton3_Click(object sender, EventArgs e)
|
|
{
|
|
|
|
if (boldStripButton3.Checked == false)
|
|
{
|
|
boldStripButton3.Checked = true; // BOLD is true
|
|
}
|
|
else if (boldStripButton3.Checked == true)
|
|
{
|
|
boldStripButton3.Checked = false; // BOLD is false
|
|
}
|
|
|
|
if (richTextBox1.SelectionFont == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
// create fontStyle object
|
|
FontStyle style = richTextBox1.SelectionFont.Style;
|
|
|
|
// determines the font style
|
|
if (richTextBox1.SelectionFont.Bold)
|
|
{
|
|
style &= ~FontStyle.Bold;
|
|
}
|
|
else
|
|
{
|
|
style |= FontStyle.Bold;
|
|
|
|
}
|
|
richTextBox1.SelectionFont = new Font(richTextBox1.SelectionFont, style); // sets the font style
|
|
}
|
|
|
|
private void underlineStripButton_Click(object sender, EventArgs e)
|
|
{
|
|
if (underlineStripButton.Checked == false)
|
|
{
|
|
underlineStripButton.Checked = true; // UNDERLINE is active
|
|
}
|
|
else if (underlineStripButton.Checked == true)
|
|
{
|
|
underlineStripButton.Checked = false; // UNDERLINE is not active
|
|
}
|
|
|
|
if (richTextBox1.SelectionFont == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
// create fontStyle object
|
|
FontStyle style = richTextBox1.SelectionFont.Style;
|
|
|
|
// determines the font style
|
|
if (richTextBox1.SelectionFont.Underline)
|
|
{
|
|
style &= ~FontStyle.Underline;
|
|
}
|
|
else
|
|
{
|
|
style |= FontStyle.Underline;
|
|
}
|
|
richTextBox1.SelectionFont = new Font(richTextBox1.SelectionFont, style); // sets the font style
|
|
}
|
|
|
|
private void italicStripButton_Click(object sender, EventArgs e)
|
|
{
|
|
if (italicStripButton.Checked == false)
|
|
{
|
|
italicStripButton.Checked = true; // ITALICS is active
|
|
}
|
|
else if (italicStripButton.Checked == true)
|
|
{
|
|
italicStripButton.Checked = false; // ITALICS is not active
|
|
}
|
|
|
|
if (richTextBox1.SelectionFont == null)
|
|
{
|
|
return;
|
|
}
|
|
// create fontStyle object
|
|
FontStyle style = richTextBox1.SelectionFont.Style;
|
|
|
|
// determines font style
|
|
if (richTextBox1.SelectionFont.Italic)
|
|
{
|
|
style &= ~FontStyle.Italic;
|
|
}
|
|
else
|
|
{
|
|
style |= FontStyle.Italic;
|
|
}
|
|
richTextBox1.SelectionFont = new Font(richTextBox1.SelectionFont, style); // sets the font style
|
|
}
|
|
|
|
private void fontSizeComboBox_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
if (richTextBox1.SelectionFont == null)
|
|
{
|
|
return;
|
|
}
|
|
// sets the font size when changed
|
|
richTextBox1.SelectionFont = new Font(richTextBox1.SelectionFont.FontFamily,Convert.ToInt32(fontSizeComboBox.Text),richTextBox1.SelectionFont.Style);
|
|
}
|
|
|
|
private void fontStripComboBox_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
if (richTextBox1.SelectionFont == null)
|
|
{
|
|
// sets the Font Family style
|
|
richTextBox1.SelectionFont = new Font(fontStripComboBox.Text, richTextBox1.Font.Size);
|
|
}
|
|
// sets the selected font famly style
|
|
richTextBox1.SelectionFont = new Font(fontStripComboBox.Text, richTextBox1.SelectionFont.Size);
|
|
}
|
|
|
|
private void saveStripButton_Click(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
saveFileDialog1.ShowDialog(); // show the dialog
|
|
string file;
|
|
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
|
|
{
|
|
string filename = saveFileDialog1.FileName;
|
|
// save the contents of the rich text box
|
|
richTextBox1.SaveFile(filename, RichTextBoxStreamType.PlainText);
|
|
file = Path.GetFileName(filename); // get name of file
|
|
MessageBox.Show("File " + file + " was saved successfully.", "Save Successful", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
}
|
|
|
|
}
|
|
catch(Exception ex)
|
|
{
|
|
MessageBox.Show(ex.Message, "Error Information", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
|
}
|
|
}
|
|
|
|
private void openFileStripButton_Click(object sender, EventArgs e)
|
|
{
|
|
openFileDialog1.ShowDialog(); // show the dialog
|
|
if (openFileDialog1.ShowDialog() == DialogResult.OK)
|
|
{
|
|
filenamee = openFileDialog1.FileName;
|
|
// load the file into the richTextBox
|
|
richTextBox1.LoadFile(filenamee, RichTextBoxStreamType.PlainText); // loads it in regular text format
|
|
// richTextBox1.LoadFile(filename, RichTextBoxStreamType.RichText); // loads it in RTB format
|
|
}
|
|
}
|
|
|
|
private void colorStripDropDownButton_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e)
|
|
{
|
|
// creates a KnownColor object
|
|
KnownColor selectedColor;
|
|
selectedColor = (KnownColor)System.Enum.Parse(typeof(KnownColor), e.ClickedItem.Text); // converts it to a Color Structure
|
|
richTextBox1.SelectionColor = Color.FromKnownColor(selectedColor); // sets the selected color
|
|
}
|
|
|
|
private void richTextBox1_SelectionChanged(object sender, EventArgs e)
|
|
{
|
|
// highlight button border when buttons are true
|
|
if (richTextBox1.SelectionFont != null)
|
|
{
|
|
boldStripButton3.Checked = richTextBox1.SelectionFont.Bold;
|
|
italicStripButton.Checked = richTextBox1.SelectionFont.Italic;
|
|
underlineStripButton.Checked = richTextBox1.SelectionFont.Underline;
|
|
}
|
|
}
|
|
|
|
private void leftAlignStripButton_Click(object sender, EventArgs e)
|
|
{
|
|
// set properties
|
|
centerAlignStripButton.Checked = false;
|
|
rightAlignStripButton.Checked = false;
|
|
if(leftAlignStripButton.Checked == false)
|
|
{
|
|
leftAlignStripButton.Checked = true; // LEFT ALIGN is active
|
|
}
|
|
else if(leftAlignStripButton.Checked == true)
|
|
{
|
|
leftAlignStripButton.Checked = false; // LEFT ALIGN is not active
|
|
}
|
|
richTextBox1.SelectionAlignment = HorizontalAlignment.Left; // selects left alignment
|
|
}
|
|
|
|
private void centerAlignStripButton_Click(object sender, EventArgs e)
|
|
{
|
|
// set properties
|
|
leftAlignStripButton.Checked = false;
|
|
rightAlignStripButton.Checked = false;
|
|
if (centerAlignStripButton.Checked == false)
|
|
{
|
|
centerAlignStripButton.Checked = true; // CENTER ALIGN is active
|
|
}
|
|
else if (centerAlignStripButton.Checked == true)
|
|
{
|
|
centerAlignStripButton.Checked = false; // CENTER ALIGN is not active
|
|
}
|
|
richTextBox1.SelectionAlignment = HorizontalAlignment.Center; // selects center alignment
|
|
}
|
|
|
|
private void rightAlignStripButton_Click(object sender, EventArgs e)
|
|
{
|
|
// set properties
|
|
leftAlignStripButton.Checked = false;
|
|
centerAlignStripButton.Checked = false;
|
|
|
|
if (rightAlignStripButton.Checked == false)
|
|
{
|
|
rightAlignStripButton.Checked = true; // RIGHT ALIGN is active
|
|
}
|
|
else if (rightAlignStripButton.Checked == true)
|
|
{
|
|
rightAlignStripButton.Checked = false; // RIGHT ALIGN is not active
|
|
}
|
|
richTextBox1.SelectionAlignment = HorizontalAlignment.Right; // selects right alignment
|
|
}
|
|
|
|
private void bulletListStripButton_Click(object sender, EventArgs e)
|
|
{
|
|
if (bulletListStripButton.Checked == false)
|
|
{
|
|
bulletListStripButton.Checked = true;
|
|
richTextBox1.SelectionBullet = true; // BULLET LIST is active
|
|
}
|
|
else if (bulletListStripButton.Checked == true)
|
|
{
|
|
bulletListStripButton.Checked = false;
|
|
richTextBox1.SelectionBullet = false; // BULLET LIST is not active
|
|
}
|
|
}
|
|
|
|
private void increaseStripButton_Click(object sender, EventArgs e)
|
|
{
|
|
string fontSizeNum = fontSizeComboBox.Text; // variable to hold selected size
|
|
try
|
|
{
|
|
int size = Convert.ToInt32(fontSizeNum) + 1; // convert (fontSizeNum + 1)
|
|
if (richTextBox1.SelectionFont == null)
|
|
{
|
|
return;
|
|
}
|
|
// sets the updated font size
|
|
richTextBox1.SelectionFont = new Font(richTextBox1.SelectionFont.FontFamily,size,richTextBox1.SelectionFont.Style);
|
|
fontSizeComboBox.Text = size.ToString(); // update font size
|
|
}
|
|
catch(Exception ex)
|
|
{
|
|
MessageBox.Show(ex.Message, "Error Information", MessageBoxButtons.OK, MessageBoxIcon.Warning); // show error message
|
|
}
|
|
}
|
|
|
|
private void decreaseStripButton_Click(object sender, EventArgs e)
|
|
{
|
|
string fontSizeNum = fontSizeComboBox.Text; // variable to hold selected size
|
|
try
|
|
{
|
|
int size = Convert.ToInt32(fontSizeNum) - 1; // convert (fontSizeNum - 1)
|
|
if (richTextBox1.SelectionFont == null)
|
|
{
|
|
return;
|
|
}
|
|
// sets the updated font size
|
|
richTextBox1.SelectionFont = new Font(richTextBox1.SelectionFont.FontFamily,size,richTextBox1.SelectionFont.Style);
|
|
fontSizeComboBox.Text = size.ToString(); // update font size
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MessageBox.Show(ex.Message, "Error Information", MessageBoxButtons.OK, MessageBoxIcon.Warning); // show error message
|
|
}
|
|
}
|
|
|
|
//*********************************************************************************************
|
|
// richTextBox1_DragEnter - Custom Event. Copies text being dragged into the richTextBox *
|
|
//*********************************************************************************************
|
|
private void richTextBox1_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
|
|
{
|
|
if (e.Data.GetDataPresent(DataFormats.Text))
|
|
e.Effect = DragDropEffects.Copy; // copies data to the RTB
|
|
else
|
|
e.Effect = DragDropEffects.None; // doesn't accept data into RTB
|
|
}
|
|
//***************************************************************************************************
|
|
// richTextBox1_DragEnter - Custom Event. Drops the copied text being dragged onto the richTextBox *
|
|
//***************************************************************************************************
|
|
private void richTextBox1_DragDrop(object sender,System.Windows.Forms.DragEventArgs e)
|
|
{
|
|
// variables
|
|
int i;
|
|
String s;
|
|
|
|
// Get start position to drop the text.
|
|
i = richTextBox1.SelectionStart;
|
|
s = richTextBox1.Text.Substring(i);
|
|
richTextBox1.Text = richTextBox1.Text.Substring(0, i);
|
|
|
|
// Drop the text on to the RichTextBox.
|
|
richTextBox1.Text += e.Data.GetData(DataFormats.Text).ToString();
|
|
richTextBox1.Text += s;
|
|
}
|
|
|
|
private void undoStripButton_Click(object sender, EventArgs e)
|
|
{
|
|
richTextBox1.Undo(); // undo move
|
|
}
|
|
|
|
private void redoStripButton_Click(object sender, EventArgs e)
|
|
{
|
|
richTextBox1.Redo(); // redo move
|
|
}
|
|
|
|
private void exitToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
this.Close(); // close the form
|
|
}
|
|
|
|
private void undoToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
richTextBox1.Undo(); // undo move
|
|
}
|
|
|
|
private void redoToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
richTextBox1.Redo(); // redo move
|
|
}
|
|
|
|
private void cutToolStripMenuItem1_Click(object sender, EventArgs e)
|
|
{
|
|
richTextBox1.Cut(); // cut text
|
|
}
|
|
|
|
private void copyToolStripMenuItem1_Click(object sender, EventArgs e)
|
|
{
|
|
|
|
richTextBox1.Copy(); // copy text
|
|
}
|
|
|
|
private void pasteToolStripMenuItem1_Click(object sender, EventArgs e)
|
|
{
|
|
richTextBox1.Paste(); // paste text
|
|
}
|
|
|
|
private void selectAllToolStripMenuItem1_Click(object sender, EventArgs e)
|
|
{
|
|
richTextBox1.SelectAll(); // select all text
|
|
}
|
|
|
|
private void clearAllToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
// clear the rich text box
|
|
richTextBox1.Clear();
|
|
richTextBox1.Focus();
|
|
}
|
|
|
|
private void deleteToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
// delete selected text
|
|
richTextBox1.SelectedText = "";
|
|
richTextBox1.Focus();
|
|
}
|
|
|
|
private void OpenMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
//openFileDialog1.ShowDialog();
|
|
if (openFileDialog1.ShowDialog() == DialogResult.OK)
|
|
{
|
|
string fileinhalt = System.IO.File.ReadAllText(openFileDialog1.FileName);
|
|
string decrypted = StringCipher.Decrypt(fileinhalt,textBox1.Text);
|
|
richTextBox1.Text=decrypted;
|
|
|
|
// richTextBox1.LoadFile(openFileDialog1.FileName, RichTextBoxStreamType.PlainText);
|
|
// richTextBox1.LoadFile(openFileDialog1.FileName, RichTextBoxStreamType.RichText); // loads the file in RTB format
|
|
}
|
|
}
|
|
|
|
private void newMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
|
|
if (richTextBox1.Text != string.Empty) // RTB has contents - prompt user to save changes
|
|
{
|
|
// save changes message
|
|
DialogResult result = MessageBox.Show("Would you like to save your changes? Editor is not empty.", "Save Changes?", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
|
|
|
|
if(result == DialogResult.Yes)
|
|
{
|
|
// save the RTB contents if user selected yes
|
|
saveFileDialog1.ShowDialog(); // show the dialog
|
|
string file;
|
|
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
|
|
{
|
|
string filename = saveFileDialog1.FileName;
|
|
// save the contents of the rich text box
|
|
string fileinhalt = System.IO.File.ReadAllText(filename);
|
|
string decrypted = StringCipher.Decrypt(fileinhalt,this.textBox1.Text);
|
|
|
|
//richTextBox1.SaveFile(filename, RichTextBoxStreamType.PlainText);
|
|
richTextBox1.Text = decrypted;
|
|
file = Path.GetFileName(filename); // get name of file
|
|
MessageBox.Show("File " + file + " was saved successfully.", "Save Successful", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
}
|
|
|
|
// finally - clear the contents of the RTB
|
|
richTextBox1.ResetText();
|
|
richTextBox1.Focus();
|
|
}
|
|
else if(result == DialogResult.No)
|
|
{
|
|
// clear the contents of the RTB
|
|
richTextBox1.ResetText();
|
|
richTextBox1.Focus();
|
|
}
|
|
}
|
|
else // RTB has no contents
|
|
{
|
|
// clear the contents of the RTB
|
|
richTextBox1.ResetText();
|
|
richTextBox1.Focus();
|
|
}
|
|
}
|
|
|
|
private void saveToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
//saveFileDialog1.ShowDialog(); // show the dialog
|
|
string file;
|
|
|
|
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
|
|
{
|
|
string filename = saveFileDialog1.FileName;
|
|
|
|
string encrypted = StringCipher.Encrypt(richTextBox1.Text, this.textBox1.Text);
|
|
System.IO.File.WriteAllText(filename, encrypted);
|
|
// save the contents of the rich text box
|
|
//richTextBox1.SaveFile(filename, RichTextBoxStreamType.PlainText);
|
|
}
|
|
file = Path.GetFileName(filenamee); // get name of file
|
|
MessageBox.Show("File " + file + " was saved successfully.", "Save Successful", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
}
|
|
|
|
private void zoomDropDownButton_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e)
|
|
{
|
|
float zoomPercent = Convert.ToSingle(e.ClickedItem.Text.Trim('%')); // convert
|
|
richTextBox1.ZoomFactor = zoomPercent / 100; // set zoom factor
|
|
|
|
if(e.ClickedItem.Image == null)
|
|
{
|
|
// sets all the image properties to null - incase one is already selected beforehand
|
|
for (int i = 0; i < zoomDropDownButton.DropDownItems.Count; i++)
|
|
{
|
|
zoomDropDownButton.DropDownItems[i].Image = null;
|
|
}
|
|
|
|
// draw bmp in image property of selected item, while its active
|
|
Bitmap bmp = new Bitmap(5, 5);
|
|
using (Graphics gfx = Graphics.FromImage(bmp))
|
|
{
|
|
gfx.FillEllipse(Brushes.Black, 1, 1, 3, 3);
|
|
}
|
|
e.ClickedItem.Image = bmp; // draw ellipse in image property
|
|
}
|
|
else
|
|
{
|
|
e.ClickedItem.Image = null;
|
|
richTextBox1.ZoomFactor = 1.0f; // set back to NO ZOOM
|
|
}
|
|
}
|
|
|
|
private void uppercaseToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
richTextBox1.SelectedText = richTextBox1.SelectedText.ToUpper(); // text to CAPS
|
|
}
|
|
|
|
private void lowercaseToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
richTextBox1.SelectedText = richTextBox1.SelectedText.ToLower(); // text to lowercase
|
|
}
|
|
|
|
private void wordWrapToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
// draw bmp in image property of selected item, while its active
|
|
Bitmap bmp = new Bitmap(5, 5);
|
|
using (Graphics gfx = Graphics.FromImage(bmp))
|
|
{
|
|
gfx.FillEllipse(Brushes.Black, 1, 1, 3, 3);
|
|
}
|
|
|
|
if (richTextBox1.WordWrap == false)
|
|
{
|
|
richTextBox1.WordWrap = true; // WordWrap is active
|
|
wordWrapToolStripMenuItem.Image = bmp; // draw ellipse in image property
|
|
}
|
|
else if(richTextBox1.WordWrap == true)
|
|
{
|
|
richTextBox1.WordWrap = false; // WordWrap is not active
|
|
wordWrapToolStripMenuItem.Image = null; // clear image property
|
|
}
|
|
}
|
|
|
|
private void fontToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
fontDialog1.ShowDialog(); // show the Font Dialog
|
|
System.Drawing.Font oldFont = this.Font; // gets current font
|
|
|
|
if (fontDialog1.ShowDialog() == DialogResult.OK)
|
|
{
|
|
fontDialog1_Apply(richTextBox1, new System.EventArgs());
|
|
}
|
|
// set back to the recent font
|
|
else if (fontDialog1.ShowDialog() == DialogResult.Cancel)
|
|
{
|
|
// set current font back to the old font
|
|
this.Font = oldFont;
|
|
|
|
// sets the old font for the controls inside richTextBox1
|
|
foreach (Control containedControl in richTextBox1.Controls)
|
|
{
|
|
containedControl.Font = oldFont;
|
|
}
|
|
}
|
|
}
|
|
catch(Exception ex)
|
|
{
|
|
MessageBox.Show(ex.Message, "Error Information", MessageBoxButtons.OK, MessageBoxIcon.Warning); // error
|
|
}
|
|
}
|
|
|
|
private void fontDialog1_HelpRequest(object sender, EventArgs e)
|
|
{
|
|
// display HelpRequest message
|
|
MessageBox.Show("Please choose a font and any other attributes; then hit Apply and OK.", "Font Dialog Help Request", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
}
|
|
|
|
private void fontDialog1_Apply(object sender, EventArgs e)
|
|
{
|
|
fontDialog1.FontMustExist = true; // error if font doesn't exist
|
|
|
|
richTextBox1.Font = fontDialog1.Font; // set selected font (Includes: FontFamily, Size, and, Effect. No need to set them separately)
|
|
richTextBox1.ForeColor = fontDialog1.Color; // set selected font color
|
|
|
|
// sets the font for the controls inside richTextBox1
|
|
foreach (Control containedControl in richTextBox1.Controls)
|
|
{
|
|
containedControl.Font = fontDialog1.Font;
|
|
}
|
|
}
|
|
|
|
private void deleteStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
richTextBox1.SelectedText = ""; // delete selected text
|
|
}
|
|
|
|
private void clearFormattingStripButton_Click(object sender, EventArgs e)
|
|
{
|
|
fontStripComboBox.Text = "Font Family";
|
|
fontSizeComboBox.Text = "Font Size";
|
|
string pureText = richTextBox1.Text; // get the current Plain Text
|
|
richTextBox1.Clear(); // clear RTB
|
|
richTextBox1.ForeColor = Color.Black; // ensure the text color is back to Black
|
|
richTextBox1.Font = default(Font); // set default font
|
|
richTextBox1.Text = pureText; // Set it back to its orginial text, added as plain text
|
|
rightAlignStripButton.Checked = false;
|
|
centerAlignStripButton.Checked = false;
|
|
leftAlignStripButton.Checked = true;
|
|
}
|
|
|
|
private void printDocument_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
|
|
{
|
|
// draws the string onto the print document
|
|
e.Graphics.DrawString(richTextBox1.Text, richTextBox1.Font, Brushes.Black, 100, 20);
|
|
e.Graphics.PageUnit = GraphicsUnit.Inch;
|
|
}
|
|
|
|
private void printStripButton_Click(object sender, EventArgs e)
|
|
{
|
|
// printDialog associates with PrintDocument
|
|
printDialog.Document = printDocument;
|
|
if (printDialog.ShowDialog() == DialogResult.OK)
|
|
{
|
|
printDocument.Print(); // Print the document
|
|
}
|
|
}
|
|
|
|
private void printPreviewStripButton_Click(object sender, EventArgs e)
|
|
{
|
|
printPreviewDialog.Document = printDocument;
|
|
// Show PrintPreview Dialog
|
|
printPreviewDialog.ShowDialog();
|
|
}
|
|
|
|
private void printStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
// printDialog associates with PrintDocument
|
|
printDialog.Document = printDocument;
|
|
if (printDialog.ShowDialog() == DialogResult.OK)
|
|
{
|
|
printDocument.Print();
|
|
}
|
|
}
|
|
|
|
private void printPreviewStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
printPreviewDialog.Document = printDocument;
|
|
// Show PrintPreview Dialog
|
|
printPreviewDialog.ShowDialog();
|
|
}
|
|
|
|
private void colorDialog1_HelpRequest(object sender, EventArgs e)
|
|
{
|
|
// display HelpRequest message
|
|
MessageBox.Show("Please select a color by clicking it. This will change the text color.", "Color Dialog Help Request", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
}
|
|
|
|
private void colorOptionsToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
colorDialog1.ShowDialog();
|
|
|
|
if(colorDialog1.ShowDialog() == DialogResult.OK)
|
|
{
|
|
// set the selected color to the RTB's forecolor
|
|
richTextBox1.ForeColor = colorDialog1.Color;
|
|
}
|
|
}
|
|
|
|
//****************************************************************************************************************************************
|
|
// richTextBox1_KeyUp - Determines which key was released and gets the line and column numbers of the current cursor position in the RTB *
|
|
//****************************************************************************************************************************************
|
|
private void richTextBox1_KeyUp(object sender, KeyEventArgs e)
|
|
{
|
|
// determine key released
|
|
switch (e.KeyCode)
|
|
{
|
|
case Keys.Down:
|
|
pos = richTextBox1.SelectionStart; // get starting point
|
|
line = richTextBox1.GetLineFromCharIndex(pos); // get line number
|
|
column = richTextBox1.SelectionStart - richTextBox1.GetFirstCharIndexFromLine(line); // get column number
|
|
lineColumnStatusLabel.Text = "Line " + (line + 1) + ", Column " + (column + 1);
|
|
break;
|
|
case Keys.Right:
|
|
pos = richTextBox1.SelectionStart; // get starting point
|
|
line = richTextBox1.GetLineFromCharIndex(pos); // get line number
|
|
column = richTextBox1.SelectionStart - richTextBox1.GetFirstCharIndexFromLine(line); // get column number
|
|
lineColumnStatusLabel.Text = "Line " + (line + 1) + ", Column " + (column + 1);
|
|
break;
|
|
case Keys.Up:
|
|
pos = richTextBox1.SelectionStart; // get starting point
|
|
line = richTextBox1.GetLineFromCharIndex(pos); // get line number
|
|
column = richTextBox1.SelectionStart - richTextBox1.GetFirstCharIndexFromLine(line); // get column number
|
|
lineColumnStatusLabel.Text = "Line " + (line + 1) + ", Column " + (column + 1);
|
|
break;
|
|
case Keys.Left:
|
|
pos = richTextBox1.SelectionStart; // get starting point
|
|
line = richTextBox1.GetLineFromCharIndex(pos); // get line number
|
|
column = richTextBox1.SelectionStart - richTextBox1.GetFirstCharIndexFromLine(line); // get column number
|
|
lineColumnStatusLabel.Text = "Line " + (line + 1) + ", Column " + (column + 1);
|
|
break;
|
|
}
|
|
}
|
|
|
|
//****************************************************************************************************************************
|
|
// richTextBox1_MouseDown - Gets the line and column numbers of the cursor position in the RTB when the mouse clicks an area *
|
|
//****************************************************************************************************************************
|
|
private void richTextBox1_MouseDown(object sender, MouseEventArgs e)
|
|
{
|
|
int pos = richTextBox1.SelectionStart; // get starting point
|
|
int line = richTextBox1.GetLineFromCharIndex(pos); // get line number
|
|
int column = richTextBox1.SelectionStart - richTextBox1.GetFirstCharIndexFromLine(line); // get column number
|
|
lineColumnStatusLabel.Text = "Line " + (line + 1) + ", Column " + (column + 1);
|
|
}
|
|
|
|
}
|
|
}
|