diff --git a/GreenshotLanguageEditor/EnvironmentInfo.cs b/GreenshotLanguageEditor/EnvironmentInfo.cs
new file mode 100644
index 000000000..275c216a1
--- /dev/null
+++ b/GreenshotLanguageEditor/EnvironmentInfo.cs
@@ -0,0 +1,703 @@
+/*
+ * Greenshot - a free and open source screenshot tool
+ * Copyright (C) 2007-2012 Thomas Braun, Jens Klingen, Robin Krom
+ *
+ * For more information see: http://getgreenshot.org/
+ * The Greenshot project is hosted on Sourceforge: http://sourceforge.net/projects/greenshot/
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+using System;
+using System.IO;
+using System.Reflection;
+using System.Runtime.InteropServices;
+using System.Text;
+using System.Windows.Forms;
+
+
+namespace Greenshot.Helpers {
+ ///
+ /// Description of EnvironmentInfo.
+ ///
+ public static class EnvironmentInfo {
+ private static bool? isWindows = null;
+
+ public static bool IsWindows {
+ get {
+ if (isWindows.HasValue) {
+ return isWindows.Value;
+ }
+ isWindows = Environment.OSVersion.Platform.ToString().StartsWith("Windows");
+ return isWindows.Value;
+ }
+ }
+
+ public static string EnvironmentToString(bool newline) {
+ StringBuilder environment = new StringBuilder();
+ environment.Append("Software version: " + Application.ProductVersion);
+ environment.Append(" (" + OSInfo.Bits +" bit)");
+
+ if (newline) {
+ environment.AppendLine();
+ } else {
+ environment.Append(", ");
+ }
+ environment.Append(".NET runtime version: " + Environment.Version);
+ if (newline) {
+ environment.AppendLine();
+ } else {
+ environment.Append(", ");
+ }
+ environment.Append("Time: " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss zzz"));
+ if (newline) {
+ environment.AppendLine();
+ } else {
+ environment.Append(", ");
+ }
+
+ if (IsWindows) {
+ environment.Append(String.Format("OS: {0} {1} {2} x{3} modus Version = {4}", OSInfo.Name, OSInfo.Edition, OSInfo.ServicePack, OSInfo.Bits, OSInfo.VersionString));
+ if (newline) {
+ environment.AppendLine();
+ } else {
+ environment.Append(", ");
+ }
+ } else {
+ environment.Append("OS: " + Environment.OSVersion.Platform.ToString());
+ if (newline) {
+ environment.AppendLine();
+ } else {
+ environment.Append(", ");
+ }
+ }
+
+ return environment.ToString();
+ }
+
+ public static string ExceptionToString(Exception ex) {
+ if (ex == null)
+ return "null\r\n";
+
+ StringBuilder report = new StringBuilder();
+
+ report.AppendLine("Exception: " + ex.GetType().ToString());
+ report.AppendLine("Message: " + ex.Message);
+ if (ex.Data != null && ex.Data.Count > 0) {
+ report.AppendLine();
+ report.AppendLine("Additional Information:");
+ foreach(object key in ex.Data.Keys) {
+ object data = ex.Data[key];
+ if (data != null) {
+ report.AppendLine(key + " = " + data);
+ }
+ }
+ }
+ if (ex is ExternalException) {
+ // e.g. COMException
+ report.AppendLine().AppendLine("ErrorCode: 0x" + (ex as ExternalException).ErrorCode.ToString("X"));
+ }
+
+ report.AppendLine().AppendLine("Stack:").AppendLine(ex.StackTrace);
+
+ if(ex is ReflectionTypeLoadException) {
+ report.AppendLine().AppendLine("LoaderExceptions: ");
+ foreach(Exception cbE in (ex as ReflectionTypeLoadException).LoaderExceptions) {
+ report.AppendLine(cbE.Message);
+ }
+ }
+
+ if (ex.InnerException != null) {
+ report.AppendLine("--- InnerException: ---");
+ report.AppendLine(ExceptionToString(ex.InnerException));
+ }
+ return report.ToString();
+ }
+
+ public static string BuildReport(Exception exception) {
+ StringBuilder exceptionText = new StringBuilder();
+ exceptionText.AppendLine(EnvironmentInfo.EnvironmentToString(true));
+ exceptionText.AppendLine(EnvironmentInfo.ExceptionToString(exception));
+
+
+ return exceptionText.ToString();
+ }
+ }
+
+ ///
+ /// Provides detailed information about the host operating system.
+ /// Code is available at: http://www.csharp411.com/determine-windows-version-and-edition-with-c/
+ ///
+ static public class OSInfo {
+ #region BITS
+ ///
+ /// Determines if the current application is 32 or 64-bit.
+ ///
+ static public int Bits {
+ get
+ {
+ return IntPtr.Size * 8;
+ }
+ }
+ #endregion BITS
+
+ #region EDITION
+ static private string s_Edition;
+ ///
+ /// Gets the edition of the operating system running on this computer.
+ ///
+ static public string Edition {
+ get {
+ if (s_Edition != null) {
+ return s_Edition; //***** RETURN *****//
+ }
+
+ string edition = String.Empty;
+
+ OperatingSystem osVersion = Environment.OSVersion;
+ OSVERSIONINFOEX osVersionInfo = new OSVERSIONINFOEX();
+ osVersionInfo.dwOSVersionInfoSize = Marshal.SizeOf( typeof( OSVERSIONINFOEX ) );
+
+ if (GetVersionEx( ref osVersionInfo )) {
+ int majorVersion = osVersion.Version.Major;
+ int minorVersion = osVersion.Version.Minor;
+ byte productType = osVersionInfo.wProductType;
+ short suiteMask = osVersionInfo.wSuiteMask;
+
+ #region VERSION 4
+ if (majorVersion == 4)
+ {
+ if (productType == VER_NT_WORKSTATION)
+ {
+ // Windows NT 4.0 Workstation
+ edition = "Workstation";
+ }
+ else if (productType == VER_NT_SERVER)
+ {
+ if ((suiteMask & VER_SUITE_ENTERPRISE) != 0)
+ {
+ // Windows NT 4.0 Server Enterprise
+ edition = "Enterprise Server";
+ }
+ else
+ {
+ // Windows NT 4.0 Server
+ edition = "Standard Server";
+ }
+ }
+ }
+ #endregion VERSION 4
+
+ #region VERSION 5
+ else if (majorVersion == 5)
+ {
+ if (productType == VER_NT_WORKSTATION)
+ {
+ if ((suiteMask & VER_SUITE_PERSONAL) != 0)
+ {
+ // Windows XP Home Edition
+ edition = "Home";
+ }
+ else
+ {
+ // Windows XP / Windows 2000 Professional
+ edition = "Professional";
+ }
+ }
+ else if (productType == VER_NT_SERVER)
+ {
+ if (minorVersion == 0)
+ {
+ if ((suiteMask & VER_SUITE_DATACENTER) != 0)
+ {
+ // Windows 2000 Datacenter Server
+ edition = "Datacenter Server";
+ }
+ else if ((suiteMask & VER_SUITE_ENTERPRISE) != 0)
+ {
+ // Windows 2000 Advanced Server
+ edition = "Advanced Server";
+ }
+ else
+ {
+ // Windows 2000 Server
+ edition = "Server";
+ }
+ }
+ else
+ {
+ if ((suiteMask & VER_SUITE_DATACENTER) != 0)
+ {
+ // Windows Server 2003 Datacenter Edition
+ edition = "Datacenter";
+ }
+ else if ((suiteMask & VER_SUITE_ENTERPRISE) != 0)
+ {
+ // Windows Server 2003 Enterprise Edition
+ edition = "Enterprise";
+ }
+ else if ((suiteMask & VER_SUITE_BLADE) != 0)
+ {
+ // Windows Server 2003 Web Edition
+ edition = "Web Edition";
+ }
+ else
+ {
+ // Windows Server 2003 Standard Edition
+ edition = "Standard";
+ }
+ }
+ }
+ }
+ #endregion VERSION 5
+
+ #region VERSION 6
+ else if (majorVersion == 6)
+ {
+ int ed;
+ if (GetProductInfo( majorVersion, minorVersion, osVersionInfo.wServicePackMajor, osVersionInfo.wServicePackMinor, out ed ))
+ {
+ switch (ed)
+ {
+ case PRODUCT_BUSINESS:
+ edition = "Business";
+ break;
+ case PRODUCT_BUSINESS_N:
+ edition = "Business N";
+ break;
+ case PRODUCT_CLUSTER_SERVER:
+ edition = "HPC Edition";
+ break;
+ case PRODUCT_DATACENTER_SERVER:
+ edition = "Datacenter Server";
+ break;
+ case PRODUCT_DATACENTER_SERVER_CORE:
+ edition = "Datacenter Server (core installation)";
+ break;
+ case PRODUCT_ENTERPRISE:
+ edition = "Enterprise";
+ break;
+ case PRODUCT_ENTERPRISE_N:
+ edition = "Enterprise N";
+ break;
+ case PRODUCT_ENTERPRISE_SERVER:
+ edition = "Enterprise Server";
+ break;
+ case PRODUCT_ENTERPRISE_SERVER_CORE:
+ edition = "Enterprise Server (core installation)";
+ break;
+ case PRODUCT_ENTERPRISE_SERVER_CORE_V:
+ edition = "Enterprise Server without Hyper-V (core installation)";
+ break;
+ case PRODUCT_ENTERPRISE_SERVER_IA64:
+ edition = "Enterprise Server for Itanium-based Systems";
+ break;
+ case PRODUCT_ENTERPRISE_SERVER_V:
+ edition = "Enterprise Server without Hyper-V";
+ break;
+ case PRODUCT_HOME_BASIC:
+ edition = "Home Basic";
+ break;
+ case PRODUCT_HOME_BASIC_N:
+ edition = "Home Basic N";
+ break;
+ case PRODUCT_HOME_PREMIUM:
+ edition = "Home Premium";
+ break;
+ case PRODUCT_HOME_PREMIUM_N:
+ edition = "Home Premium N";
+ break;
+ case PRODUCT_HYPERV:
+ edition = "Microsoft Hyper-V Server";
+ break;
+ case PRODUCT_MEDIUMBUSINESS_SERVER_MANAGEMENT:
+ edition = "Windows Essential Business Management Server";
+ break;
+ case PRODUCT_MEDIUMBUSINESS_SERVER_MESSAGING:
+ edition = "Windows Essential Business Messaging Server";
+ break;
+ case PRODUCT_MEDIUMBUSINESS_SERVER_SECURITY:
+ edition = "Windows Essential Business Security Server";
+ break;
+ case PRODUCT_SERVER_FOR_SMALLBUSINESS:
+ edition = "Windows Essential Server Solutions";
+ break;
+ case PRODUCT_SERVER_FOR_SMALLBUSINESS_V:
+ edition = "Windows Essential Server Solutions without Hyper-V";
+ break;
+ case PRODUCT_SMALLBUSINESS_SERVER:
+ edition = "Windows Small Business Server";
+ break;
+ case PRODUCT_STANDARD_SERVER:
+ edition = "Standard Server";
+ break;
+ case PRODUCT_STANDARD_SERVER_CORE:
+ edition = "Standard Server (core installation)";
+ break;
+ case PRODUCT_STANDARD_SERVER_CORE_V:
+ edition = "Standard Server without Hyper-V (core installation)";
+ break;
+ case PRODUCT_STANDARD_SERVER_V:
+ edition = "Standard Server without Hyper-V";
+ break;
+ case PRODUCT_STARTER:
+ edition = "Starter";
+ break;
+ case PRODUCT_STORAGE_ENTERPRISE_SERVER:
+ edition = "Enterprise Storage Server";
+ break;
+ case PRODUCT_STORAGE_EXPRESS_SERVER:
+ edition = "Express Storage Server";
+ break;
+ case PRODUCT_STORAGE_STANDARD_SERVER:
+ edition = "Standard Storage Server";
+ break;
+ case PRODUCT_STORAGE_WORKGROUP_SERVER:
+ edition = "Workgroup Storage Server";
+ break;
+ case PRODUCT_UNDEFINED:
+ edition = "Unknown product";
+ break;
+ case PRODUCT_ULTIMATE:
+ edition = "Ultimate";
+ break;
+ case PRODUCT_ULTIMATE_N:
+ edition = "Ultimate N";
+ break;
+ case PRODUCT_WEB_SERVER:
+ edition = "Web Server";
+ break;
+ case PRODUCT_WEB_SERVER_CORE:
+ edition = "Web Server (core installation)";
+ break;
+ }
+ }
+ }
+ #endregion VERSION 6
+ }
+
+ s_Edition = edition;
+ return edition;
+ }
+ }
+ #endregion EDITION
+
+ #region NAME
+ static private string s_Name;
+ ///
+ /// Gets the name of the operating system running on this computer.
+ ///
+ static public string Name
+ {
+ get
+ {
+ if (s_Name != null)
+ return s_Name; //***** RETURN *****//
+
+ string name = "unknown";
+
+ OperatingSystem osVersion = Environment.OSVersion;
+ OSVERSIONINFOEX osVersionInfo = new OSVERSIONINFOEX();
+ osVersionInfo.dwOSVersionInfoSize = Marshal.SizeOf( typeof( OSVERSIONINFOEX ) );
+
+ if (GetVersionEx( ref osVersionInfo ))
+ {
+ int majorVersion = osVersion.Version.Major;
+ int minorVersion = osVersion.Version.Minor;
+
+ switch (osVersion.Platform)
+ {
+ case PlatformID.Win32Windows:
+ {
+ if (majorVersion == 4)
+ {
+ string csdVersion = osVersionInfo.szCSDVersion;
+ switch (minorVersion)
+ {
+ case 0:
+ if (csdVersion == "B" || csdVersion == "C")
+ name = "Windows 95 OSR2";
+ else
+ name = "Windows 95";
+ break;
+ case 10:
+ if (csdVersion == "A")
+ name = "Windows 98 Second Edition";
+ else
+ name = "Windows 98";
+ break;
+ case 90:
+ name = "Windows Me";
+ break;
+ }
+ }
+ break;
+ }
+
+ case PlatformID.Win32NT:
+ {
+ byte productType = osVersionInfo.wProductType;
+
+ switch (majorVersion)
+ {
+ case 3:
+ name = "Windows NT 3.51";
+ break;
+ case 4:
+ switch (productType)
+ {
+ case 1:
+ name = "Windows NT 4.0";
+ break;
+ case 3:
+ name = "Windows NT 4.0 Server";
+ break;
+ }
+ break;
+ case 5:
+ switch (minorVersion)
+ {
+ case 0:
+ name = "Windows 2000";
+ break;
+ case 1:
+ name = "Windows XP";
+ break;
+ case 2:
+ name = "Windows Server 2003";
+ break;
+ }
+ break;
+ case 6:
+ switch (minorVersion)
+ {
+ case 0:
+ name = "Windows Vista";
+ break;
+ case 1:
+ name = "Windows 7";
+ break;
+ case 3:
+ name = "Windows Server 2008";
+ break;
+ }
+ break;
+ }
+ break;
+ }
+ }
+ }
+
+ s_Name = name;
+ return name;
+ }
+ }
+ #endregion NAME
+
+ #region PINVOKE
+ #region GET
+ #region PRODUCT INFO
+ [DllImport( "Kernel32.dll" )]
+ internal static extern bool GetProductInfo(
+ int osMajorVersion,
+ int osMinorVersion,
+ int spMajorVersion,
+ int spMinorVersion,
+ out int edition );
+ #endregion PRODUCT INFO
+
+ #region VERSION
+ [DllImport( "kernel32.dll" )]
+ private static extern bool GetVersionEx( ref OSVERSIONINFOEX osVersionInfo );
+ #endregion VERSION
+ #endregion GET
+
+ #region OSVERSIONINFOEX
+ [StructLayout( LayoutKind.Sequential )]
+ private struct OSVERSIONINFOEX
+ {
+ public int dwOSVersionInfoSize;
+ public int dwMajorVersion;
+ public int dwMinorVersion;
+ public int dwBuildNumber;
+ public int dwPlatformId;
+ [MarshalAs( UnmanagedType.ByValTStr, SizeConst = 128 )]
+ public string szCSDVersion;
+ public short wServicePackMajor;
+ public short wServicePackMinor;
+ public short wSuiteMask;
+ public byte wProductType;
+ public byte wReserved;
+ }
+ #endregion OSVERSIONINFOEX
+
+ #region PRODUCT
+ private const int PRODUCT_UNDEFINED = 0x00000000;
+ private const int PRODUCT_ULTIMATE = 0x00000001;
+ private const int PRODUCT_HOME_BASIC = 0x00000002;
+ private const int PRODUCT_HOME_PREMIUM = 0x00000003;
+ private const int PRODUCT_ENTERPRISE = 0x00000004;
+ private const int PRODUCT_HOME_BASIC_N = 0x00000005;
+ private const int PRODUCT_BUSINESS = 0x00000006;
+ private const int PRODUCT_STANDARD_SERVER = 0x00000007;
+ private const int PRODUCT_DATACENTER_SERVER = 0x00000008;
+ private const int PRODUCT_SMALLBUSINESS_SERVER = 0x00000009;
+ private const int PRODUCT_ENTERPRISE_SERVER = 0x0000000A;
+ private const int PRODUCT_STARTER = 0x0000000B;
+ private const int PRODUCT_DATACENTER_SERVER_CORE = 0x0000000C;
+ private const int PRODUCT_STANDARD_SERVER_CORE = 0x0000000D;
+ private const int PRODUCT_ENTERPRISE_SERVER_CORE = 0x0000000E;
+ private const int PRODUCT_ENTERPRISE_SERVER_IA64 = 0x0000000F;
+ private const int PRODUCT_BUSINESS_N = 0x00000010;
+ private const int PRODUCT_WEB_SERVER = 0x00000011;
+ private const int PRODUCT_CLUSTER_SERVER = 0x00000012;
+ private const int PRODUCT_HOME_SERVER = 0x00000013;
+ private const int PRODUCT_STORAGE_EXPRESS_SERVER = 0x00000014;
+ private const int PRODUCT_STORAGE_STANDARD_SERVER = 0x00000015;
+ private const int PRODUCT_STORAGE_WORKGROUP_SERVER = 0x00000016;
+ private const int PRODUCT_STORAGE_ENTERPRISE_SERVER = 0x00000017;
+ private const int PRODUCT_SERVER_FOR_SMALLBUSINESS = 0x00000018;
+ private const int PRODUCT_SMALLBUSINESS_SERVER_PREMIUM = 0x00000019;
+ private const int PRODUCT_HOME_PREMIUM_N = 0x0000001A;
+ private const int PRODUCT_ENTERPRISE_N = 0x0000001B;
+ private const int PRODUCT_ULTIMATE_N = 0x0000001C;
+ private const int PRODUCT_WEB_SERVER_CORE = 0x0000001D;
+ private const int PRODUCT_MEDIUMBUSINESS_SERVER_MANAGEMENT = 0x0000001E;
+ private const int PRODUCT_MEDIUMBUSINESS_SERVER_SECURITY = 0x0000001F;
+ private const int PRODUCT_MEDIUMBUSINESS_SERVER_MESSAGING = 0x00000020;
+ private const int PRODUCT_SERVER_FOR_SMALLBUSINESS_V = 0x00000023;
+ private const int PRODUCT_STANDARD_SERVER_V = 0x00000024;
+ private const int PRODUCT_ENTERPRISE_SERVER_V = 0x00000026;
+ private const int PRODUCT_STANDARD_SERVER_CORE_V = 0x00000028;
+ private const int PRODUCT_ENTERPRISE_SERVER_CORE_V = 0x00000029;
+ private const int PRODUCT_HYPERV = 0x0000002A;
+ #endregion PRODUCT
+
+ #region VERSIONS
+ private const int VER_NT_WORKSTATION = 1;
+ private const int VER_NT_DOMAIN_CONTROLLER = 2;
+ private const int VER_NT_SERVER = 3;
+ private const int VER_SUITE_SMALLBUSINESS = 1;
+ private const int VER_SUITE_ENTERPRISE = 2;
+ private const int VER_SUITE_TERMINAL = 16;
+ private const int VER_SUITE_DATACENTER = 128;
+ private const int VER_SUITE_SINGLEUSERTS = 256;
+ private const int VER_SUITE_PERSONAL = 512;
+ private const int VER_SUITE_BLADE = 1024;
+ #endregion VERSIONS
+ #endregion PINVOKE
+
+ #region SERVICE PACK
+ ///
+ /// Gets the service pack information of the operating system running on this computer.
+ ///
+ static public string ServicePack
+ {
+ get
+ {
+ string servicePack = String.Empty;
+ OSVERSIONINFOEX osVersionInfo = new OSVERSIONINFOEX();
+
+ osVersionInfo.dwOSVersionInfoSize = Marshal.SizeOf( typeof( OSVERSIONINFOEX ) );
+
+ if (GetVersionEx( ref osVersionInfo ))
+ {
+ servicePack = osVersionInfo.szCSDVersion;
+ }
+
+ return servicePack;
+ }
+ }
+ #endregion SERVICE PACK
+
+ #region VERSION
+ #region BUILD
+ ///
+ /// Gets the build version number of the operating system running on this computer.
+ ///
+ public static int BuildVersion {
+ get {
+ return Environment.OSVersion.Version.Build;
+ }
+ }
+ #endregion BUILD
+
+ #region FULL
+ #region STRING
+ ///
+ /// Gets the full version string of the operating system running on this computer.
+ ///
+ static public string VersionString
+ {
+ get
+ {
+ return Environment.OSVersion.Version.ToString();
+ }
+ }
+ #endregion STRING
+
+ #region VERSION
+ ///
+ /// Gets the full version of the operating system running on this computer.
+ ///
+ static public Version Version
+ {
+ get
+ {
+ return Environment.OSVersion.Version;
+ }
+ }
+ #endregion VERSION
+ #endregion FULL
+
+ #region MAJOR
+ ///
+ /// Gets the major version number of the operating system running on this computer.
+ ///
+ static public int MajorVersion
+ {
+ get
+ {
+ return Environment.OSVersion.Version.Major;
+ }
+ }
+ #endregion MAJOR
+
+ #region MINOR
+ ///
+ /// Gets the minor version number of the operating system running on this computer.
+ ///
+ static public int MinorVersion
+ {
+ get
+ {
+ return Environment.OSVersion.Version.Minor;
+ }
+ }
+ #endregion MINOR
+
+ #region REVISION
+ ///
+ /// Gets the revision version number of the operating system running on this computer.
+ ///
+ static public int RevisionVersion
+ {
+ get
+ {
+ return Environment.OSVersion.Version.Revision;
+ }
+ }
+ #endregion REVISION
+ #endregion VERSION
+ }
+}
diff --git a/GreenshotLanguageEditor/ErrorWindow.xaml b/GreenshotLanguageEditor/ErrorWindow.xaml
new file mode 100644
index 000000000..b1fc924dd
--- /dev/null
+++ b/GreenshotLanguageEditor/ErrorWindow.xaml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/GreenshotLanguageEditor/ErrorWindow.xaml.cs b/GreenshotLanguageEditor/ErrorWindow.xaml.cs
new file mode 100644
index 000000000..b5ef9a962
--- /dev/null
+++ b/GreenshotLanguageEditor/ErrorWindow.xaml.cs
@@ -0,0 +1,33 @@
+/*
+ * Created by SharpDevelop.
+ * User: jens
+ * Date: 02.10.2012
+ * Time: 22:52
+ *
+ * To change this template use Tools | Options | Coding | Edit Standard Headers.
+ */
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+
+namespace GreenshotLanguageEditor
+{
+ ///
+ /// Interaction logic for Window1.xaml
+ ///
+ public partial class ErrorWindow : Window
+ {
+ public ErrorWindow(string msg)
+ {
+ InitializeComponent();
+
+ this.textBox.Text = msg;
+ }
+ }
+}
\ No newline at end of file
diff --git a/GreenshotLanguageEditor/GreenshotLanguageEditor.csproj b/GreenshotLanguageEditor/GreenshotLanguageEditor.csproj
index d8c53abcb..eef8bd6b4 100644
--- a/GreenshotLanguageEditor/GreenshotLanguageEditor.csproj
+++ b/GreenshotLanguageEditor/GreenshotLanguageEditor.csproj
@@ -77,6 +77,7 @@
Code
App.xaml
+
MetaEditorWindow.xaml
@@ -89,10 +90,15 @@
Code
EntriesEditorWindow.xaml
+
+ ErrorWindow.xaml
+ Code
+
+