using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using Eugen.ESystem.Windows.Forms;
namespace SearchFindReplace
{
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 = ((AssemblyCopyrightAttribute)attributes[0]).Copyright;
//return startYear.Remove(0, startYear.LastIndexOf(" ") + 1);
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 String.Concat(((AssemblyCopyrightAttribute)attributes[0]).Copyright, "-", currentYear);
return ((AssemblyCopyrightAttribute)attributes[0]).Copyright.Replace(startYear, String.Concat(startYear, "-", currentYear));
}
}
#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(); //Name, Version und Copyright setzen
InitializeComponent();
//Systemsprache auslesen und Programmsprache setzen oder ...
if (Thread.CurrentThread.CurrentUICulture.TwoLetterISOLanguageName == "de")
{
SetLanguage("Deutsch", CultureInfo.GetCultureInfo("de"));
}
else
{
SetLanguage("English", CultureInfo.GetCultureInfo("en"));
}
//... oder Programmsprache definitiv auf "Deutsch" setzen
SetLanguage("Deutsch", CultureInfo.GetCultureInfo("de"));
//Dll-Informationen laden
LoadDllInfo();
}
private void SetLanguage(string language, CultureInfo languageShortForm)
{
CultureInfoDisplayItem cidi = (CultureInfoDisplayItem)new CultureInfoDisplayItem(language, languageShortForm);
FormLanguageSwitchSingleton.Instance.ChangeLanguage(this, cidi.CultureInfo);
Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(languageShortForm.ToString());
ChangeLanguage(languageShortForm.ToString());
}
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);
}
}
}
}
private void MarkCurrentLanguage()
{
deutschToolStripMenuItem.Checked = !deutschToolStripMenuItem.Checked;
englischToolStripMenuItem.Checked = !englischToolStripMenuItem.Checked;
if (radioButtonGerman.Checked)
{
radioButtonEnglish.Checked = true;
}
else
{
radioButtonGerman.Checked = true;
}
}
private void LoadDllInfo()
{
string dllInfo = "";
dllInfo = String.Concat(FormLanguageSwitchSingleton.DllName, ": ", FormLanguageSwitchSingleton.DllVersion, "\n\r", FormLanguageSwitchSingleton.Copyright, "\n\r");
dllInfo = String.Concat(dllInfo, Search.DllName, ": ", Search.DllVersion, "\n\r", Search.Copyright, "\n\r");
dllInfo = String.Concat(dllInfo, Replace.DllName, ": ", Replace.DllVersion, "\n\r", Replace.Copyright);
labelDllInfo.Text = dllInfo;
labelDllInfo.Refresh();
}
private void buttonCheckLanguage_Click(object sender, EventArgs e)
{
MessageBox.Show(String.Concat(Resources.mbt000text, Thread.CurrentThread.CurrentUICulture.TwoLetterISOLanguageName), Resources.mbt000caption, MessageBoxButtons.OK, MessageBoxIcon.Information);
}
private void radioButtonGerman_CheckedChanged(object sender, EventArgs e)
{
SetLanguage("Deutsch", CultureInfo.GetCultureInfo("de"));
LoadDllInfo();
}
private void radioButtonEnglish_CheckedChanged(object sender, EventArgs e)
{
SetLanguage("Englisch", CultureInfo.GetCultureInfo("en"));
LoadDllInfo();
}
private void deutschToolStripMenuItem1_Click(object sender, EventArgs e)
{
SetLanguage("Deutsch", CultureInfo.GetCultureInfo("de"));
MarkCurrentLanguage();
LoadDllInfo();
}
private void englischToolStripMenuItem_Click(object sender, EventArgs e)
{
SetLanguage("Englisch", CultureInfo.GetCultureInfo("en"));
MarkCurrentLanguage();
LoadDllInfo();
}
//--------------------------------------------------------------
//--- Diesen Bereich ins eigene Programm einfügen --- Anfang ---
//--------------------------------------------------------------
// Die Zeile "using Eugen.ESystem.Windows.Forms;" einfügen
// Die Verweise "SearchString" und "ReplaceString" einfügen
//--------------------------------------------------------------
private void Form1_Load(object sender, EventArgs e)
{
try
{
search1.SetSearchText(textBoxText.Text); //Text aus der Textbox übergeben
search1.RefreshDisplay += new Search.RefreshDelegate(RefreshDisplay); //Hier wird das Event abonniert
search1.InputChanged += new Search.InputChangedDelegate(InputChanged); //Hier wird das Event abonniert
replace1.SetSearchText(textBoxText.Text); //Text aus der Textbox übergeben
replace1.StringFound += new Replace.EventDelegate(RefreshDisplay); //Hier wird das Event abonniert
}
catch (IncompleteInputException)
{
MessageBox.Show("Eingabe unvollständig!");
}
catch (StringNotMatchException)
{
MessageBox.Show("Keine (weitere) Übereinstimmung gefunden!");
}
}
//Zeichnet die TextBox neu
void RefreshDisplay(int currentCursorPosition, int searchStringLenght)
{
RefreshTextBox(currentCursorPosition, searchStringLenght); //Ansicht aktualisieren
}
//Trifft zu wenn sich die Eingabe geändert hat
void InputChanged()
{
replace1.SetMoreMatch(true); //Gibt der Replace Funktion bekannt, dass es weitere Treffer gibt
}
private void RefreshTextBox(int currentCursorPosition, int searchStringLenght)
{
//Ansicht aktualisieren
textBoxText.Text = search1.GetSearchText(); //Aktuellen Text zuweisen
textBoxText.Focus(); //Focus auf die Textbox
textBoxText.Select(currentCursorPosition, searchStringLenght); //Suchstring in der Textbox selektieren
textBoxText.Refresh();
}
//--------------------------------------------------------------
//--- Diesen Bereich ins eigene Programm einfügen --- Ende ---
//--------------------------------------------------------------
}
}