Crypto-Notepad/Crypto Notepad/Forms/SettingsForm.cs
2021-04-07 14:19:36 +03:00

657 lines
No EOL
26 KiB
C#

using System;
using System.Drawing;
using System.Linq;
using System.Reflection;
using System.Windows.Forms;
namespace Crypto_Notepad
{
public partial class SettingsForm : Form
{
Properties.Settings settings = Properties.Settings.Default;
public SettingsForm()
{
InitializeComponent();
}
#region Methods
private void LoadSettings()
{
editorFontColor.BackColor = settings.editorForeColor;
editorBackColor.BackColor = settings.editorBackColor;
editorInsertKeyComboBox.Text = settings.insertKey;
if (settings.clipboardClearTime != "")
{
clearClipboardTextBox.Text = settings.clipboardClearTime.Remove(settings.clipboardClearTime.Length - 1);
}
editorPaddingLeftTextBox.Text = settings.editorPaddingLeft;
editorOpenLinksWithComboBox.Text = settings.openLinks;
editorBorderComboBox.Text = settings.editorBorder;
fontDialog.Font = settings.editorFont;
editorFontLabel.Text = settings.editorFont.Name.ToString() + " " + settings.editorFont.Size.ToString();
lockTimeoutTextBox.Text = settings.lockTimeout;
autoLockOnMinimizeCheckBox.Checked = settings.autoLock;
autoCheckUpdatesCheckBox.Checked = settings.autoCheckUpdate;
mainMenuCheckBox.Checked = settings.mainMenuVisible;
menuIconsCheckBox.Checked = settings.menuIcons;
shortcutKeysCheckBox.Checked = settings.shortcutKeys;
minimizeToTrayCheckBox.Checked = settings.minimizeToTray;
closeToTrayCheckBox.Checked = settings.closeToTray;
singleInstanceCheckBox.Checked = settings.singleInstance;
clearClipboardCheckBox.Checked = settings.clearClipboardAtClose;
trayMenuCheckBox.Checked = settings.trayMenu;
integrateCheckBox.Checked = settings.explorerIntegrate;
associateCheckBox.Checked = settings.explorerAssociate;
sendToCheckBox.Checked = settings.explorerSendTo;
hashAlgorithmComboBox.Text = settings.HashAlgorithm;
keySizeComboBox.Text = settings.KeySize;
passwordIterationsTextBox.Text = settings.PasswordIterations;
openTxtUnencryptedCheckBox.Checked = settings.openTxtUnencrypted;
searchBackColor.BackColor = settings.searchPanelBackColor;
searchFontColor.BackColor = settings.searchPanelForeColor;
searchBorderComboBox.Text = settings.searchPanelBorder;
toolbarBackColor.BackColor = settings.toolbarBackColor;
toolbarBorderCheckBox.Checked = settings.toolbarBorder;
toolbarVisibleCheckBox.Checked = settings.toolbarVisible;
toolbarOldIconsCheckBox.Checked = settings.oldToolbarIcons;
toolbarCloseButtonCheckBox.Checked = settings.toolbarCloseButton;
statusPanelBackColor.BackColor = settings.statusPanelBackColor;
statusPanelFontColor.BackColor = settings.statusPanelFontColor;
statusPanelVisibleCheckBox.Checked = settings.statusPanelVisible;
statusPanelLengthCheckBox.Checked = settings.statusPanelLength;
statusPanelLinesCheckBox.Checked = settings.statusPanelLines;
statusPanelModifiedCheckBox.Checked = settings.statusPanelModified;
statusPanelSizeCheckBox.Checked = settings.statusPanelSize;
statusPanelReadonlyCheckBox.Checked = settings.statusPanelReadonly;
statusPanelWordwrapCheckBox.Checked = settings.statusPanelWordWrap;
statusPanelPasteboardCheckBox.Checked = settings.statusPanelPasteboard;
statusPanelClipboardCheckBox.Checked = settings.statusPanelClipboard;
encryptionHintLabel.Visible = settings.encryptionHint;
}
#endregion
#region Event Handlers
private void SettingsForm_Load(object sender, EventArgs e)
{
string custom_colors = settings.customColor;
int[] array_of_colors = custom_colors.Split(';').Select(n => Convert.ToInt32(n)).ToArray();
colorDialog.CustomColors = array_of_colors;
settingsTabControl.Appearance = TabAppearance.FlatButtons;
settingsTabControl.ItemSize = new Size(0, 1);
settingsTabControl.SizeMode = TabSizeMode.Fixed;
settingsNavigation.SelectedIndex = 0;
TopMost = settings.alwaysOnTop;
settingsTabControl.TabStop = false;
LoadSettings();
}
private void EditorPaddingLeftTextBox_Click(object sender, EventArgs e)
{
editorPaddingLeftTextBox.SelectAll();
}
private void SettingsForm_FormClosed(object sender, FormClosedEventArgs e)
{
MainForm main = Owner as MainForm;
string customColor = string.Join(";", colorDialog.CustomColors);
settings.customColor = customColor;
if (string.IsNullOrWhiteSpace(settings.PasswordIterations))
{
settings.PasswordIterations = "1";
}
if (string.IsNullOrWhiteSpace(editorPaddingLeftTextBox.Text))
{
settings.editorPaddingLeft = "0";
main.richTextBox.SetInnerMargins(Convert.ToInt32(settings.editorPaddingLeft), 0, 0, 0);
}
settings.Save();
}
private void EditorPaddingLeftTextBox_KeyPress(object sender, KeyPressEventArgs e)
{
if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
{
e.Handled = true;
}
}
private void PasswordIterationsTextBox_KeyPress(object sender, KeyPressEventArgs e)
{
if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
{
e.Handled = true;
}
}
private void LockTimeoutTextBox_KeyPress(object sender, KeyPressEventArgs e)
{
if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
{
e.Handled = true;
}
}
#endregion
#region Settings Events
private void EncryptionHintLabel_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
encryptionHintLabel.Visible = false;
settings.encryptionHint = false;
}
}
private void EditorFontColor_Click(object sender, EventArgs e)
{
colorDialog.Color = editorFontColor.BackColor;
using (new CenterWinDialog(this))
{
if (colorDialog.ShowDialog() == DialogResult.OK)
{
MainForm main = Owner as MainForm;
main.richTextBox.ForeColor = colorDialog.Color;
main.richTextBox.SetInnerMargins(Convert.ToInt32(settings.editorPaddingLeft), 0, 0, 0);
settings.editorForeColor = colorDialog.Color;
editorFontColor.BackColor = colorDialog.Color;
}
}
}
private void EditorBackColor_Click(object sender, EventArgs e)
{
colorDialog.Color = editorBackColor.BackColor;
using (new CenterWinDialog(this))
{
if (colorDialog.ShowDialog() == DialogResult.OK)
{
MainForm main = Owner as MainForm;
main.richTextBox.BackColor = colorDialog.Color;
main.BackColor = colorDialog.Color;
settings.editorBackColor = colorDialog.Color;
editorBackColor.BackColor = colorDialog.Color;
}
}
}
private void SettingsNavigation_Click(object sender, EventArgs e)
{
switch (settingsNavigation.SelectedIndex)
{
case 0:
settingsTabControl.SelectedTab = generalTabPage;
break;
case 1:
settingsTabControl.SelectedTab = interfaceTabPage;
break;
case 2:
settingsTabControl.SelectedTab = editorTabPage;
break;
case 3:
settingsTabControl.SelectedTab = encryptionTabPage;
break;
}
}
private void SettingsTabControl_SelectedIndexChanged(object sender, EventArgs e)
{
settingsTabControl.Focus();
}
private void ToolbarVisibleCheckBox_Click(object sender, EventArgs e)
{
MainForm main = Owner as MainForm;
main.toolbarPanel.Visible = toolbarVisibleCheckBox.Checked;
main.richTextBox.SetInnerMargins(Convert.ToInt32(settings.editorPaddingLeft), 0, 0, 0);
settings.toolbarVisible = toolbarVisibleCheckBox.Checked;
}
private void AssociateCheckBox_Click(object sender, EventArgs e)
{
if (associateCheckBox.Checked)
{
Methods.AssociateExtension(Assembly.GetEntryAssembly().Location, "cnp");
}
else
{
Methods.DissociateExtension("cnp");
}
settings.explorerAssociate = associateCheckBox.Checked;
}
private void IntegrateCheckBox_Click(object sender, EventArgs e)
{
if (integrateCheckBox.Checked)
{
Methods.MenuIntegrate("enable");
}
else
{
Methods.MenuIntegrate("disable");
}
settings.explorerIntegrate = integrateCheckBox.Checked;
}
private void EditorPaddingLeftTextBox_TextChanged(object sender, EventArgs e)
{
MainForm main = Owner as MainForm;
if (editorPaddingLeftTextBox.Text.Length >= 1)
{
if (settings.editorPaddingLeft != editorPaddingLeftTextBox.Text)
{
main.richTextBox.SetInnerMargins(Convert.ToInt32(editorPaddingLeftTextBox.Text), 0, 0, 0);
main.richTextBox.Refresh();
settings.editorPaddingLeft = editorPaddingLeftTextBox.Text;
}
}
}
private void LockTimeoutTextBox_TextChanged(object sender, EventArgs e)
{
if (lockTimeoutTextBox.Text != settings.lockTimeout)
{
settings.lockTimeout = lockTimeoutTextBox.Text;
}
if (string.IsNullOrEmpty(lockTimeoutTextBox.Text) | lockTimeoutTextBox.Text == "0")
{
MainForm main = Owner as MainForm;
main.lockTimer.Enabled = false;
}
}
private void SendToCheckBox_Click(object sender, EventArgs e)
{
if (sendToCheckBox.Checked)
{
Methods.SendToShortcut();
}
else
{
string shortcutPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\Microsoft\Windows\SendTo\Crypto Notepad.lnk";
if (System.IO.File.Exists(shortcutPath))
{
System.IO.File.Delete(shortcutPath);
}
}
settings.explorerSendTo = sendToCheckBox.Checked;
}
private void EditorInsertKeyComboBox_DropDownClosed(object sender, EventArgs e)
{
MainForm main = Owner as MainForm;
if (settings.insertKey != editorInsertKeyComboBox.Text)
{
if (editorInsertKeyComboBox.Text == "Disable")
{
main.insertMainMenu.ShortcutKeys = Keys.Insert;
}
else
{
main.insertMainMenu.ShortcutKeys = Keys.None;
}
settings.insertKey = editorInsertKeyComboBox.Text;
}
}
private void MenuIconsCheckBox_Click(object sender, EventArgs e)
{
MainForm main = Owner as MainForm;
settings.menuIcons = menuIconsCheckBox.Checked;
main.MenuIcons(settings.menuIcons);
}
private void EditorFontLabel_Click(object sender, EventArgs e)
{
using (new CenterWinDialog(this))
{
if (fontDialog.ShowDialog() == DialogResult.OK)
{
MainForm main = Owner as MainForm;
main.richTextBox.Font = fontDialog.Font;
main.richTextBox.SetInnerMargins(Convert.ToInt32(settings.editorPaddingLeft), 0, 0, 0);
settings.editorFont = fontDialog.Font;
editorFontLabel.Text = settings.editorFont.Name.ToString() + " " + settings.editorFont.Size.ToString();
}
}
}
private void KeySizeComboBox_DropDownClosed(object sender, EventArgs e)
{
if (keySizeComboBox.Text != settings.KeySize)
{
settings.KeySize = keySizeComboBox.Text;
}
}
private void HashAlgorithmComboBox_DropDownClosed(object sender, EventArgs e)
{
if (hashAlgorithmComboBox.Text != settings.HashAlgorithm)
{
settings.HashAlgorithm = hashAlgorithmComboBox.Text;
}
}
private void FontDialog_Apply(object sender, EventArgs e)
{
MainForm main = Owner as MainForm;
main.richTextBox.Font = fontDialog.Font;
main.richTextBox.SetInnerMargins(Convert.ToInt32(settings.editorPaddingLeft), 0, 0, 0);
settings.editorFont = fontDialog.Font;
}
private void StatusPanelVisibleCheckBox_Click(object sender, EventArgs e)
{
Application.DoEvents();
MainForm main = Owner as MainForm;
main.statusPanel.Visible = statusPanelVisibleCheckBox.Checked;
settings.statusPanelVisible = statusPanelVisibleCheckBox.Checked;
}
private void StatusPanelBackColor_Click(object sender, EventArgs e)
{
colorDialog.Color = statusPanelBackColor.BackColor;
using (new CenterWinDialog(this))
{
if (colorDialog.ShowDialog() == DialogResult.OK)
{
MainForm main = Owner as MainForm;
main.statusPanel.BackColor = colorDialog.Color;
statusPanelBackColor.BackColor = colorDialog.Color;
settings.statusPanelBackColor = colorDialog.Color;
}
}
}
private void StatusPanelFontColor_Click(object sender, EventArgs e)
{
colorDialog.Color = statusPanelFontColor.BackColor;
using (new CenterWinDialog(this))
{
if (colorDialog.ShowDialog() == DialogResult.OK)
{
MainForm main = Owner as MainForm;
main.statusPanel.ForeColor = colorDialog.Color;
main.richTextBox.SetInnerMargins(Convert.ToInt32(settings.editorPaddingLeft), 0, 0, 0);
statusPanelFontColor.BackColor = colorDialog.Color;
settings.statusPanelFontColor = colorDialog.Color;
}
}
}
private void ToolbarBackColor_Click(object sender, EventArgs e)
{
colorDialog.Color = toolbarBackColor.BackColor;
using (new CenterWinDialog(this))
{
if (colorDialog.ShowDialog() == DialogResult.OK)
{
MainForm main = Owner as MainForm;
main.toolbarPanel.BackColor = colorDialog.Color;
settings.toolbarBackColor = colorDialog.Color;
toolbarBackColor.BackColor = colorDialog.Color;
}
}
}
private void ToolbarBorderCheckBox_Click(object sender, EventArgs e)
{
MainForm main = Owner as MainForm;
if (toolbarBorderCheckBox.Checked)
{
main.toolbarPanel.BorderStyle = BorderStyle.FixedSingle;
}
else
{
main.toolbarPanel.BorderStyle = BorderStyle.None;
}
settings.toolbarBorder = toolbarBorderCheckBox.Checked;
}
private void SearchBackColor_Click(object sender, EventArgs e)
{
colorDialog.Color = searchBackColor.BackColor;
using (new CenterWinDialog(this))
{
if (colorDialog.ShowDialog() == DialogResult.OK)
{
MainForm main = Owner as MainForm;
main.searchPanel.BackColor = colorDialog.Color;
main.searchTextBox.BackColor = colorDialog.Color;
settings.searchPanelBackColor = colorDialog.Color;
searchBackColor.BackColor = colorDialog.Color;
}
}
}
private void SearchFontColor_Click(object sender, EventArgs e)
{
colorDialog.Color = searchFontColor.BackColor;
using (new CenterWinDialog(this))
{
if (colorDialog.ShowDialog() == DialogResult.OK)
{
MainForm main = Owner as MainForm;
main.searchTextBox.ForeColor = colorDialog.Color;
main.searchCaseSensitiveCheckBox.ForeColor = colorDialog.Color;
main.searchWholeWordCheckBox.ForeColor = colorDialog.Color;
main.searchFindNextButton.ForeColor = colorDialog.Color;
main.searchCloseButton.ForeColor = colorDialog.Color;
settings.searchPanelForeColor = colorDialog.Color;
searchFontColor.BackColor = colorDialog.Color;
}
}
}
private void MainMenuCheckBox_Click(object sender, EventArgs e)
{
MainForm main = Owner as MainForm;
if (mainMenuCheckBox.Checked)
{
main.mainMenu.Visible = true;
}
else
{
main.mainMenu.Visible = false;
}
settings.mainMenuVisible = mainMenuCheckBox.Checked;
}
private void ToolbarOldIconsCheckBox_Click(object sender, EventArgs e)
{
settings.oldToolbarIcons = toolbarOldIconsCheckBox.Checked;
MainForm main = Owner as MainForm;
main.ToolbarIcons(settings.oldToolbarIcons);
}
private void EditorOpenLinksWithComboBox_DropDownClosed(object sender, EventArgs e)
{
if (settings.openLinks != editorOpenLinksWithComboBox.Text)
{
settings.openLinks = editorOpenLinksWithComboBox.Text;
}
}
private void AutoLockOnMinimizeCheckBox_Click(object sender, EventArgs e)
{
settings.autoLock = autoLockOnMinimizeCheckBox.Checked;
}
private void AutoCheckUpdatesCheckBox_Click(object sender, EventArgs e)
{
settings.autoCheckUpdate = autoCheckUpdatesCheckBox.Checked;
}
private void PasswordIterationsTextBox_TextChanged(object sender, EventArgs e)
{
if (passwordIterationsTextBox.Text != settings.PasswordIterations)
{
settings.PasswordIterations = passwordIterationsTextBox.Text;
}
}
private void MinimizeToTrayCheckBox_Click(object sender, EventArgs e)
{
MainForm main = Owner as MainForm;
if (closeToTrayCheckBox.Checked == false & minimizeToTrayCheckBox.Checked == false & trayMenuCheckBox.Checked == false)
{
main.trayIcon.Visible = false;
}
if (minimizeToTrayCheckBox.Checked == true)
{
main.trayIcon.Visible = true;
}
settings.minimizeToTray = minimizeToTrayCheckBox.Checked;
}
private void CloseToTrayCheckBox_Click(object sender, EventArgs e)
{
MainForm main = Owner as MainForm;
if (closeToTrayCheckBox.Checked == false & minimizeToTrayCheckBox.Checked == false & trayMenuCheckBox.Checked == false)
{
main.trayIcon.Visible = false;
}
if (closeToTrayCheckBox.Checked == true)
{
main.trayIcon.Visible = true;
}
settings.closeToTray = closeToTrayCheckBox.Checked;
}
private void EditorBorderComboBox_DropDownClosed(object sender, EventArgs e)
{
MainForm main = Owner as MainForm;
main.richTextBoxPanel.BorderStyle = (BorderStyle)Enum.Parse(typeof(BorderStyle), editorBorderComboBox.Text);
settings.editorBorder = editorBorderComboBox.Text;
}
private void SearchBorderComboBox_DropDownClosed(object sender, EventArgs e)
{
MainForm main = Owner as MainForm;
main.searchPanel.CellBorderStyle = (TableLayoutPanelCellBorderStyle)Enum.Parse(typeof(TableLayoutPanelCellBorderStyle), searchBorderComboBox.Text);
settings.searchPanelBorder = searchBorderComboBox.Text;
}
private void ToolbarCloseButtonCheckBox_Click(object sender, EventArgs e)
{
MainForm main = Owner as MainForm;
main.closeToolbarButton.Visible = toolbarCloseButtonCheckBox.Checked;
settings.toolbarCloseButton = toolbarCloseButtonCheckBox.Checked;
}
private void SingleInstanceCheckBox_Click(object sender, EventArgs e)
{
settings.singleInstance = singleInstanceCheckBox.Checked;
}
private void StatusPanelLengthCheckBox_Click(object sender, EventArgs e)
{
MainForm main = Owner as MainForm;
main.statusPanelLengthLabel.Visible = statusPanelLengthCheckBox.Checked;
settings.statusPanelLength = statusPanelLengthCheckBox.Checked;
main.StatusPanelTextInfo();
}
private void StatusPanelLinesCheckBox_Click(object sender, EventArgs e)
{
MainForm main = Owner as MainForm;
main.statusPanelLinesLabel.Visible = statusPanelLinesCheckBox.Checked;
settings.statusPanelLines = statusPanelLinesCheckBox.Checked;
main.StatusPanelTextInfo();
}
private void StatusPanelModifiedCheckBox_Click(object sender, EventArgs e)
{
MainForm main = Owner as MainForm;
main.statusPanelModifiedLabel.Visible = statusPanelModifiedCheckBox.Checked;
settings.statusPanelModified = statusPanelModifiedCheckBox.Checked;
main.StatusPanelFileInfo();
}
private void StatusPanelSizeCheckBox_Click(object sender, EventArgs e)
{
MainForm main = Owner as MainForm;
main.statusPanelSizeLabel.Visible = statusPanelSizeCheckBox.Checked;
settings.statusPanelSize = statusPanelSizeCheckBox.Checked;
main.StatusPanelFileInfo();
}
#endregion
private void StatusPanelReadonlyCheckBox_Click(object sender, EventArgs e)
{
MainForm main = Owner as MainForm;
main.statusPanelReadonlyLabel.Visible = statusPanelReadonlyCheckBox.Checked;
settings.statusPanelReadonly = statusPanelReadonlyCheckBox.Checked;
main.StatusPanelFileInfo();
}
private void StatusPanelWordwrapCheckBox_Click(object sender, EventArgs e)
{
MainForm main = Owner as MainForm;
main.statusPanelWordwrapLabel.Visible = statusPanelWordwrapCheckBox.Checked;
settings.statusPanelWordWrap = statusPanelWordwrapCheckBox.Checked;
main.StatusPanelFileInfo();
}
private void StatusPanelPasteboardCheckBox_Click(object sender, EventArgs e)
{
MainForm main = Owner as MainForm;
main.statusPanelPasteboardLabel.Visible = statusPanelPasteboardCheckBox.Checked;
settings.statusPanelPasteboard = statusPanelPasteboardCheckBox.Checked;
main.StatusPanelFileInfo();
}
private void StatusPanelClipboardCheckBox_Click(object sender, EventArgs e)
{
settings.statusPanelClipboard = statusPanelClipboardCheckBox.Checked;
}
private void ClearClipboardTextBox_TextChanged(object sender, EventArgs e)
{
if (clearClipboardTextBox.Text == "" || clearClipboardTextBox.Text == "0")
{
settings.clipboardClearTime = "";
}
else
{
settings.clipboardClearTime = clearClipboardTextBox.Text + 0;
}
}
private void ClearClipboardCheckBox_Click(object sender, EventArgs e)
{
settings.clearClipboardAtClose = clearClipboardCheckBox.Checked;
}
private void TrayMenuCheckBox_Click(object sender, EventArgs e)
{
MainForm main = Owner as MainForm;
if (closeToTrayCheckBox.Checked == false & minimizeToTrayCheckBox.Checked == false & trayMenuCheckBox.Checked == false)
{
main.trayIcon.Visible = false;
}
if (trayMenuCheckBox.Checked == true)
{
main.trayIcon.Visible = true;
}
settings.trayMenu = trayMenuCheckBox.Checked;
}
private void ShortcutKeysCheckBox_Click(object sender, EventArgs e)
{
MainForm main = Owner as MainForm;
settings.shortcutKeys = shortcutKeysCheckBox.Checked;
main.ShortcutKeys(settings.shortcutKeys);
}
private void OpenTxtUnencryptedCheckBox_Click(object sender, EventArgs e)
{
settings.openTxtUnencrypted = openTxtUnencryptedCheckBox.Checked;
}
}
}