using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Drawing; using System.IO; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using Eugen.ESystem; using Eugen.ESystem.IO; using Eugen.ESystem.Windows.Forms; namespace CorrectDateInCopyright { public partial class Form1 : Form { #region Version und Copyright // Version und Copyright string programName = Path.GetFileNameWithoutExtension(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase); //Den Programmnamen auslesen string programVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString(); static object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCopyrightAttribute), false); 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); } 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 Programm-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 public Form1() { SetProgramInfo(); InitializeComponent(); } private void startToolStripMenuItem_Click(object sender, EventArgs e) { Start(); //Programmablauf starten } #region Surface private void hilfeToolStripMenuItem1_Click(object sender, EventArgs e) { //Hilfedatei aufrufen try { OpenHelpFile.Open("german"); //Hier die Sprache übergeben in der die Hilfe aufgerufen werden soll } catch (FileNotFoundException) { MessageBox.Show("Die Hilfe wurde nicht gefunden.", "Warnung", MessageBoxButtons.OK, MessageBoxIcon.Warning); } catch (CannotShowHelpFileException) { MessageBox.Show("Die Hilfe kann nicht angezeigt werden.", "Warnung", MessageBoxButtons.OK, MessageBoxIcon.Warning); } catch (Exception) { MessageBox.Show("Es ist ein unbekannter Fehler passiert!", "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void überToolStripMenuItem_Click(object sender, EventArgs e) { //Programminformation aufrufen var about = new AboutBox(ProgramName, ProgramVersion, Copyright, true, 530, 420); about.ShowDialog(); } private void buttonStartupDir_Click(object sender, EventArgs e) { //Startverzeichnis auswählen buttonShowLogfile.Enabled = false; ClearStatus(); using (var sud = new FolderBrowserDialog()) { DialogResult result = sud.ShowDialog(); if (result == DialogResult.OK && !string.IsNullOrWhiteSpace(sud.SelectedPath)) { textBoxStartupfolder.Text = sud.SelectedPath; StartupFolder = sud.SelectedPath; } } SetStartButtonDisplay(); } private void textBoxStartupfolder_TextChanged(object sender, EventArgs e) { StartupFolder = textBoxStartupfolder.Text; //Startverzeichnis SetStartButtonDisplay(); } private void textBoxStartupfolder_MouseClick(object sender, MouseEventArgs e) { ClearStatus(); } private void buttonLogfileName_Click(object sender, EventArgs e) { //Logdatei auswählen buttonShowLogfile.Enabled = false; ClearStatus(); using (SaveFileDialog sfd = new SaveFileDialog()) { sfd.Filter = "log Datei (All files (*.*)|*.*|*.log)|*.log"; sfd.FilterIndex = 2; sfd.RestoreDirectory = true; //sfd.OverwritePrompt = false; if (sfd.ShowDialog() == DialogResult.OK) { LogFile = sfd.FileName; textBoxLogfileName.Text = sfd.FileName; } } LogPath = String.Concat(System.IO.Path.GetDirectoryName(LogFile), "\\"); FileName = System.IO.Path.GetFileName(LogFile); SetStartButtonDisplay(); } private void textBoxLogfileName_TextChanged(object sender, EventArgs e) { LogFile = textBoxLogfileName.Text; //Logdatei LogPath = String.Concat(System.IO.Path.GetDirectoryName(LogFile), "\\"); FileName = System.IO.Path.GetFileName(LogFile); SetStartButtonDisplay(); } private void textBoxLogfileName_MouseClick(object sender, MouseEventArgs e) { ClearStatus(); } private void buttonStart_Click(object sender, EventArgs e) { Start(); //Programmablauf starten } private void buttonShowLogfile_Click(object sender, EventArgs e) { ClearStatus(); //Statusbar zurücksetzen ShowLogfile(); //Logdatei anzeigen } private void buttonCancel_Click(object sender, EventArgs e) { this.Close(); } #endregion private string StartupFolder { set; get; } private string LogFile { set; get; } private string LogPath { set; get; } private string FileName { set; get; } private List Files { set; get; } private int NumberOfFiles { set; get; } private void Start() { //Alle 'AssemblyInfo.cs'aus dem Startverzeichnis einlesen toolStripProgressBar.Style = ProgressBarStyle.Marquee; toolStripProgressBar.MarqueeAnimationSpeed = 30; toolStripStatusLabel.Text = "Suche nach Vorkommen von AssemblyInfo.cs"; statusStrip.Refresh(); //Startknopf deaktivieren buttonStart.Enabled = false; //Alle 'AssemblyInfo.cs' suchen und bearbeiten backgroundWorkerSearch.WorkerSupportsCancellation = true; backgroundWorkerSearch.RunWorkerAsync(); } private void backgroundWorkerSearch_DoWork(object sender, DoWorkEventArgs e) { Files = ReadAllFiles(StartupFolder); NumberOfFiles = Files.Count; toolStripStatusLabel.Text = String.Concat(NumberOfFiles, " Vorkommen von AssemblyInfo.cs wurden gefunden"); //Existierende Logdatei löschen if (File.Exists(LogFile)) { File.Delete(LogFile); } //Logdatei anlegen string header = "--------------------------------------------------------------------------------\n--- Correct date in Copyright ---\n--------------------------------------------------------------------------------"; var log = new LogWriter(LogPath, FileName); log.WriteMessage(header, LogWriter.Time.NoWrite); log.WriteMessage(String.Concat("Zu bearbeitende Dateien: ", NumberOfFiles.ToString())); for (int i = 0; i < NumberOfFiles; i++) { toolStripStatusLabel.Text = String.Concat("Vorkommen ", i + 1, " von ", NumberOfFiles, " wird bearbeitet"); log.WriteMessage(String.Concat("Bearbeite Datei: ", Files[i])); //Copyright korrigieren CorrectDateInLine.LogFile = LogFile; CorrectDateInLine.Correct(Files[i]); backgroundWorkerSearch.ReportProgress((int)100 / NumberOfFiles * (i + 1)); //Fortschrittsbalken aktualisieren log.WriteMessage(" Datei erfolgreich bearbeitet"); //Logdatei schreiben } backgroundWorkerSearch.CancelAsync(); } private void backgroundWorkerSearch_ProgressChanged(object sender, ProgressChangedEventArgs e) { //ProgressBar.Style von Laufbalken auf Prozentanzeige umschalten if (toolStripProgressBar.Style != ProgressBarStyle.Continuous) { toolStripProgressBar.Style = ProgressBarStyle.Continuous; toolStripProgressBar.Value = 0; statusStrip.Refresh(); } toolStripProgressBar.Value = e.ProgressPercentage; statusStrip.Refresh(); } private void backgroundWorkerSearch_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { toolStripStatusLabel.Text = String.Concat(NumberOfFiles, " Dateien wurden erfolgreich bearbeitet"); buttonStart.Enabled = true; buttonShowLogfile.Enabled = true; } private List ReadAllFiles(string startupfolder) { List files = new List(); foreach (var item in Directory.GetFiles(StartupFolder, "AssemblyInfo.cs", SearchOption.AllDirectories)) { files.Add(item); } return files; } private void SetStartButtonDisplay() { if (!String.IsNullOrEmpty(StartupFolder) & !String.IsNullOrEmpty(LogFile)) { buttonStart.Enabled = true; startToolStripMenuItem.Enabled = true; } else { buttonStart.Enabled = false; startToolStripMenuItem.Enabled = false; } } private void ClearStatus() { toolStripProgressBar.Style = ProgressBarStyle.Marquee; toolStripProgressBar.MarqueeAnimationSpeed = 0; statusStrip.Refresh(); toolStripStatusLabel.Text = "Startverzeichnis und Logdatei definieren"; } private void ShowLogfile() { //Logdatei anzeigen if (!ShowTextFile.Show(LogFile)) { MessageBox.Show("Es wurde keine Logdatei gefunden", "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } }