578 lines
19 KiB
C#
578 lines
19 KiB
C#
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
|
|
/// <summary>
|
|
/// Contains the name of the program file
|
|
/// </summary>
|
|
public static string ProgramName { set; get; }
|
|
|
|
/// <summary>
|
|
/// Contains the version of the program file
|
|
/// </summary>
|
|
public static string ProgramVersion { set; get; }
|
|
|
|
/// <summary>
|
|
/// Contains the copyright notice
|
|
/// </summary>
|
|
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<string> fileList = new List<string>();
|
|
List<string> directoryList = new List<string>();
|
|
|
|
//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
|
|
}
|
|
}
|