using ESystem.Globalization;
using Eugen.ESystem;
using Eugen.ESystem.Windows.Forms;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Security.Policy;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using Template;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.StartPanel;
using Language = ESystem.Globalization.Languages.Language;
namespace RenameIt
{
public partial class Form1 : Form
{
#region Version and Copyright
// Version und Copyright
readonly string programName = Path.GetFileNameWithoutExtension(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase); // Den Programmnamen auslesen
readonly string programVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString();
readonly static object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCopyrightAttribute), false);
readonly string copyright = GenerateCopyright();
private static string CurrentYear()
{
DateTime dtn = DateTime.Now;
return dtn.Year.ToString();
}
private static string StartYear()
{
if (((AssemblyCopyrightAttribute)attributes[0]).Copyright.Contains("Copyright © "))
{
string startYear = ((AssemblyCopyrightAttribute)attributes[0]).Copyright.Replace("Copyright © ", "");
while (startYear.StartsWith(" "))
{
startYear = startYear.Remove(0, 1);
}
if (startYear.Contains("-"))
{
startYear = startYear.Remove(startYear.IndexOf("-"));
}
else
{
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
{
string temp = ((AssemblyCopyrightAttribute)attributes[0]).Copyright;
string start = temp.Remove(temp.IndexOf(startYear) - 1);
string end = (temp.Remove(0, temp.IndexOf(" by")));
return String.Concat(start, " ", startYear, "-", currentYear, end);
}
}
#endregion
#region Program-Info
///
/// Contains the name of the program file
///
public static string ProgramName { set; get; }
///
/// Contains the version of the program file
///
public static string ProgramVersion { set; get; }
///
/// Contains the copyright notice
///
public static string Copyright { set; get; }
private void SetProgramInfo()
{
// Name, Version und Copyright setzen
ProgramName = programName;
ProgramVersion = programVersion;
Copyright = copyright;
}
#endregion
#region Language Control
Language CurrentLanguage { set; get; }
private void SetLanguageToSystemLanguage()
{
if (Thread.CurrentThread.CurrentUICulture.TwoLetterISOLanguageName == "de")
{
SetLanguage(Language.German, CultureInfo.GetCultureInfo("de"));
//germanToolStripMenuItem.Checked = true;
//englishToolStripMenuItem.Checked = false;
CurrentLanguage = Language.German;
}
else
{
SetLanguage(Language.English, CultureInfo.GetCultureInfo("en"));
//germanToolStripMenuItem.Checked = false;
//englishToolStripMenuItem.Checked = true;
CurrentLanguage = Language.English;
}
}
private void SetLanguage(Language language, CultureInfo languageShortForm)
{
CultureInfoDisplayItem cidi = (CultureInfoDisplayItem)new CultureInfoDisplayItem(language.ToString(), languageShortForm);
FormLanguageSwitchSingleton.Instance.ChangeLanguage(this, cidi.CultureInfo);
Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(languageShortForm.ToString());
ChangeLanguage(languageShortForm.ToString());
switch (language)
{
case Language.German:
germanToolStripMenuItem.Checked = true;
englishToolStripMenuItem.Checked = false;
break;
case Language.English:
germanToolStripMenuItem.Checked = false;
englishToolStripMenuItem.Checked = true;
break;
default:
germanToolStripMenuItem.Checked = true;
englishToolStripMenuItem.Checked = false;
break;
}
}
private void ChangeLanguage(string lang)
{
Thread.CurrentThread.CurrentUICulture = new
System.Globalization.CultureInfo(lang);
ComponentResourceManager resources = new ComponentResourceManager(typeof(Form1));
resources.ApplyResources(this, "$this");
ApplyResources(resources, this.Controls);
}
private void ApplyResources(ComponentResourceManager resources, Control.ControlCollection ctls)
{
//all controls
foreach (Control ctl in ctls)
{
resources.ApplyResources(ctl, ctl.Name);
ApplyResources(resources, ctl.Controls);
}
//the menu bar and its items
foreach (ToolStripItem item in menuStrip.Items)
{
if (item is ToolStripDropDownItem)
{
resources.ApplyResources(item, item.Name);
foreach (ToolStripItem dropDownItem in ((ToolStripDropDownItem)item).DropDownItems)
{
resources.ApplyResources(dropDownItem, dropDownItem.Name);
}
}
}
}
#endregion
public Form1()
{
SetProgramInfo();
InitializeComponent();
// Systemsprache auslesen und Programmsprache setzen oder ...
SetLanguageToSystemLanguage();
// Deutsch als Programmsprache setzen
//SetLanguage("Deutsch", CultureInfo.GetCultureInfo("de"));
////////////////////////////////////////////////////////////
//TODO: Ab hier kommt der Code
}
private void Form1_Load(object sender, EventArgs e)
{
textBoxDirectory.Text = String.Empty;
textBoxExtension.Text = fileExtensionAll;
textBoxSearchFor.Text = String.Empty;
textBoxReplaceThrough.Text = String.Empty;
}
#region Surface
#region Menu
#region Action
private void previewToolStripMenuItem_Click(object sender, EventArgs e)
{
Convert(true);
}
private void convertToolStripMenuItem_Click(object sender, EventArgs e)
{
Convert(false);
}
private void cancelToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Close();
}
#endregion
#region Language
private void germanToolStripMenuItem_Click(object sender, EventArgs e)
{
SetLanguage(Language.German, CultureInfo.GetCultureInfo("de"));
CurrentLanguage = Language.German;
}
private void englishToolStripMenuItem_Click_1(object sender, EventArgs e)
{
SetLanguage(Language.English, CultureInfo.GetCultureInfo("en"));
CurrentLanguage = Language.English;
}
#endregion
#region Help
private void helpToolStripMenuItem1_Click(object sender, EventArgs e)
{
try
{
OpenHelpFile.Open(CurrentLanguage.ToString()); //Hier die Sprache übergeben in der die Hilfe aufgerufen werden soll
}
catch (FileNotFoundException)
{
MessageBox.Show(AppResources.msg001, AppResources.capt001, MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
catch (CannotShowHelpFileException)
{
MessageBox.Show(AppResources.msg002, AppResources.capt001, MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
catch (Exception)
{
MessageBox.Show(AppResources.msg003, AppResources.capt002, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void aboutToolStripMenuItem_Click(object sender, EventArgs e)
{
//Zeigt das 'AboutBox' Fenster an
var about = new Eugen.ESystem.Windows.Forms.AboutBox(ProgramName, ProgramVersion, Copyright, true, 530, 400);
about.ShowDialog();
}
#endregion
#endregion
#region UI
#region Directory
private void textBoxDirectory_TextChanged(object sender, EventArgs e)
{
SetDirectory();
}
private void buttonDirectory_Click(object sender, EventArgs e)
{
SetDirectoryButton();
}
#endregion
#region Convert
private void checkBoxFiles_CheckedChanged(object sender, EventArgs e)
{
if (checkBoxFiles.Checked)
{
ConvertFilesSelected(); //Wenn angewählt, dann Extensions aktiviert
}
else
{
ConvertFilesDeselected(); //Wenn abgewählt, dann Extensions deaktiviert
}
EmptyProgressbar(); //Fortschrittsanzeige auf Null setzen
}
private void checkBoxDirectories_CheckedChanged(object sender, EventArgs e)
{
EmptyProgressbar(); //Fortschrittsanzeige auf Null setzen
}
#endregion
#region Function
private void radioButtonUpperCase_CheckedChanged(object sender, EventArgs e)
{
EmptyProgressbar(); //Fortschrittsanzeige auf Null setzen
FunctionReplaceFreeDeselected();
}
private void radioButtonLowerCase_CheckedChanged(object sender, EventArgs e)
{
EmptyProgressbar(); //Fortschrittsanzeige auf Null setzen
FunctionReplaceFreeDeselected();
}
private void radioButtonProperCase_CheckedChanged(object sender, EventArgs e)
{
EmptyProgressbar(); //Fortschrittsanzeige auf Null setzen
FunctionReplaceFreeDeselected(); //Suchen und Ersetzen deaktivieren
}
private void radioButtonProperCaseLast_CheckedChanged(object sender, EventArgs e)
{
EmptyProgressbar(); //Fortschrittsanzeige auf Null setzen
FunctionReplaceFreeDeselected(); //Suchen und Ersetzen deaktivieren
}
private void radioButtonReverseCharacter_CheckedChanged(object sender, EventArgs e)
{
EmptyProgressbar(); //Fortschrittsanzeige auf Null setzen
FunctionReplaceFreeDeselected(); //Suchen und Ersetzen deaktivieren
}
private void radioButtonUnderlineToSpace_CheckedChanged(object sender, EventArgs e)
{
EmptyProgressbar(); //Fortschrittsanzeige auf Null setzen
FunctionReplaceFreeDeselected(); //Suchen und Ersetzen deaktivieren
}
private void radioButtonSpaceToUnderline_CheckedChanged(object sender, EventArgs e)
{
EmptyProgressbar(); //Fortschrittsanzeige auf Null setzen
FunctionReplaceFreeDeselected(); //Suchen und Ersetzen deaktivieren
}
private void radioButtonHyphenToSpace_CheckedChanged(object sender, EventArgs e)
{
EmptyProgressbar(); //Fortschrittsanzeige auf Null setzen
FunctionReplaceFreeDeselected(); //Suchen und Ersetzen deaktivieren
}
private void radioButtonSpaceToHyphen_CheckedChanged(object sender, EventArgs e)
{
EmptyProgressbar(); //Fortschrittsanzeige auf Null setzen
FunctionReplaceFreeDeselected(); //Suchen und Ersetzen deaktivieren
}
private void radioButtonFreeReplace_CheckedChanged(object sender, EventArgs e)
{
EmptyProgressbar(); //Fortschrittsanzeige auf Null setzen
FunctionReplaceFreeSelected(); //Suchen und Ersetzen Aktivieren
}
#endregion
#region Report
private void checkBoxSave_CheckedChanged(object sender, EventArgs e)
{
checkBoxOverwrite.Enabled = !checkBoxOverwrite.Enabled;
}
#endregion
#region Action Buttons
private void buttonPreview_Click(object sender, EventArgs e)
{
Convert(true);
}
private void buttonConvert_Click(object sender, EventArgs e)
{
Convert(false);
}
private void buttonCancel_Click(object sender, EventArgs e)
{
this.Close();
}
#endregion
#endregion
#endregion
#region Global varibles
const string defaultDir = @"C:\";
const string fileExtensionAll = ".*";
string directory = "";
private bool Preview { get; set; }
private string Directory { get; set; }
public bool DirectoryChecked { get; set; }
public bool SubDirectoriesChecked { get; set; }
public bool SaveChecked { get; set; }
public bool OverwriteReportChecked { get; set; }
#endregion
#region Methodes
private void Convert(bool preview)
{
EmptyProgressbar(); //Fortschrittsanzeige auf Null setzen
if (System.IO.Directory.Exists(textBoxDirectory.Text))
{
Preview = preview;
Directory = textBoxDirectory.Text;
//Nur Starten wenn der BackgroundWorker nicht bereits läuft
if (!backgroundWorker.IsBusy)
{
//Startet den BackgroundWorker
backgroundWorker.RunWorkerAsync();
//Erlaubt das Reporten
backgroundWorker.WorkerReportsProgress = true;
}
}
else
{
//'Text kann nicht umgewandelt werden, weil ein ungültiges Verzeichnis angegeben wurde. Bitte ein gültiges Verzeichnis angeben.'
MessageBox.Show(AppResources.msg004, AppResources.capt002, MessageBoxButtons.OK);
}
}
private void SetDirectory()
{
EmptyProgressbar(); //Fortschrittsanzeige auf Null setzen
directory = textBoxDirectory.Text;
}
private void SetDirectoryButton()
{
EmptyProgressbar(); //Fortschrittsanzeige auf Null setzen
FolderBrowserDialog objDialog = new FolderBrowserDialog();
objDialog.Description = AppResources.dlg001; //'Wähle Verzeichnis'
objDialog.SelectedPath = defaultDir; // Vorgabe Pfad (und danach der gewählte Pfad)
DialogResult objResult = objDialog.ShowDialog(this);
if (objResult == DialogResult.OK)
{
directory = objDialog.SelectedPath;
}
textBoxDirectory.Text = directory;
}
private void EmptyProgressbar()
{
progressBarStatus.Value = 0; //Fortschrittsanzeige auf Null setzen
}
private void ConvertFilesSelected()
{
labelExtension.Enabled = true;
textBoxExtension.Enabled = true;
}
private void ConvertFilesDeselected()
{
labelExtension.Enabled = false;
textBoxExtension.Enabled = false;
textBoxExtension.Text = fileExtensionAll;
}
private void FunctionReplaceFreeSelected()
{
labelSearchFor.Enabled = true;
textBoxSearchFor.Enabled = true;
labelReplaceThrough.Enabled = true;
textBoxReplaceThrough.Enabled = true;
}
private void FunctionReplaceFreeDeselected()
{
labelSearchFor.Enabled = false;
textBoxSearchFor.Enabled = false;
labelReplaceThrough.Enabled = false;
textBoxReplaceThrough.Enabled = false;
textBoxSearchFor.Text = string.Empty;
textBoxReplaceThrough.Text = string.Empty;
}
private void ProtocolSaveSelected()
{
checkBoxOverwrite.Enabled = true;
}
private void ProtocolSaveDeselected()
{
checkBoxOverwrite.Enabled = false;
}
#endregion
#region Background Worker
private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
EmptyProgressbar(); //Fortschrittsanzeige auf Null setzen
var af = new AllFiles(textBoxDirectory.Text, textBoxExtension.Text, checkBoxSubdirectories.Checked);
var ad = new AllDirectories(textBoxDirectory.Text, checkBoxSubdirectories.Checked);
List fileList = new List();
List directoryList = new List();
//Daten zählen
int numberOfFiles = 0;
int numberOfDirectories = 0;
int numberOfDatas = 0;
if (checkBoxFiles.Checked)
{
numberOfFiles = af.Lenght();
}
if (checkBoxDirectories.Checked)
{
numberOfDirectories = ad.Lenght();
}
numberOfDatas = numberOfFiles + numberOfDirectories;
//TODO:
//MessageBox.Show("Anzahl Dateien: " + numberOfFiles + "\n\rAnzahl Verzeichnisse: " + numberOfDirectories + "\n\rAnzahl Daten: " + numberOfDatas);
//Dateiliste erstellen
fileList = af.GetFileList();
//Verzeichnisliste erstellen
directoryList = ad.GetDirectoryList();
}
private void backgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
//Ändert den Wert in der ProgressBar durch den BackgroundWorker
if (e.ProgressPercentage < 0)
{
progressBarStatus.Value = 0;
}
else if (e.ProgressPercentage > 100)
{
progressBarStatus.Value = 100;
}
else
{
progressBarStatus.Value = e.ProgressPercentage;
}
}
private void backgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
//'Umbenennen erfolgreich abgeschlossen.'
MessageBox.Show(AppResources.msg005, AppResources.capt003, MessageBoxButtons.OK);
}
#endregion
}
}