789 lines
31 KiB
C#
789 lines
31 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Drawing;
|
|
using System.Data;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
using System.IO;
|
|
using System.Reflection;
|
|
using AppRes = Eugen.ESystem.Windows.Forms.Properties.AppResources;
|
|
using System.Xml.Linq;
|
|
|
|
namespace Eugen.ESystem.Windows.Forms
|
|
{
|
|
public partial class TripleValueControl : UserControl
|
|
{
|
|
#region Version und Copyright
|
|
// Keys und Copyright
|
|
static string dllName = Path.GetFileNameWithoutExtension(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase); //Den Programmnamen auslesen
|
|
static string dllVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString();
|
|
static object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCopyrightAttribute), false);
|
|
static string copyright = GenerateCopyright();
|
|
string icon = Application.StartupPath + "\\Info.bmp";
|
|
//Assembly Datum und Zeit
|
|
static DateTime value = AssemblyDateTime();
|
|
string date = value.ToShortDateString();
|
|
string time = value.ToLongTimeString();
|
|
private static DateTime AssemblyDateTime()
|
|
{
|
|
var version = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;
|
|
var buildDateTime = new DateTime(2000, 1, 1).Add(new TimeSpan(TimeSpan.TicksPerDay * version.Build + TimeSpan.TicksPerSecond * 2 * version.Revision));
|
|
//Tage seit dem 1. Januar 2000 und Sekunden seit Mitternacht, (multiplizier mit 2 ergibt das Original)
|
|
return buildDateTime;
|
|
}
|
|
|
|
private static string CurrentYear()
|
|
{
|
|
DateTime dtn = DateTime.Now;
|
|
return dtn.Year.ToString();
|
|
}
|
|
|
|
private static string StartYear()
|
|
{
|
|
string startYear = "";
|
|
if (((AssemblyCopyrightAttribute)attributes[0]).Copyright.Contains("Copyright © "))
|
|
{
|
|
startYear = ((AssemblyCopyrightAttribute)attributes[0]).Copyright.Replace("Copyright © ", "");
|
|
while (startYear.StartsWith(" "))
|
|
{
|
|
startYear = startYear.Remove(0, 1);
|
|
}
|
|
startYear = startYear.Remove(startYear.IndexOf(" "));
|
|
return startYear;
|
|
}
|
|
else
|
|
{
|
|
DateTime dtn = DateTime.Now;
|
|
return dtn.Year.ToString();
|
|
}
|
|
}
|
|
|
|
private static string GenerateCopyright()
|
|
{
|
|
string startYear = StartYear();
|
|
string currentYear = CurrentYear();
|
|
|
|
if (startYear == currentYear)
|
|
{
|
|
return ((AssemblyCopyrightAttribute)attributes[0]).Copyright;
|
|
}
|
|
else
|
|
{
|
|
return ((AssemblyCopyrightAttribute)attributes[0]).Copyright.Replace(startYear, String.Concat(startYear, "-", currentYear));
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region DLL-Info
|
|
/// <summary>
|
|
/// Contains the name of the dll file.
|
|
/// </summary>
|
|
public static string DllName { private set; get; }
|
|
|
|
/// <summary>
|
|
/// Contains the version of the dll file.
|
|
/// </summary>
|
|
public static string DllVersion { private set; get; }
|
|
|
|
/// <summary>
|
|
/// Contains the copyright notice.
|
|
/// </summary>
|
|
public static string Copyright { private set; get; }
|
|
|
|
/// <summary>
|
|
/// Contains the name-, version- and copyright-information of the dll file.
|
|
/// </summary>
|
|
public static string[] DllInfo { private set; get; }
|
|
|
|
private static void SetDllInfo()
|
|
{
|
|
//Name, Keys und Copyright setzen
|
|
DllName = dllName;
|
|
DllVersion = dllVersion;
|
|
Copyright = copyright;
|
|
}
|
|
#endregion
|
|
|
|
//Prüft ob der Initialisierungsprozess läuft.
|
|
//Nach der Initialisierung wird der Wert auf 'true' gesetzt.
|
|
bool initialized = false;
|
|
|
|
static TripleValueControl()
|
|
{
|
|
SetDllInfo(); //Name, Keys und Copyright der DLL setzen
|
|
}
|
|
|
|
/// <summary>
|
|
/// Creates a control with which the values in an XML file can be edited
|
|
/// </summary>
|
|
public TripleValueControl()
|
|
{
|
|
InitializeComponent();
|
|
|
|
//Ereignisse abbonieren
|
|
controlPanelControl.ButtonUpClick += DoMoveUp;
|
|
controlPanelControl.ButtonDownClick += DoMoveDown;
|
|
controlPanelControl.ButtonAddSeparatorClick += DoAddSeperator;
|
|
controlPanelControl.CheckboxEncryptCheck += DoEncrypt;
|
|
controlPanelControl.CheckboxDefaultCheck += DoDefault;
|
|
|
|
//Das Aussehen des Controlls setzen
|
|
InitializeUserControl();
|
|
|
|
initialized = true; //Initialisierungsroutine wurde durchlaufen
|
|
|
|
InitialDirectory = @"C:\";
|
|
Topic = "Topic";
|
|
StandardValue = 0;
|
|
}
|
|
|
|
#region Public values
|
|
/// <summary>
|
|
/// The password used for encryption. An empty value disables the Encrypt values switch
|
|
/// </summary>
|
|
public string Password
|
|
{
|
|
get { return password; }
|
|
set
|
|
{
|
|
password = value;
|
|
controlPanelControl.CheckBoxEncryptStatusSelected = !String.IsNullOrEmpty(Password);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Defines or read the initial directory
|
|
/// </summary>
|
|
public string InitialDirectory { set; get; }
|
|
|
|
/// <summary>
|
|
/// XML file name. Must be specified mandatory
|
|
/// </summary>
|
|
public string XMLfileName { set; get; }
|
|
|
|
/// <summary>
|
|
/// Adjusts the labeling of the values control. An empty value forces the default labeling
|
|
/// </summary>
|
|
public string ValueControlName
|
|
{
|
|
get { return groupBoxValueControl.Text; }
|
|
set
|
|
{
|
|
groupBoxValueControl.Text = value;
|
|
groupBoxValueControl.Refresh();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Defines the Topic. An empty value forces the default labeling
|
|
/// </summary>
|
|
public string Topic { set; get; }
|
|
|
|
/// <summary>
|
|
/// Adjusts the labeling of the group designation. An empty value forces the default labeling
|
|
/// </summary>
|
|
public string GroupName
|
|
{
|
|
get { return labelGroup.Text; }
|
|
set { labelGroup.Text = value; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Adjusts the name of the group attribute used in the XML file. Required by the Load function
|
|
/// </summary>
|
|
public string Group { set; get; }
|
|
|
|
/// <summary>
|
|
/// Adjusts the name of the key attribute used in the XML file. Required by the Load function
|
|
/// </summary>
|
|
public string Key { set; get; }
|
|
|
|
/// <summary>
|
|
/// Adjusts the labeling of the table header designation for the key. An empty value forces the default labeling
|
|
/// </summary>
|
|
public string TableKeyName
|
|
{
|
|
get { return dataGridViewValues.Columns[0].HeaderText; }
|
|
set { dataGridViewValues.Columns[0].HeaderText = value; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Adjusts the labeling of the table header designation for the value. An empty value forces the default labeling
|
|
/// </summary>
|
|
public string TableValueName
|
|
{
|
|
get { return dataGridViewValues.Columns[1].HeaderText; }
|
|
set { dataGridViewValues.Columns[1].HeaderText = value; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Adjusts the labeling of the table header designation for the attribut. An empty value forces the default labeling
|
|
/// </summary>
|
|
public string TableAttributeName
|
|
{
|
|
get { return dataGridViewValues.Columns[2].HeaderText; }
|
|
set { dataGridViewValues.Columns[2].HeaderText = value; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Adjusts the width of the control. An empty value forces the default value
|
|
/// </summary>
|
|
public int DialogWidth { set; get; }
|
|
|
|
/// <summary>
|
|
/// Adjusts the height of the control. An empty value forces the default value
|
|
/// </summary>
|
|
public int DialogHeight { set; get; }
|
|
|
|
/// <summary>
|
|
/// Adjusts the width of the name column of the table. An empty value forces the default value
|
|
/// </summary>
|
|
public int TableKeyNameWidth { set; get; }
|
|
#endregion
|
|
|
|
#region Private values
|
|
private string password;
|
|
private bool alwaysEncrypted = false;
|
|
private bool standardValueSet = false;
|
|
private int selectedRow = 0;
|
|
private int rowIndexColored = 0;
|
|
private bool onlyRefresh = false;
|
|
private int StandardValue { get; set; }
|
|
#endregion
|
|
|
|
private void InitializeUserControl()
|
|
{
|
|
//Erzeugt das erste Erscheinungsbild des Controlls
|
|
controlPanelControl.ButtonUpAvailability = Availability.Enabled; //Button Up ist aktiviert
|
|
controlPanelControl.ButtonUpVisibility = Visibility.Visible; //Button Up ist Sichtbar
|
|
controlPanelControl.ButtonUpUseIcon = Figure.Used; //Für Button Up wird ein Bild anstelle des Textes verwendet
|
|
controlPanelControl.ButtonDownAvailability = Availability.Enabled; //Button Down ist aktiviert
|
|
controlPanelControl.ButtonDownVisibility = Visibility.Visible; //Button Down ist Sichtbar
|
|
controlPanelControl.ButtonDownUseIcon = Figure.Used; //Für Button Down wird ein Bild anstelle des Textes verwendet
|
|
controlPanelControl.ButtonAddSeparatorAvailability = Availability.Disabled; //Button Separator ist deaktiviert
|
|
controlPanelControl.ButtonAddSeparatorVisibility = Visibility.Invisible; //Button Separator ist nicht Sichtbar
|
|
controlPanelControl.ButtonAddSeparatorUseIcon = Figure.Used; //Für Button Separator wird ein Bild anstelle des Textes verwendet
|
|
controlPanelControl.CheckBoxEncryptAvailability = Availability.Disabled; //CheckBox Encrypt ist deaktiviert
|
|
controlPanelControl.CheckBoxEncryptVisibility = Visibility.Visible; //CheckBox Encrypt ist Sichtbar
|
|
controlPanelControl.CheckBoxEncryptUseIcon = Figure.Used; //Für CheckBox Encrypt wird ein Bild anstelle des Textes verwendet
|
|
controlPanelControl.CheckBoxEncryptStatusSelected = (bool)false; //Die CheckBox Encrypt ist nicht ausgewählt
|
|
controlPanelControl.CheckBoxDefaultAvailability = Availability.Disabled; //CheckBox Default ist deaktiviert
|
|
controlPanelControl.CheckBoxDefaultVisibility = Visibility.Invisible; //CheckBox Default ist Sichtbar
|
|
controlPanelControl.CheckBoxDefaultUseIcon = Figure.Used; //Für CheckBox Default wird ein Bild anstelle des Textes verwendet
|
|
controlPanelControl.CheckBoxDefaultStatusSelected = (bool)false; //Die CheckBox Default ist nicht ausgewählt
|
|
controlPanelControl.SizeX = 90; //Größe des Controlls in X-Richtung
|
|
controlPanelControl.SizeY = 127; //Größe des Controlls in Y-Richtung
|
|
controlPanelControl.SetVisibility(); //Setzt die getroffenen Einstellungen
|
|
}
|
|
|
|
private void textBoxGroup_TextChanged(object sender, EventArgs e)
|
|
{
|
|
Group = textBoxGroup.Text;
|
|
|
|
buttonSave.Enabled = (!String.IsNullOrEmpty(textBoxGroup.Text));
|
|
}
|
|
|
|
private void textBoxGroup_Leave(object sender, EventArgs e)
|
|
{
|
|
if (!String.IsNullOrEmpty(textBoxGroup.Text))
|
|
{
|
|
if (File.Exists(XMLfileName))
|
|
{
|
|
LoadXML();
|
|
controlPanelControl.CheckBoxEncryptAvailability = Availability.Enabled;
|
|
controlPanelControl.CheckBoxDefaultAvailability = Availability.Enabled;
|
|
controlPanelControl.SetVisibility();
|
|
}
|
|
else
|
|
{
|
|
MessageBox.Show(AppRes.msgBoxTxt001, AppRes.msgBoxCapt001, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void buttonSave_Click(object sender, EventArgs e)
|
|
{
|
|
if (String.IsNullOrEmpty(XMLfileName))
|
|
{
|
|
saveFileDialog.Title = AppRes.dlgSaveTitle;
|
|
saveFileDialog.InitialDirectory = InitialDirectory;
|
|
saveFileDialog.Filter = AppRes.dlgFilter; //"xml files (*.xml)|*.xml|All files (*.*)|*.*"
|
|
saveFileDialog.FilterIndex = 1;
|
|
saveFileDialog.RestoreDirectory = true;
|
|
|
|
if (saveFileDialog.ShowDialog() == DialogResult.OK)
|
|
{
|
|
SaveXML();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
SaveXML();
|
|
}
|
|
}
|
|
|
|
private void dataGridViewValues_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
|
|
{
|
|
if (dataGridViewValues.Rows.Count != 0)
|
|
{
|
|
controlPanelControl.CheckBoxDefaultAvailability = Availability.Enabled; //Standardwert freischalten, sobald es einen Wert gibt
|
|
}
|
|
}
|
|
|
|
private void dataGridViewValues_KeyDown(object sender, KeyEventArgs e)
|
|
{
|
|
if (e.KeyCode == Keys.Delete)
|
|
{
|
|
selectedRow = dataGridViewValues.SelectedCells[0].RowIndex + 1; //Wenn die Zeile gelöscht wird, dann die Zeilennummer merken
|
|
}
|
|
}
|
|
|
|
private void dataGridViewValues_RowsRemoved(object sender, DataGridViewRowsRemovedEventArgs e)
|
|
{
|
|
//Wenn die gelöschte Zeile den Standardwert enthielt, dann die WErte zurücksetzten, weil es keinen Standardwert mehr gibt
|
|
if (selectedRow == rowIndexColored)
|
|
{
|
|
StandardValue = 0; //Es gibt keine ausgewählte Standardzeile
|
|
|
|
rowIndexColored = 0; //Es gibt keine umgefärbte Zeile
|
|
}
|
|
}
|
|
|
|
private void dataGridViewValues_RowEnter(object sender, DataGridViewCellEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
if (StandardValue == dataGridViewValues.SelectedCells[0].RowIndex + 1)
|
|
{
|
|
//Die vorher ausgewählte Zeile abwählen
|
|
controlPanelControl.CheckBoxDefaultStatusSelected = false; //Wenn die ausgewählte Zeile keinen Standardwert enthält, dann die CheckBox abwählen
|
|
dataGridViewValues.Rows[rowIndexColored + 1].DefaultCellStyle.ForeColor = Color.Empty;
|
|
|
|
//Die ausgewählte Zeile anwählen
|
|
controlPanelControl.CheckBoxDefaultStatusSelected = true; //Wenn die ausgewählte Zeile den Standardwert enthält, dann die CheckBox anwählen
|
|
controlPanelControl.SetVisibility();
|
|
dataGridViewValues.Rows[dataGridViewValues.SelectedCells[0].RowIndex].DefaultCellStyle.ForeColor = Color.LightSeaGreen;
|
|
onlyRefresh = true; //Das Aussehen soll nur aktualisiert werden
|
|
}
|
|
else
|
|
{
|
|
controlPanelControl.CheckBoxDefaultStatusSelected = false; //Wenn die ausgewählte Zeile keinen Standardwert enthält, dann die CheckBox abwählen
|
|
controlPanelControl.SetVisibility();
|
|
onlyRefresh = false; //Das Aussehen soll aktualisiert und der Standard neu gesewtzt werden
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
//Nur die falsche Reihe ausgewählt, z.B. die Kopfzeile oder die erste Zeile wurde gelöscht
|
|
StandardValue = 0; //Wenn die erste Zeile der Standardwert war und gelöscht wurde, dann den Wert auf 0 setzen
|
|
controlPanelControl.CheckBoxDefaultStatusSelected = false; //Wenn die ausgewählte Zeile keinen Standardwert enthält, dann die CheckBox abwählen
|
|
controlPanelControl.SetVisibility();
|
|
}
|
|
}
|
|
|
|
public void SetBasicValues()
|
|
{
|
|
if (!String.IsNullOrEmpty(Group))
|
|
{
|
|
textBoxGroup.Text = Group;
|
|
}
|
|
}
|
|
|
|
private void SetDefault()
|
|
{
|
|
try
|
|
{
|
|
if (StandardValue == dataGridViewValues.SelectedCells[0].RowIndex + 1)
|
|
{
|
|
controlPanelControl.CheckBoxDefaultStatusSelected = true; //Wenn die ausgewählte Zeile den Standardwert enthält, dann die CheckBox anwählen
|
|
controlPanelControl.SetVisibility();
|
|
dataGridViewValues.Rows[dataGridViewValues.SelectedCells[0].RowIndex].DefaultCellStyle.ForeColor = Color.LightSeaGreen;
|
|
}
|
|
else
|
|
{
|
|
controlPanelControl.CheckBoxDefaultStatusSelected = false; //Wenn die ausgewählte Zeile keinen Standardwert enthält, dann die CheckBox abwählen
|
|
controlPanelControl.SetVisibility();
|
|
dataGridViewValues.Rows[rowIndexColored + 1].DefaultCellStyle.ForeColor = Color.Empty;
|
|
}
|
|
}
|
|
catch (Exception)
|
|
{
|
|
//Nur die falsche Reihe ausgewählt, z.B. die Kopfzeile
|
|
}
|
|
}
|
|
|
|
private void SetDialogAppearance()
|
|
{
|
|
if (DialogWidth != 0)
|
|
{
|
|
SetDialogWidth(DialogWidth);
|
|
}
|
|
|
|
if (DialogHeight != 0)
|
|
{
|
|
SetDialogHeight(DialogHeight);
|
|
}
|
|
|
|
if (TableKeyNameWidth != 0)
|
|
{
|
|
SetTableKeyNameWidth(TableKeyNameWidth);
|
|
}
|
|
}
|
|
|
|
private void LoadXML()
|
|
{
|
|
//controlPanelControl.CheckBoxEncryptStatusSelected = false;
|
|
|
|
//var loadXML = new LoadXML();
|
|
//loadXML.FileName = XMLfileName;
|
|
//loadXML.Load();
|
|
//string[] values = new string[loadXML.Values.Length];
|
|
//values = loadXML.Values;
|
|
//string[] attributes = new string[loadXML.Attributes.Length];
|
|
//attributes = loadXML.Attributes;
|
|
|
|
//if (!String.IsNullOrEmpty(Group))
|
|
//{
|
|
// loadXML.Group = Group;
|
|
//}
|
|
|
|
//for (int i = 0; i < values.Length; i++)
|
|
//{
|
|
// if (values[i].StartsWith("$$$$"))
|
|
// {
|
|
// values[i] = Decrypt(values[i], Password);
|
|
// controlPanelControl.CheckBoxEncryptStatusSelected = true; //Wenn ein verschlüsseltes Element gefunden wurde, dann setzen
|
|
// }
|
|
|
|
// if (attributes[i].StartsWith("$$$$"))
|
|
// {
|
|
// attributes[i] = Decrypt(attributes[i], Password);
|
|
// controlPanelControl.CheckBoxEncryptStatusSelected = true; //Wenn ein verschlüsseltes Element gefunden wurde, dann setzen
|
|
// }
|
|
|
|
// dataGridViewValues.Rows.Add(loadXML.Keys[i], values[i], attributes[i]);
|
|
//}
|
|
|
|
//dataGridViewValues.Refresh();
|
|
|
|
//textBoxGroup.Text = loadXML.Group; //Gruppe setzen
|
|
|
|
controlPanelControl.CheckBoxEncryptStatusSelected = false;
|
|
|
|
var loadXML = new LoadXML();
|
|
loadXML.FileName = XMLfileName;
|
|
loadXML.Load();
|
|
string[] values = new string[loadXML.Values.Length];
|
|
values = loadXML.Values;
|
|
string[] attributes = new string[loadXML.Attributes.Length];
|
|
attributes = loadXML.Attributes;
|
|
|
|
if (!String.IsNullOrEmpty(Group))
|
|
{
|
|
loadXML.Group = Group;
|
|
}
|
|
|
|
for (int i = 0; i < values.Length; i++)
|
|
{
|
|
if (values[i].StartsWith("$$$$"))
|
|
{
|
|
values[i] = Decrypt(values[i], Password);
|
|
controlPanelControl.CheckBoxEncryptStatusSelected = true; //Wenn ein verschlüsseltes Element gefunden wurde, dann setzen
|
|
}
|
|
|
|
if (attributes[i].StartsWith("$$$$"))
|
|
{
|
|
attributes[i] = Decrypt(attributes[i], Password);
|
|
controlPanelControl.CheckBoxEncryptStatusSelected = true; //Wenn ein verschlüsseltes Element gefunden wurde, dann setzen
|
|
}
|
|
|
|
dataGridViewValues.Rows.Add(loadXML.Keys[i], values[i], attributes[i]);
|
|
}
|
|
|
|
dataGridViewValues.Refresh();
|
|
|
|
textBoxGroup.Text = loadXML.Group; //Gruppe setzen
|
|
}
|
|
|
|
private void SaveXML()
|
|
{
|
|
if (!Directory.Exists(Path.GetDirectoryName(XMLfileName)))
|
|
{
|
|
Directory.CreateDirectory(Path.GetDirectoryName(XMLfileName)); //Wenn das Verzeichnis nicht existiert, dann erzeugen
|
|
}
|
|
|
|
int dgvLength = dataGridViewValues.RowCount - 1;
|
|
string[] keys = new string[dgvLength];
|
|
string value = "";
|
|
string[] values = new string[dgvLength];
|
|
string attribute = "";
|
|
string[] attributes = new string[dgvLength];
|
|
|
|
for (int i = 0; i < dgvLength; i++)
|
|
{
|
|
if (controlPanelControl.CheckBoxEncryptStatusSelected)
|
|
{
|
|
value = Encrypt(dataGridViewValues[1, i].Value.ToString(), Password); //Verschlüsselt
|
|
if (dataGridViewValues[2, i].Value == null)
|
|
{
|
|
attribute = Encrypt("", Password); //Verschlüsselt
|
|
}
|
|
else
|
|
{
|
|
attribute = Encrypt(dataGridViewValues[2, i].Value.ToString(), Password); //Verschlüsselt
|
|
}
|
|
}
|
|
else
|
|
{
|
|
value = dataGridViewValues[1, i].Value.ToString(); //Unverschlüsselt
|
|
if (dataGridViewValues[2, i].Value == null)
|
|
{
|
|
attribute = "";
|
|
}
|
|
else
|
|
{
|
|
attribute = dataGridViewValues[2, i].Value.ToString(); //Unverschlüsselt
|
|
}
|
|
}
|
|
|
|
keys[i] = dataGridViewValues[0, i].Value.ToString(); ;
|
|
values[i] = value;
|
|
attributes[i] = attribute;
|
|
}
|
|
|
|
//Speichern
|
|
var saveXML = new SaveXML();
|
|
|
|
saveXML.FileName = XMLfileName;
|
|
saveXML.Topic = "NX-Portal"; //z.B. "NX-Portal"
|
|
saveXML.Group = textBoxGroup.Text; //z.B. "Tools"
|
|
saveXML.Keys = keys; //z.B. "CleanUp"
|
|
saveXML.Values = values; //z.B. "M:\ug\Tools\CleanUp\CleanUp.exe"
|
|
saveXML.Attributes = attributes; //z.B. "-h"
|
|
|
|
saveXML.Save();
|
|
}
|
|
|
|
private string Encrypt(string clearText, string password)
|
|
{
|
|
var crypt = new Cryption();
|
|
return String.Concat("$$$$", crypt.EncryptString(clearText, password));
|
|
}
|
|
|
|
private string Decrypt(string encryptedText, string password)
|
|
{
|
|
var crypt = new Cryption();
|
|
return crypt.DecryptString(encryptedText.Replace("$$$$", ""), password);
|
|
}
|
|
|
|
public void SetDialogWidth(int width)
|
|
{
|
|
if (width >= this.MinimumSize.Width && width <= this.MaximumSize.Width)
|
|
{
|
|
this.Width = width;
|
|
|
|
int dif = width - 316;
|
|
|
|
if (dif > 0)
|
|
{
|
|
dataGridViewValues.Columns[0].Width += dif / 2;
|
|
}
|
|
}
|
|
}
|
|
|
|
private void SetDialogHeight(int height)
|
|
{
|
|
if (height >= this.MinimumSize.Height && height <= this.MaximumSize.Height)
|
|
{
|
|
this.Height = height;
|
|
}
|
|
}
|
|
|
|
private void SetTableKeyNameWidth(int width)
|
|
{
|
|
if (width >= ColumnName.MinimumWidth && width <= (this.Width - 151 - ColumnValue.MinimumWidth))
|
|
{
|
|
ColumnName.Width = width;
|
|
}
|
|
}
|
|
|
|
LoadXML loadXML = new LoadXML();
|
|
|
|
/// <summary>
|
|
/// Gets the values stored in the XML file
|
|
/// </summary>
|
|
/// <returns>An string array</returns>
|
|
public string[] GetValues()
|
|
{
|
|
controlPanelControl.CheckBoxEncryptStatusSelected = false;
|
|
|
|
//var loadXML = new LoadXML();
|
|
loadXML.FileName = XMLfileName;
|
|
loadXML.Topic = Topic;
|
|
//loadXML.Key = Key;
|
|
loadXML.Group = Group;
|
|
loadXML.Load();
|
|
|
|
if (loadXML.Values == null)
|
|
{
|
|
return null;
|
|
}
|
|
else
|
|
{
|
|
string[] values = new string[loadXML.Values.Length];
|
|
|
|
values = loadXML.Values;
|
|
|
|
for (int i = 0; i < values.Length; i++)
|
|
{
|
|
if (values[i] != null)
|
|
{
|
|
if (values[i].StartsWith("$$$$"))
|
|
{
|
|
values[i] = Decrypt(values[i], Password);
|
|
}
|
|
}
|
|
}
|
|
|
|
return values;
|
|
}
|
|
}
|
|
|
|
#region Ereignisse
|
|
//Die Ereignisse werden nach betätigen eines Elementes aufgerufen
|
|
private void DoMoveUp(object source, EventArgs e)
|
|
{
|
|
//Weil sich die Zustände der Elemente während der Initialisierung ändern,
|
|
//wird die Ausführung der folgenden Aktionen unterdrückt
|
|
if (initialized)
|
|
{
|
|
if (dataGridViewValues.SelectedCells.Count > 0)
|
|
{
|
|
int index = dataGridViewValues.SelectedCells[0].OwningRow.Index;
|
|
|
|
if (index > 0)
|
|
{
|
|
int col = dataGridViewValues.SelectedCells[0].OwningColumn.Index;
|
|
|
|
DataGridViewRowCollection rows = dataGridViewValues.Rows;
|
|
DataGridViewRow row = rows[index];
|
|
|
|
rows.Remove(row);
|
|
rows.Insert(index - 1, row);
|
|
|
|
dataGridViewValues.ClearSelection();
|
|
|
|
dataGridViewValues.Rows[index - 1].Cells[col].Selected = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private void DoMoveDown(object source, EventArgs e)
|
|
{
|
|
//Weil sich die Zustände der Elemente während der Initialisierung ändern,
|
|
//wird die Ausführung der folgenden Aktionen unterdrückt
|
|
if (initialized)
|
|
{
|
|
if (dataGridViewValues.SelectedCells.Count > 0)
|
|
{
|
|
int index = dataGridViewValues.SelectedCells[0].OwningRow.Index;
|
|
|
|
if (index < dataGridViewValues.Rows.Count - 2)
|
|
{
|
|
int col = dataGridViewValues.SelectedCells[0].OwningColumn.Index;
|
|
|
|
DataGridViewRowCollection rows = dataGridViewValues.Rows;
|
|
DataGridViewRow row = rows[index];
|
|
|
|
rows.Remove(row);
|
|
rows.Insert(index + 1, row);
|
|
|
|
dataGridViewValues.ClearSelection();
|
|
|
|
dataGridViewValues.Rows[index + 1].Cells[col].Selected = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private void DoAddSeperator(object source, EventArgs e)
|
|
{
|
|
//Weil sich die Zustände der Elemente während der Initialisierung ändern,
|
|
//wird die Ausführung der folgenden Aktionen unterdrückt
|
|
if (initialized)
|
|
{
|
|
//Hat in diesem Programm keine Funktion
|
|
}
|
|
}
|
|
|
|
private void DoEncrypt(object source, EventArgs e)
|
|
{
|
|
//Weil sich die Zustände der Elemente während der Initialisierung ändern,
|
|
//wird die Ausführung der folgenden Aktionen unterdrückt
|
|
if (initialized)
|
|
{
|
|
if (controlPanelControl.CheckBoxEncryptStatusSelected == false)
|
|
{
|
|
controlPanelControl.CheckBoxEncryptStatusSelected = true;
|
|
}
|
|
else
|
|
{
|
|
controlPanelControl.CheckBoxEncryptStatusSelected = false;
|
|
}
|
|
}
|
|
}
|
|
|
|
private void DoDefault(object source, EventArgs e)
|
|
{
|
|
//Weil sich die Zustände der Elemente während der Initialisierung ändern, wird die Ausführung der folgenden Aktionen unterdrückt
|
|
//Nach der Initialisierung wird Alles durchlaufen
|
|
if (initialized)
|
|
{
|
|
if (onlyRefresh)
|
|
{
|
|
try
|
|
{
|
|
//Wenn nur die Zeile ausgewählt wurde, dann nur die Sichtbarkeit aktualisieren
|
|
if (StandardValue == dataGridViewValues.SelectedCells[0].RowIndex + 1)
|
|
{
|
|
controlPanelControl.CheckBoxDefaultStatusSelected = true; //Wenn die ausgewählte Zeile den Standardwert enthält, dann die CheckBox anwählen
|
|
controlPanelControl.SetVisibility();
|
|
}
|
|
else
|
|
{
|
|
controlPanelControl.CheckBoxDefaultStatusSelected = false; //Wenn die ausgewählte Zeile nicht den Standardwert enthält, dann die CheckBox abwählen
|
|
controlPanelControl.SetVisibility();
|
|
}
|
|
|
|
onlyRefresh = false;
|
|
}
|
|
catch (Exception)
|
|
{
|
|
//Nichts tun, wird ausgelöst, weil es die Zeile nicht mehr gibt
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
//Wenn die CheckBox ausgewählt wurde, dann die ursprünliche Standardzeile zurückfärben, die aktuelle Zeil selektiern und umfärben, sowie 'StandardValue' setzen
|
|
//Nur ausführen wenn es schon eine Standardzeile gibt
|
|
if (rowIndexColored != 0)
|
|
{
|
|
dataGridViewValues.Rows[rowIndexColored - 1].DefaultCellStyle.ForeColor = Color.Empty; //Die ursprünglich ausgewählte Standardzeile zurückfärben
|
|
StandardValue = dataGridViewValues.SelectedCells[0].RowIndex + 1; //Zeile die als Standard ausgewählt wurde
|
|
dataGridViewValues.Rows[dataGridViewValues.SelectedCells[0].RowIndex].DefaultCellStyle.ForeColor = Color.LightSeaGreen;
|
|
controlPanelControl.CheckBoxDefaultStatusSelected = true; //Wenn die ausgewählte Zeile den Standardwert enthält, dann die CheckBox anwählen
|
|
controlPanelControl.SetVisibility();
|
|
rowIndexColored = dataGridViewValues.SelectedCells[0].RowIndex + 1; //Die Zeile merken die umgefärbt wurde
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
}
|
|
}
|