diff --git a/Resources/Icons/ErrorLarge.png b/Resources/Icons/ErrorLarge.png new file mode 100644 index 00000000..5788df92 Binary files /dev/null and b/Resources/Icons/ErrorLarge.png differ diff --git a/Resources/Icons/Status10.png b/Resources/Icons/Status10.png index 64d5d60d..092d0987 100644 Binary files a/Resources/Icons/Status10.png and b/Resources/Icons/Status10.png differ diff --git a/Resources/Icons/Status11.png b/Resources/Icons/Status11.png index 2ce67b41..2b033bc0 100644 Binary files a/Resources/Icons/Status11.png and b/Resources/Icons/Status11.png differ diff --git a/Resources/Icons/Status12.png b/Resources/Icons/Status12.png index 0130d23a..68a477d9 100644 Binary files a/Resources/Icons/Status12.png and b/Resources/Icons/Status12.png differ diff --git a/Resources/Icons/WarningLarge.png b/Resources/Icons/WarningLarge.png new file mode 100644 index 00000000..8da19896 Binary files /dev/null and b/Resources/Icons/WarningLarge.png differ diff --git a/Source/Actions/ActionManager.cs b/Source/Actions/ActionManager.cs index 9e487d92..8f527d90 100644 --- a/Source/Actions/ActionManager.cs +++ b/Source/Actions/ActionManager.cs @@ -137,7 +137,7 @@ namespace CodeImp.DoomBuilder.Actions { string errordesc = "Error in Actions configuration on line " + cfg.ErrorLine + ": " + cfg.ErrorDescription; General.CancelAutoMapLoad(); - General.WriteLogLine("ERROR: Unable to read Actions configuration from assembly " + Path.GetFileName(asm.Location) + "!"); + General.ErrorLogger.Add(ErrorType.Error, "Unable to read Actions configuration from assembly " + Path.GetFileName(asm.Location) + "!"); General.WriteLogLine(errordesc); General.ShowErrorMessage("Unable to read Actions configuration from assembly " + Path.GetFileName(asm.Location) + "!\n" + errordesc, MessageBoxButtons.OK); } @@ -195,7 +195,7 @@ namespace CodeImp.DoomBuilder.Actions else { // Action already exists! - General.WriteLogLine("WARNING: Action '" + name + "' already exists. Action names must be unique!"); + General.ErrorLogger.Add(ErrorType.Warning, "Action '" + name + "' already exists. Action names must be unique!"); } } @@ -282,7 +282,7 @@ namespace CodeImp.DoomBuilder.Actions if(Exists(actionname)) actions[actionname].BindBegin(d); else - General.WriteLogLine("WARNING: Could not bind delegate for " + d.Method.Name + " to action \"" + a.ActionName + "\" (" + actionname + "), that action does not exist! Refer to, or edit Actions.cfg for all available application actions."); + General.ErrorLogger.Add(ErrorType.Warning, "Could not bind delegate for " + d.Method.Name + " to action \"" + a.ActionName + "\" (" + actionname + "), that action does not exist! Refer to, or edit Actions.cfg for all available application actions."); } // This binds a delegate manually @@ -297,7 +297,7 @@ namespace CodeImp.DoomBuilder.Actions if(Exists(actionname)) actions[actionname].BindEnd(d); else - General.WriteLogLine("WARNING: Could not bind delegate for " + d.Method.Name + " to action \"" + a.ActionName + "\" (" + actionname + "), that action does not exist! Refer to, or edit Actions.cfg for all available application actions."); + General.ErrorLogger.Add(ErrorType.Warning, "Could not bind delegate for " + d.Method.Name + " to action \"" + a.ActionName + "\" (" + actionname + "), that action does not exist! Refer to, or edit Actions.cfg for all available application actions."); } // This unbinds all methods marked with this attribute diff --git a/Source/Builder.csproj b/Source/Builder.csproj index cac55ec8..ccd3581a 100644 --- a/Source/Builder.csproj +++ b/Source/Builder.csproj @@ -668,6 +668,12 @@ + + Form + + + ErrorsForm.cs + @@ -780,6 +786,10 @@ Designer CustomFieldsForm.cs + + Designer + ErrorsForm.cs + Designer ScriptEditorForm.cs diff --git a/Source/BuilderModes/Interface/ErrorCheckForm.cs b/Source/BuilderModes/Interface/ErrorCheckForm.cs index ae4ad3a1..24289ebe 100644 --- a/Source/BuilderModes/Interface/ErrorCheckForm.cs +++ b/Source/BuilderModes/Interface/ErrorCheckForm.cs @@ -266,14 +266,14 @@ namespace CodeImp.DoomBuilder.BuilderModes catch(TargetInvocationException ex) { // Error! - General.WriteLogLine("ERROR: Failed to create class instance '" + t.Name + "'!"); + General.ErrorLogger.Add(ErrorType.Error, "Failed to create class instance '" + t.Name + "'!"); General.WriteLogLine(ex.InnerException.GetType().Name + ": " + ex.InnerException.Message); throw ex; } catch(Exception ex) { // Error! - General.WriteLogLine("ERROR: Failed to create class instance '" + t.Name + "'!"); + General.ErrorLogger.Add(ErrorType.Error, "Failed to create class instance '" + t.Name + "'!"); General.WriteLogLine(ex.GetType().Name + ": " + ex.Message); throw ex; } diff --git a/Source/BuilderModes/Interface/FindReplaceForm.cs b/Source/BuilderModes/Interface/FindReplaceForm.cs index 080cf8c1..f0c68df6 100644 --- a/Source/BuilderModes/Interface/FindReplaceForm.cs +++ b/Source/BuilderModes/Interface/FindReplaceForm.cs @@ -83,14 +83,14 @@ namespace CodeImp.DoomBuilder.BuilderModes catch(TargetInvocationException ex) { // Error! - General.WriteLogLine("ERROR: Failed to create class instance '" + t.Name + "'!"); + General.ErrorLogger.Add(ErrorType.Error, "Failed to create class instance '" + t.Name + "'!"); General.WriteLogLine(ex.InnerException.GetType().Name + ": " + ex.InnerException.Message); throw ex; } catch(Exception ex) { // Error! - General.WriteLogLine("ERROR: Failed to create class instance '" + t.Name + "'!"); + General.ErrorLogger.Add(ErrorType.Error, "Failed to create class instance '" + t.Name + "'!"); General.WriteLogLine(ex.GetType().Name + ": " + ex.Message); throw ex; } diff --git a/Source/Compilers/Compiler.cs b/Source/Compilers/Compiler.cs index 234452a9..74c5c65a 100644 --- a/Source/Compilers/Compiler.cs +++ b/Source/Compilers/Compiler.cs @@ -114,7 +114,7 @@ namespace CodeImp.DoomBuilder.Compilers { string sourcefile = Path.Combine(General.CompilersPath, f); string targetfile = Path.Combine(tempdir.FullName, f); - if(!File.Exists(sourcefile)) General.WriteLogLine("ERROR: The file '" + f + "' required by the '" + info.Name + "' compiler is missing!"); + if(!File.Exists(sourcefile)) General.ErrorLogger.Add(ErrorType.Error, "The file '" + f + "' required by the '" + info.Name + "' compiler is missing!"); File.Copy(sourcefile, targetfile, true); } } diff --git a/Source/Config/ArgumentInfo.cs b/Source/Config/ArgumentInfo.cs index 581f04c9..c32855db 100644 --- a/Source/Config/ArgumentInfo.cs +++ b/Source/Config/ArgumentInfo.cs @@ -86,7 +86,7 @@ namespace CodeImp.DoomBuilder.Config } else { - General.WriteLogLine("WARNING: '" + argspath + ".arg" + istr + "' references unknown enumeration '" + argdic["enum"] + "'!"); + General.ErrorLogger.Add(ErrorType.Warning, "'" + argspath + ".arg" + istr + "' references unknown enumeration '" + argdic["enum"] + "'!"); } } } diff --git a/Source/Config/FlagTranslation.cs b/Source/Config/FlagTranslation.cs index a74754b6..20f72989 100644 --- a/Source/Config/FlagTranslation.cs +++ b/Source/Config/FlagTranslation.cs @@ -60,7 +60,7 @@ namespace CodeImp.DoomBuilder.Config // Set the flag if(!int.TryParse(de.Key.ToString(), out flag)) - General.WriteLogLine("WARNING: Invalid flag translation key in configuration (must be numeric)"); + General.ErrorLogger.Add(ErrorType.Warning, "Invalid flag translation key in configuration (must be numeric)"); // Set the fields string[] fieldstrings = de.Value.ToString().Split(','); diff --git a/Source/Config/GameConfiguration.cs b/Source/Config/GameConfiguration.cs index 669264eb..c567ae6a 100644 --- a/Source/Config/GameConfiguration.cs +++ b/Source/Config/GameConfiguration.cs @@ -370,7 +370,7 @@ namespace CodeImp.DoomBuilder.Config } catch(Exception) { - General.WriteLogLine("WARNING: Unable to read universal field definition 'universalfields." + elementname + "." + de.Key + "'!"); + General.ErrorLogger.Add(ErrorType.Warning, "Unable to read universal field definition 'universalfields." + elementname + "." + de.Key + "'!"); } } @@ -400,7 +400,7 @@ namespace CodeImp.DoomBuilder.Config } else { - General.WriteLogLine("WARNING: Thing number " + t.Index + " is defined more than once! (as '" + things[t.Index].Title + "' and '" + t.Title + "')"); + General.ErrorLogger.Add(ErrorType.Warning, "Thing number " + t.Index + " is defined more than once! (as '" + things[t.Index].Title + "' and '" + t.Title + "')"); } } @@ -478,7 +478,7 @@ namespace CodeImp.DoomBuilder.Config else { // Failure - General.WriteLogLine("WARNING: Structure 'linedeftypes' contains invalid types! (all types must be expanded structures)"); + General.ErrorLogger.Add(ErrorType.Warning, "Structure 'linedeftypes' contains invalid types! (all types must be expanded structures)"); } } } @@ -530,7 +530,7 @@ namespace CodeImp.DoomBuilder.Config } else { - General.WriteLogLine("WARNING: Structure 'gen_linedeftypes' contains invalid entries!"); + General.ErrorLogger.Add(ErrorType.Warning, "Structure 'gen_linedeftypes' contains invalid entries!"); } } } @@ -560,7 +560,7 @@ namespace CodeImp.DoomBuilder.Config } else { - General.WriteLogLine("WARNING: Structure 'sectortypes' contains invalid keys!"); + General.ErrorLogger.Add(ErrorType.Warning, "Structure 'sectortypes' contains invalid keys!"); } } @@ -585,7 +585,7 @@ namespace CodeImp.DoomBuilder.Config } else { - General.WriteLogLine("WARNING: Structure 'gen_sectortypes' contains invalid entries!"); + General.ErrorLogger.Add(ErrorType.Warning, "Structure 'gen_sectortypes' contains invalid entries!"); } } } @@ -625,7 +625,7 @@ namespace CodeImp.DoomBuilder.Config } else { - General.WriteLogLine("WARNING: Structure 'defaultthingflags' contains unknown thing flags!"); + General.ErrorLogger.Add(ErrorType.Warning, "Structure 'defaultthingflags' contains unknown thing flags!"); } } } @@ -646,7 +646,7 @@ namespace CodeImp.DoomBuilder.Config } else { - General.WriteLogLine("WARNING: Structure 'skills' contains invalid skill numbers!"); + General.ErrorLogger.Add(ErrorType.Warning, "Structure 'skills' contains invalid skill numbers!"); } } } diff --git a/Source/Config/GeneralizedOption.cs b/Source/Config/GeneralizedOption.cs index a2bde4ab..bd047c5b 100644 --- a/Source/Config/GeneralizedOption.cs +++ b/Source/Config/GeneralizedOption.cs @@ -80,7 +80,7 @@ namespace CodeImp.DoomBuilder.Config } else { - General.WriteLogLine("WARNING: Structure '" + fullpath + "." + name + "' contains invalid entries!"); + General.ErrorLogger.Add(ErrorType.Warning, "Structure '" + fullpath + "." + name + "' contains invalid entries!"); } } diff --git a/Source/Config/MapLumpInfo.cs b/Source/Config/MapLumpInfo.cs index b2423acc..118cfcb5 100644 --- a/Source/Config/MapLumpInfo.cs +++ b/Source/Config/MapLumpInfo.cs @@ -66,7 +66,7 @@ namespace CodeImp.DoomBuilder.Config } else { - General.WriteLogLine("WARNING: Map lump '" + name + "' specifies unknown script configuration '" + scriptconfig + "'. Using plain text instead."); + General.ErrorLogger.Add(ErrorType.Warning, "Map lump '" + name + "' specifies unknown script configuration '" + scriptconfig + "'. Using plain text instead."); this.script = new ScriptConfiguration(); } } diff --git a/Source/Controls/ScriptFileDocumentTab.cs b/Source/Controls/ScriptFileDocumentTab.cs index 9f880923..1d16b12c 100644 --- a/Source/Controls/ScriptFileDocumentTab.cs +++ b/Source/Controls/ScriptFileDocumentTab.cs @@ -156,7 +156,7 @@ namespace CodeImp.DoomBuilder.Controls catch(Exception e) { // Failed - General.WriteLogLine("ERROR: Cannot open file '" + filepathname + "' for writing."); + General.ErrorLogger.Add(ErrorType.Error, "Cannot open file '" + filepathname + "' for writing."); General.WriteLogLine(e.GetType().Name + ": " + e.Message); General.ShowErrorMessage("Unable to open file \"" + filepathname + "\" for writing. Make sure the path exists and that the file is not in use by another application.", MessageBoxButtons.OK); return false; @@ -196,7 +196,7 @@ namespace CodeImp.DoomBuilder.Controls catch(Exception e) { // Failed - General.WriteLogLine("ERROR: Cannot open file '" + filepathname + "' for reading."); + General.ErrorLogger.Add(ErrorType.Error, "Cannot open file '" + filepathname + "' for reading."); General.WriteLogLine(e.GetType().Name + ": " + e.Message); General.ShowErrorMessage("Unable to open file \"" + filepathname + "\" for reading. Make sure the path exists and that the file is not in use by another application.", MessageBoxButtons.OK); return false; diff --git a/Source/Data/DataManager.cs b/Source/Data/DataManager.cs index bad54c79..5b9ecc0e 100644 --- a/Source/Data/DataManager.cs +++ b/Source/Data/DataManager.cs @@ -267,13 +267,13 @@ namespace CodeImp.DoomBuilder.Data catch(Exception e) { // Unable to load resource - General.WriteLogLine("ERROR while creating data reader. " + e.GetType().Name + ": " + e.Message); + General.ErrorLogger.Add(ErrorType.Error, "Error while creating data reader. " + e.GetType().Name + ": " + e.Message); General.WriteLogLine(e.StackTrace); General.ShowErrorMessage("Unable to load resources from location \"" + dl.location + "\". Please make sure the location is accessible and not in use by another program.", MessageBoxButtons.OK); continue; } */ - + // Add container if(c != null) containers.Add(c); } @@ -398,7 +398,7 @@ namespace CodeImp.DoomBuilder.Data catch(Exception e) { // Unable to load resource - General.WriteLogLine("ERROR while resuming data reader. " + e.GetType().Name + ": " + e.Message); + General.ErrorLogger.Add(ErrorType.Error, "Error while resuming data reader. " + e.GetType().Name + ": " + e.Message); General.WriteLogLine(e.StackTrace); General.ShowErrorMessage("Unable to load resources from location \"" + d.Location.location + "\". Please make sure the location is accessible and not in use by another program.", MessageBoxButtons.OK); } @@ -624,7 +624,7 @@ namespace CodeImp.DoomBuilder.Data // Make empty palette when still no palette found if(palette == null) { - General.WriteLogLine("WARNING: None of the loaded resources define a color palette!"); + General.ErrorLogger.Add(ErrorType.Warning, "None of the loaded resources define a color palette!"); palette = new Playpal(); } } @@ -1120,8 +1120,9 @@ namespace CodeImp.DoomBuilder.Data // Check for errors if(parser.HasError) { - General.WriteLogLine("ERROR: Unable to parse DECORATE data from location " + dr.Location.location + "!"); - General.WriteLogLine("ERROR: " + parser.ErrorDescription + " on line " + parser.ErrorLine + " in '" + parser.ErrorSource + "'"); + General.ErrorLogger.Add(ErrorType.Error, "Unable to parse DECORATE data from location " + + dr.Location.location + "! " + parser.ErrorDescription + " on line " + parser.ErrorLine + + " in '" + parser.ErrorSource + "'"); break; } } diff --git a/Source/Data/DirectoryReader.cs b/Source/Data/DirectoryReader.cs index 3e1f6a1f..78581ebd 100644 --- a/Source/Data/DirectoryReader.cs +++ b/Source/Data/DirectoryReader.cs @@ -97,7 +97,7 @@ namespace CodeImp.DoomBuilder.Data } catch(Exception e) { - General.WriteLogLine("ERROR: " + e.GetType().Name + " while loading patch '" + pname + "' from directory: " + e.Message); + General.ErrorLogger.Add(ErrorType.Error, e.GetType().Name + " while loading patch '" + pname + "' from directory: " + e.Message); } // Nothing found @@ -130,7 +130,7 @@ namespace CodeImp.DoomBuilder.Data } catch(Exception e) { - General.WriteLogLine("ERROR: " + e.GetType().Name + " while loading texture '" + pname + "' from directory: " + e.Message); + General.ErrorLogger.Add(ErrorType.Error, e.GetType().Name + " while loading texture '" + pname + "' from directory: " + e.Message); } // Nothing found @@ -166,7 +166,7 @@ namespace CodeImp.DoomBuilder.Data } catch(Exception e) { - General.WriteLogLine("ERROR: " + e.GetType().Name + " while loading sprite '" + pname + "' from directory: " + e.Message); + General.ErrorLogger.Add(ErrorType.Error, e.GetType().Name + " while loading sprite '" + pname + "' from directory: " + e.Message); } // Nothing found @@ -197,7 +197,7 @@ namespace CodeImp.DoomBuilder.Data } catch(Exception e) { - General.WriteLogLine("ERROR: " + e.GetType().Name + " while checking sprite '" + pname + "' existance in directory: " + e.Message); + General.ErrorLogger.Add(ErrorType.Error, e.GetType().Name + " while checking sprite '" + pname + "' existance in directory: " + e.Message); } // Nothing found diff --git a/Source/Data/FileImage.cs b/Source/Data/FileImage.cs index 8b6e94ee..924ff3e6 100644 --- a/Source/Data/FileImage.cs +++ b/Source/Data/FileImage.cs @@ -118,7 +118,7 @@ namespace CodeImp.DoomBuilder.Data // Not loaded? if(bitmap == null) { - General.WriteLogLine("ERROR: Image file '" + filepathname + "' data format could not be read, while loading texture '" + this.Name + "'!"); + General.ErrorLogger.Add(ErrorType.Error, "Image file '" + filepathname + "' data format could not be read, while loading texture '" + this.Name + "'!"); loadfailed = true; } else diff --git a/Source/Data/FlatImage.cs b/Source/Data/FlatImage.cs index 88efdf8d..1d768476 100644 --- a/Source/Data/FlatImage.cs +++ b/Source/Data/FlatImage.cs @@ -77,7 +77,7 @@ namespace CodeImp.DoomBuilder.Data if(reader is UnknownImageReader) { // Data is in an unknown format! - General.WriteLogLine("ERROR: Flat lump '" + Name + "' data format could not be read!"); + General.ErrorLogger.Add(ErrorType.Error, "Flat lump '" + Name + "' data format could not be read!"); bitmap = null; } else @@ -107,7 +107,7 @@ namespace CodeImp.DoomBuilder.Data else { // Missing a patch lump! - General.WriteLogLine("ERROR: Missing flat lump '" + Name + "'!"); + General.ErrorLogger.Add(ErrorType.Error, "Missing flat lump '" + Name + "'!"); loadfailed = true; } diff --git a/Source/Data/HighResImage.cs b/Source/Data/HighResImage.cs index 00cac2a5..4b7a3955 100644 --- a/Source/Data/HighResImage.cs +++ b/Source/Data/HighResImage.cs @@ -99,7 +99,7 @@ namespace CodeImp.DoomBuilder.Data catch(Exception e) { // Unable to make bitmap - General.WriteLogLine("ERROR: Unable to load texture image '" + this.Name + "'. " + e.GetType().Name + ": " + e.Message); + General.ErrorLogger.Add(ErrorType.Error, "Unable to load texture image '" + this.Name + "'. " + e.GetType().Name + ": " + e.Message); loadfailed = true; } @@ -124,7 +124,7 @@ namespace CodeImp.DoomBuilder.Data if(reader is UnknownImageReader) { // Data is in an unknown format! - General.WriteLogLine("ERROR: Patch lump '" + p.lumpname + "' data format could not be read, while loading texture '" + this.Name + "'!"); + General.ErrorLogger.Add(ErrorType.Error, "Patch lump '" + p.lumpname + "' data format could not be read, while loading texture '" + this.Name + "'!"); loadfailed = true; } else @@ -136,7 +136,7 @@ namespace CodeImp.DoomBuilder.Data catch(InvalidDataException) { // Data cannot be read! - General.WriteLogLine("ERROR: Patch lump '" + p.lumpname + "' data format could not be read, while loading texture '" + this.Name + "'!"); + General.ErrorLogger.Add(ErrorType.Error, "Patch lump '" + p.lumpname + "' data format could not be read, while loading texture '" + this.Name + "'!"); loadfailed = true; } if(patchbmp != null) @@ -151,7 +151,7 @@ namespace CodeImp.DoomBuilder.Data } catch(Exception e) { - General.WriteLogLine("ERROR: Cannot lock image '" + p.lumpname + "' for alpha adjustment. " + e.GetType().Name + ": " + e.Message); + General.ErrorLogger.Add(ErrorType.Error, "Cannot lock image '" + p.lumpname + "' for alpha adjustment. " + e.GetType().Name + ": " + e.Message); } if(bmpdata != null) @@ -179,7 +179,7 @@ namespace CodeImp.DoomBuilder.Data else { // Missing a patch lump! - General.WriteLogLine("ERROR: Missing patch lump '" + p.lumpname + "' while loading texture '" + this.Name + "'!"); + General.ErrorLogger.Add(ErrorType.Error, "Missing patch lump '" + p.lumpname + "' while loading texture '" + this.Name + "'!"); loadfailed = true; } } diff --git a/Source/Data/ImageData.cs b/Source/Data/ImageData.cs index 12732a0f..4ecca92d 100644 --- a/Source/Data/ImageData.cs +++ b/Source/Data/ImageData.cs @@ -240,7 +240,7 @@ namespace CodeImp.DoomBuilder.Data // Bitmap has incorrect format? if(bitmap.PixelFormat != PixelFormat.Format32bppArgb) { - General.WriteLogLine("WARNING: Image '" + name + "' does not have A8R8G8B8 pixel format. Conversion was needed!"); + General.ErrorLogger.Add(ErrorType.Warning, "Image '" + name + "' does not have A8R8G8B8 pixel format. Conversion was needed!"); Bitmap oldbitmap = bitmap; try { @@ -260,7 +260,7 @@ namespace CodeImp.DoomBuilder.Data catch(Exception e) { bitmap = oldbitmap; - General.WriteLogLine("WARNING: Cannot lock image '" + name + "' for pixel format conversion. " + e.GetType().Name + ": " + e.Message); + General.ErrorLogger.Add(ErrorType.Warning, "Cannot lock image '" + name + "' for pixel format conversion. " + e.GetType().Name + ": " + e.Message); } } @@ -274,7 +274,7 @@ namespace CodeImp.DoomBuilder.Data } catch(Exception e) { - General.WriteLogLine("WARNING: Cannot lock image '" + name + "' for color correction. " + e.GetType().Name + ": " + e.Message); + General.ErrorLogger.Add(ErrorType.Warning, "Cannot lock image '" + name + "' for color correction. " + e.GetType().Name + ": " + e.Message); } // Bitmap locked? diff --git a/Source/Data/PK3FileImage.cs b/Source/Data/PK3FileImage.cs index f2b2d497..4abf3851 100644 --- a/Source/Data/PK3FileImage.cs +++ b/Source/Data/PK3FileImage.cs @@ -102,7 +102,7 @@ namespace CodeImp.DoomBuilder.Data // Not loaded? if(bitmap == null) { - General.WriteLogLine("ERROR: Image file '" + filepathname + "' data format could not be read, while loading texture '" + this.Name + "'!"); + General.ErrorLogger.Add(ErrorType.Error, "Image file '" + filepathname + "' data format could not be read, while loading texture '" + this.Name + "'!"); loadfailed = true; } else diff --git a/Source/Data/SimpleTextureImage.cs b/Source/Data/SimpleTextureImage.cs index 092bd2e4..119bcd87 100644 --- a/Source/Data/SimpleTextureImage.cs +++ b/Source/Data/SimpleTextureImage.cs @@ -108,7 +108,7 @@ namespace CodeImp.DoomBuilder.Data // Not loaded? if(bitmap == null) { - General.WriteLogLine("ERROR: Image lump '" + lumpname + "' data format could not be read, while loading texture '" + this.Name + "'!"); + General.ErrorLogger.Add(ErrorType.Error, "Image lump '" + lumpname + "' data format could not be read, while loading texture '" + this.Name + "'!"); loadfailed = true; } else @@ -125,7 +125,7 @@ namespace CodeImp.DoomBuilder.Data } else { - General.WriteLogLine("ERROR: Image lump '" + lumpname + "' could not be found, while loading texture '" + this.Name + "'!"); + General.ErrorLogger.Add(ErrorType.Error, "Image lump '" + lumpname + "' could not be found, while loading texture '" + this.Name + "'!"); loadfailed = true; } diff --git a/Source/Data/SpriteImage.cs b/Source/Data/SpriteImage.cs index c90889ab..1caada02 100644 --- a/Source/Data/SpriteImage.cs +++ b/Source/Data/SpriteImage.cs @@ -78,7 +78,7 @@ namespace CodeImp.DoomBuilder.Data if(reader is UnknownImageReader) { // Data is in an unknown format! - General.WriteLogLine("ERROR: Sprite lump '" + Name + "' data format could not be read!"); + General.ErrorLogger.Add(ErrorType.Error, "Sprite lump '" + Name + "' data format could not be read!"); bitmap = null; } else @@ -108,7 +108,7 @@ namespace CodeImp.DoomBuilder.Data else { // Missing a patch lump! - General.WriteLogLine("ERROR: Missing sprite lump '" + Name + "'!"); + General.ErrorLogger.Add(ErrorType.Error, "Missing sprite lump '" + Name + "'!"); } // Pass on to base diff --git a/Source/Data/TextureImage.cs b/Source/Data/TextureImage.cs index b0cbdab2..2a701e3f 100644 --- a/Source/Data/TextureImage.cs +++ b/Source/Data/TextureImage.cs @@ -99,7 +99,7 @@ namespace CodeImp.DoomBuilder.Data catch(Exception e) { // Unable to make bitmap - General.WriteLogLine("ERROR: Unable to load texture image '" + this.Name + "'. " + e.GetType().Name + ": " + e.Message); + General.ErrorLogger.Add(ErrorType.Error, "Unable to load texture image '" + this.Name + "'. " + e.GetType().Name + ": " + e.Message); loadfailed = true; } @@ -124,7 +124,7 @@ namespace CodeImp.DoomBuilder.Data if(reader is UnknownImageReader) { // Data is in an unknown format! - General.WriteLogLine("ERROR: Patch lump '" + p.lumpname + "' data format could not be read, while loading texture '" + this.Name + "'!"); + General.ErrorLogger.Add(ErrorType.Error, "Patch lump '" + p.lumpname + "' data format could not be read, while loading texture '" + this.Name + "'!"); loadfailed = true; } else @@ -135,7 +135,7 @@ namespace CodeImp.DoomBuilder.Data catch(InvalidDataException) { // Data cannot be read! - General.WriteLogLine("ERROR: Patch lump '" + p.lumpname + "' data format could not be read, while loading texture '" + this.Name + "'!"); + General.ErrorLogger.Add(ErrorType.Error, "Patch lump '" + p.lumpname + "' data format could not be read, while loading texture '" + this.Name + "'!"); loadfailed = true; } } @@ -146,7 +146,7 @@ namespace CodeImp.DoomBuilder.Data else { // Missing a patch lump! - General.WriteLogLine("ERROR: Missing patch lump '" + p.lumpname + "' while loading texture '" + this.Name + "'!"); + General.ErrorLogger.Add(ErrorType.Error, "Missing patch lump '" + p.lumpname + "' while loading texture '" + this.Name + "'!"); loadfailed = true; } } diff --git a/Source/Editing/CopyPasteManager.cs b/Source/Editing/CopyPasteManager.cs index 15f3da88..ed616549 100644 --- a/Source/Editing/CopyPasteManager.cs +++ b/Source/Editing/CopyPasteManager.cs @@ -340,7 +340,7 @@ namespace CodeImp.DoomBuilder.Editing catch(Exception e) { Cursor.Current = oldcursor; - General.WriteLogLine("ERROR: " + e.GetType().Name + " while writing prefab to file: " + e.Message); + General.ErrorLogger.Add(ErrorType.Error, e.GetType().Name + " while writing prefab to file: " + e.Message); General.ShowErrorMessage("Error while writing prefab to file! See log file for error details.", MessageBoxButtons.OK); } } @@ -391,7 +391,7 @@ namespace CodeImp.DoomBuilder.Editing catch(Exception e) { Cursor.Current = oldcursor; - General.WriteLogLine("ERROR: " + e.GetType().Name + " while reading prefab from file: " + e.Message); + General.ErrorLogger.Add(ErrorType.Error, e.GetType().Name + " while reading prefab from file: " + e.Message); General.ShowErrorMessage("Error while reading prefab from file! See log file for error details.", MessageBoxButtons.OK); } @@ -439,7 +439,7 @@ namespace CodeImp.DoomBuilder.Editing catch(Exception e) { Cursor.Current = oldcursor; - General.WriteLogLine("ERROR: " + e.GetType().Name + " while reading prefab from file: " + e.Message); + General.ErrorLogger.Add(ErrorType.Error, e.GetType().Name + " while reading prefab from file: " + e.Message); General.ShowErrorMessage("Error while reading prefab from file! See log file for error details.", MessageBoxButtons.OK); } diff --git a/Source/General/ErrorLogger.cs b/Source/General/ErrorLogger.cs index 810965c9..d8e224cc 100644 --- a/Source/General/ErrorLogger.cs +++ b/Source/General/ErrorLogger.cs @@ -38,6 +38,8 @@ namespace CodeImp.DoomBuilder private List errors; private volatile bool changed; + private volatile bool erroradded; + private volatile bool warningadded; #endregion @@ -45,6 +47,8 @@ namespace CodeImp.DoomBuilder public bool HasErrors { get { return (errors.Count > 0); } } public bool HasChanged { get { return changed; } set { changed = value; } } + public bool IsErrorAdded { get { return erroradded; } set { erroradded = value; } } + public bool IsWarningAdded { get { return warningadded; } set { warningadded = value; } } #endregion @@ -65,18 +69,35 @@ namespace CodeImp.DoomBuilder { lock(this) { - errors.Clear(); changed = false; + erroradded = false; + warningadded = false; + errors.Clear(); } } // This adds a new error - public void AddError(ErrorType type, string message) + public void Add(ErrorType type, string message) { + string prefix = ""; + lock(this) { errors.Add(new ErrorItem(type, message)); + switch(type) + { + case ErrorType.Error: + erroradded = true; + prefix = "ERROR: "; + break; + + case ErrorType.Warning: + warningadded = true; + prefix = "WARNING: "; + break; + } changed = true; + General.WriteLogLine(prefix + message); } } diff --git a/Source/General/General.cs b/Source/General/General.cs index 8d06bf3c..8e7b4803 100644 --- a/Source/General/General.cs +++ b/Source/General/General.cs @@ -744,7 +744,7 @@ namespace CodeImp.DoomBuilder else { // Note in the log that we cannot find this file - General.WriteLogLine("WARNING: Cannot find the specified file \"" + curarg + "\""); + General.ErrorLogger.Add(ErrorType.Warning, "Cannot find the specified file \"" + curarg + "\""); } } } @@ -900,7 +900,7 @@ namespace CodeImp.DoomBuilder if(map != null) map.Dispose(); // Set this to false so we can see if errors are added - General.ErrorLogger.HasChanged = false; + General.ErrorLogger.IsErrorAdded = false; // Create map manager with given options map = new MapManager(); @@ -925,9 +925,9 @@ namespace CodeImp.DoomBuilder mainwindow.RedrawDisplay(); mainwindow.UpdateInterface(); mainwindow.HideInfo(); - - if(errorlogger.HasChanged) - mainwindow.DisplayStatus(StatusType.Warning, "Errors or warnings during loading!"); + + if(errorlogger.IsErrorAdded) + mainwindow.DisplayStatus(StatusType.Warning, "There were errors during loading!"); else mainwindow.DisplayReady(); @@ -1041,7 +1041,7 @@ namespace CodeImp.DoomBuilder if(map != null) map.Dispose(); // Set this to false so we can see if errors are added - General.ErrorLogger.HasChanged = false; + General.ErrorLogger.IsErrorAdded = false; // Create map manager with given options map = new MapManager(); @@ -1067,9 +1067,9 @@ namespace CodeImp.DoomBuilder mainwindow.RedrawDisplay(); mainwindow.UpdateInterface(); mainwindow.HideInfo(); - - if(errorlogger.HasChanged) - mainwindow.DisplayStatus(StatusType.Warning, "Errors or warnings during loading!"); + + if(errorlogger.IsErrorAdded) + mainwindow.DisplayStatus(StatusType.Warning, "There were errors during loading!"); else mainwindow.DisplayReady(); @@ -1100,7 +1100,7 @@ namespace CodeImp.DoomBuilder Cursor.Current = Cursors.WaitCursor; // Set this to false so we can see if errors are added - General.ErrorLogger.HasChanged = false; + General.ErrorLogger.IsErrorAdded = false; // Save the map if(map.SaveMap(map.FilePathName, MapManager.SAVE_NORMAL)) @@ -1113,8 +1113,8 @@ namespace CodeImp.DoomBuilder // All done mainwindow.UpdateInterface(); - if(errorlogger.HasChanged) - mainwindow.DisplayStatus(StatusType.Warning, "Errors or warnings during saving!"); + if(errorlogger.IsErrorAdded) + mainwindow.DisplayStatus(StatusType.Warning, "There were errors during saving!"); else mainwindow.DisplayReady(); @@ -1152,7 +1152,7 @@ namespace CodeImp.DoomBuilder Cursor.Current = Cursors.WaitCursor; // Set this to false so we can see if errors are added - General.ErrorLogger.HasChanged = false; + General.ErrorLogger.IsErrorAdded = false; // Save the map if(map.SaveMap(savefile.FileName, MapManager.SAVE_AS)) @@ -1165,8 +1165,8 @@ namespace CodeImp.DoomBuilder // All done mainwindow.UpdateInterface(); - if(errorlogger.HasChanged) - mainwindow.DisplayStatus(StatusType.Warning, "Errors or warnings during loading!"); + if(errorlogger.IsErrorAdded) + mainwindow.DisplayStatus(StatusType.Warning, "There were errors during saving!"); else mainwindow.DisplayReady(); @@ -1204,7 +1204,7 @@ namespace CodeImp.DoomBuilder Cursor.Current = Cursors.WaitCursor; // Set this to false so we can see if errors are added - General.ErrorLogger.HasChanged = false; + General.ErrorLogger.IsErrorAdded = false; // Save the map if(map.SaveMap(savefile.FileName, MapManager.SAVE_INTO)) @@ -1217,8 +1217,8 @@ namespace CodeImp.DoomBuilder // All done mainwindow.UpdateInterface(); - if(errorlogger.HasChanged) - mainwindow.DisplayStatus(StatusType.Warning, "Errors or warnings during loading!"); + if(errorlogger.IsErrorAdded) + mainwindow.DisplayStatus(StatusType.Warning, "There were errors during saving!"); else mainwindow.DisplayReady(); diff --git a/Source/General/MapManager.cs b/Source/General/MapManager.cs index 636b7388..a79209e6 100644 --- a/Source/General/MapManager.cs +++ b/Source/General/MapManager.cs @@ -348,7 +348,7 @@ namespace CodeImp.DoomBuilder try { map = io.Read(map, TEMP_MAP_HEADER); } catch(Exception e) { - General.WriteLogLine("ERROR: " + e.GetType().Name + ": " + e.Message); + General.ErrorLogger.Add(ErrorType.Error, e.GetType().Name + ": " + e.Message); General.ShowErrorMessage("Unable to read the map data structures with the specified configuration.", MessageBoxButtons.OK); return false; } @@ -616,8 +616,8 @@ namespace CodeImp.DoomBuilder catch(Exception e) { // Warning only - General.WriteLogLine("WARNING: " + e.GetType().Name + ": " + e.Message); - General.WriteLogLine("WARNING: Could not write the map settings configuration file!"); + General.ErrorLogger.Add(ErrorType.Warning, e.GetType().Name + ": " + e.Message); + General.ErrorLogger.Add(ErrorType.Warning, "Could not write the map settings configuration file!"); } // Check for compile errors, if the scripts were compiled above @@ -965,7 +965,7 @@ namespace CodeImp.DoomBuilder } else { - General.WriteLogLine("WARNING: " + ml.Key.ToString() + " should be copied but was not found!"); + General.ErrorLogger.Add(ErrorType.Warning, ml.Key.ToString() + " should be copied but was not found!"); } } } @@ -1025,7 +1025,7 @@ namespace CodeImp.DoomBuilder else { // Lump not found - //General.WriteLogLine("WARNING: " + lumpname + " should be removed but was not found!"); + //General.ErrorLogger.Add(ErrorType.Warning, lumpname + " should be removed but was not found!"); } // Return result diff --git a/Source/IO/DoomFlatReader.cs b/Source/IO/DoomFlatReader.cs index bbc0456b..12e22608 100644 --- a/Source/IO/DoomFlatReader.cs +++ b/Source/IO/DoomFlatReader.cs @@ -111,7 +111,7 @@ namespace CodeImp.DoomBuilder.IO catch(Exception e) { // Unable to make bitmap - General.WriteLogLine("ERROR: Unable to make doom flat data. " + e.GetType().Name + ": " + e.Message); + General.ErrorLogger.Add(ErrorType.Error, "Unable to make doom flat data. " + e.GetType().Name + ": " + e.Message); return null; } } diff --git a/Source/IO/DoomMapSetIO.cs b/Source/IO/DoomMapSetIO.cs index fda2a53c..1ce2a8f3 100644 --- a/Source/IO/DoomMapSetIO.cs +++ b/Source/IO/DoomMapSetIO.cs @@ -299,12 +299,12 @@ namespace CodeImp.DoomBuilder.IO } else { - General.WriteLogLine("WARNING: Sidedef references invalid sector " + sc + "! Sidedef has been removed."); + General.ErrorLogger.Add(ErrorType.Warning, "Sidedef references invalid sector " + sc + "! Sidedef has been removed."); } } else { - General.WriteLogLine("WARNING: Linedef references invalid sidedef! Sidedef has been removed."); + General.ErrorLogger.Add(ErrorType.Warning, "Linedef references invalid sidedef! Sidedef has been removed."); } } @@ -330,18 +330,18 @@ namespace CodeImp.DoomBuilder.IO } else { - General.WriteLogLine("WARNING: Sidedef references invalid sector " + sc + "! Sidedef has been removed."); + General.ErrorLogger.Add(ErrorType.Warning, "Sidedef references invalid sector " + sc + "! Sidedef has been removed."); } } else { - General.WriteLogLine("WARNING: Linedef references invalid sidedef! Sidedef has been removed."); + General.ErrorLogger.Add(ErrorType.Warning, "Linedef references invalid sidedef! Sidedef has been removed."); } } } else { - General.WriteLogLine("WARNING: Linedef references one or more invalid vertices! Linedef has been removed."); + General.ErrorLogger.Add(ErrorType.Warning, "Linedef references one or more invalid vertices! Linedef has been removed."); } } diff --git a/Source/IO/DoomPictureReader.cs b/Source/IO/DoomPictureReader.cs index f8eae896..32b64d44 100644 --- a/Source/IO/DoomPictureReader.cs +++ b/Source/IO/DoomPictureReader.cs @@ -127,7 +127,7 @@ namespace CodeImp.DoomBuilder.IO catch(Exception e) { // Unable to make bitmap - General.WriteLogLine("ERROR: Unable to make doom picture data. " + e.GetType().Name + ": " + e.Message); + General.ErrorLogger.Add(ErrorType.Error, "Unable to make doom picture data. " + e.GetType().Name + ": " + e.Message); return null; } } diff --git a/Source/IO/FileImageReader.cs b/Source/IO/FileImageReader.cs index 337bdcb3..2fad251c 100644 --- a/Source/IO/FileImageReader.cs +++ b/Source/IO/FileImageReader.cs @@ -58,7 +58,7 @@ namespace CodeImp.DoomBuilder.IO catch(Exception e) { // Unable to make bitmap - General.WriteLogLine("ERROR: Unable to make file image. " + e.GetType().Name + ": " + e.Message); + General.ErrorLogger.Add(ErrorType.Error, "Unable to make file image. " + e.GetType().Name + ": " + e.Message); return null; } } diff --git a/Source/IO/HexenMapSetIO.cs b/Source/IO/HexenMapSetIO.cs index 723450ca..710230e0 100644 --- a/Source/IO/HexenMapSetIO.cs +++ b/Source/IO/HexenMapSetIO.cs @@ -314,12 +314,12 @@ namespace CodeImp.DoomBuilder.IO } else { - General.WriteLogLine("WARNING: Sidedef references invalid sector " + sc + "! Sidedef has been removed."); + General.ErrorLogger.Add(ErrorType.Warning, "Sidedef references invalid sector " + sc + "! Sidedef has been removed."); } } else { - General.WriteLogLine("WARNING: Linedef references invalid sidedef! Sidedef has been removed."); + General.ErrorLogger.Add(ErrorType.Warning, "Linedef references invalid sidedef! Sidedef has been removed."); } } @@ -345,18 +345,18 @@ namespace CodeImp.DoomBuilder.IO } else { - General.WriteLogLine("WARNING: Sidedef references invalid sector " + sc + "! Sidedef has been removed."); + General.ErrorLogger.Add(ErrorType.Warning, "Sidedef references invalid sector " + sc + "! Sidedef has been removed."); } } else { - General.WriteLogLine("WARNING: Linedef references invalid sidedef! Sidedef has been removed."); + General.ErrorLogger.Add(ErrorType.Warning, "Linedef references invalid sidedef! Sidedef has been removed."); } } } else { - General.WriteLogLine("WARNING: Linedef references one or more invalid vertices! Linedef has been removed."); + General.ErrorLogger.Add(ErrorType.Warning, "Linedef references one or more invalid vertices! Linedef has been removed."); } } diff --git a/Source/IO/UniversalStreamReader.cs b/Source/IO/UniversalStreamReader.cs index c04763e7..b907787a 100644 --- a/Source/IO/UniversalStreamReader.cs +++ b/Source/IO/UniversalStreamReader.cs @@ -243,7 +243,7 @@ namespace CodeImp.DoomBuilder.IO if(s1 < sidescolls.Count) ReadSidedef(map, sidescolls[s1], l, true, sectorlink); else - General.WriteLogLine("WARNING: Linedef references invalid sidedef! Sidedef has been removed."); + General.ErrorLogger.Add(ErrorType.Warning, "Linedef references invalid sidedef! Sidedef has been removed."); } if(s2 > -1) @@ -251,12 +251,12 @@ namespace CodeImp.DoomBuilder.IO if(s2 < sidescolls.Count) ReadSidedef(map, sidescolls[s2], l, false, sectorlink); else - General.WriteLogLine("WARNING: Linedef references invalid sidedef! Sidedef has been removed."); + General.ErrorLogger.Add(ErrorType.Warning, "Linedef references invalid sidedef! Sidedef has been removed."); } } else { - General.WriteLogLine("WARNING: Linedef references one or more invalid vertices! Linedef has been removed."); + General.ErrorLogger.Add(ErrorType.Warning, "Linedef references one or more invalid vertices! Linedef has been removed."); } } } @@ -284,7 +284,7 @@ namespace CodeImp.DoomBuilder.IO } else { - General.WriteLogLine("WARNING: Sidedef references invalid sector " + sector + "! Sidedef has been removed."); + General.ErrorLogger.Add(ErrorType.Warning, "Sidedef references invalid sector " + sector + "! Sidedef has been removed."); } } diff --git a/Source/Plugins/Plugin.cs b/Source/Plugins/Plugin.cs index c5b6e9d3..c9811bb5 100644 --- a/Source/Plugins/Plugin.cs +++ b/Source/Plugins/Plugin.cs @@ -77,7 +77,7 @@ namespace CodeImp.DoomBuilder.Plugins } catch(Exception) { - General.WriteLogLine("ERROR: Could not load plugin '" + name + "', the DLL file could not be read!"); + General.ErrorLogger.Add(ErrorType.Error, "Could not load plugin '" + name + "', the DLL file could not be read!"); throw new InvalidProgramException(); } @@ -89,7 +89,7 @@ namespace CodeImp.DoomBuilder.Plugins if(FindClasses(typeof(Plug)).Length > 1) { // Show a warning - General.WriteLogLine("WARNING: Plugin '" + name + "' has more than one plug!"); + General.ErrorLogger.Add(ErrorType.Warning, "Plugin '" + name + "' has more than one plug!"); } // Make plug instance @@ -99,7 +99,7 @@ namespace CodeImp.DoomBuilder.Plugins else { // How can we plug something in without a plug? - General.WriteLogLine("ERROR: Could not load plugin '" + name + "', plugin is missing the plug!"); + General.ErrorLogger.Add(ErrorType.Error, "Could not load plugin '" + name + "', plugin is missing the plug!"); throw new InvalidProgramException(); } @@ -189,14 +189,14 @@ namespace CodeImp.DoomBuilder.Plugins catch(TargetInvocationException e) { // Error! - General.WriteLogLine("ERROR: Failed to create class instance '" + t.Name + "' from plugin '" + name + "'!"); + General.ErrorLogger.Add(ErrorType.Error, "Failed to create class instance '" + t.Name + "' from plugin '" + name + "'!"); General.WriteLogLine(e.InnerException.GetType().Name + ": " + e.InnerException.Message); return default(T); } catch(Exception e) { // Error! - General.WriteLogLine("ERROR: Failed to create class instance '" + t.Name + "' from plugin '" + name + "'!"); + General.ErrorLogger.Add(ErrorType.Error, "Failed to create class instance '" + t.Name + "' from plugin '" + name + "'!"); General.WriteLogLine(e.GetType().Name + ": " + e.Message); return default(T); } diff --git a/Source/Plugins/PluginManager.cs b/Source/Plugins/PluginManager.cs index 0faaed6b..4ad6925f 100644 --- a/Source/Plugins/PluginManager.cs +++ b/Source/Plugins/PluginManager.cs @@ -116,7 +116,7 @@ namespace CodeImp.DoomBuilder.Plugins } catch(InvalidProgramException) { - General.WriteLogLine("WARNING: Plugin file '" + Path.GetFileName(fn) + "' was not loaded."); + General.ErrorLogger.Add(ErrorType.Warning, "Plugin file '" + Path.GetFileName(fn) + "' was not loaded."); p = null; } diff --git a/Source/Resources/Status10.png b/Source/Resources/Status10.png index 64d5d60d..092d0987 100644 Binary files a/Source/Resources/Status10.png and b/Source/Resources/Status10.png differ diff --git a/Source/Resources/Status11.png b/Source/Resources/Status11.png index 2ce67b41..2b033bc0 100644 Binary files a/Source/Resources/Status11.png and b/Source/Resources/Status11.png differ diff --git a/Source/Resources/Status12.png b/Source/Resources/Status12.png index 0130d23a..68a477d9 100644 Binary files a/Source/Resources/Status12.png and b/Source/Resources/Status12.png differ diff --git a/Source/Windows/ErrorsForm.Designer.cs b/Source/Windows/ErrorsForm.Designer.cs new file mode 100644 index 00000000..79758f7a --- /dev/null +++ b/Source/Windows/ErrorsForm.Designer.cs @@ -0,0 +1,142 @@ +namespace CodeImp.DoomBuilder.Windows +{ + partial class ErrorsForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if(disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ErrorsForm)); + this.list = new System.Windows.Forms.ListView(); + this.colmessage = new System.Windows.Forms.ColumnHeader(); + this.images = new System.Windows.Forms.ImageList(this.components); + this.copyselected = new System.Windows.Forms.Button(); + this.clearlist = new System.Windows.Forms.Button(); + this.close = new System.Windows.Forms.Button(); + this.checkerrors = new System.Windows.Forms.Timer(this.components); + this.SuspendLayout(); + // + // list + // + this.list.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.list.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.colmessage}); + this.list.FullRowSelect = true; + this.list.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; + this.list.HideSelection = false; + this.list.Location = new System.Drawing.Point(12, 12); + this.list.Name = "list"; + this.list.Size = new System.Drawing.Size(732, 395); + this.list.SmallImageList = this.images; + this.list.TabIndex = 0; + this.list.UseCompatibleStateImageBehavior = false; + this.list.View = System.Windows.Forms.View.Details; + // + // colmessage + // + this.colmessage.Text = ""; + this.colmessage.Width = 702; + // + // images + // + this.images.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("images.ImageStream"))); + this.images.TransparentColor = System.Drawing.Color.Transparent; + this.images.Images.SetKeyName(0, "ErrorLarge.png"); + this.images.Images.SetKeyName(1, "WarningLarge.png"); + // + // copyselected + // + this.copyselected.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.copyselected.Location = new System.Drawing.Point(12, 416); + this.copyselected.Name = "copyselected"; + this.copyselected.Size = new System.Drawing.Size(122, 25); + this.copyselected.TabIndex = 1; + this.copyselected.Text = "Copy Selection"; + this.copyselected.UseVisualStyleBackColor = true; + // + // clearlist + // + this.clearlist.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.clearlist.Location = new System.Drawing.Point(150, 416); + this.clearlist.Name = "clearlist"; + this.clearlist.Size = new System.Drawing.Size(122, 25); + this.clearlist.TabIndex = 2; + this.clearlist.Text = "Clear"; + this.clearlist.UseVisualStyleBackColor = true; + this.clearlist.Click += new System.EventHandler(this.clearlist_Click); + // + // close + // + this.close.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.close.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.close.Location = new System.Drawing.Point(622, 416); + this.close.Name = "close"; + this.close.Size = new System.Drawing.Size(122, 25); + this.close.TabIndex = 3; + this.close.Text = "Close"; + this.close.UseVisualStyleBackColor = true; + this.close.Click += new System.EventHandler(this.close_Click); + // + // checkerrors + // + this.checkerrors.Interval = 1000; + this.checkerrors.Tick += new System.EventHandler(this.checkerrors_Tick); + // + // ErrorsForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 14F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.CancelButton = this.close; + this.ClientSize = new System.Drawing.Size(756, 453); + this.Controls.Add(this.close); + this.Controls.Add(this.clearlist); + this.Controls.Add(this.copyselected); + this.Controls.Add(this.list); + this.Font = new System.Drawing.Font("Arial", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "ErrorsForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Errors and Warnings"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.ErrorsForm_FormClosing); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.ListView list; + private System.Windows.Forms.Button copyselected; + private System.Windows.Forms.Button clearlist; + private System.Windows.Forms.Button close; + private System.Windows.Forms.ColumnHeader colmessage; + private System.Windows.Forms.ImageList images; + private System.Windows.Forms.Timer checkerrors; + } +} \ No newline at end of file diff --git a/Source/Windows/ErrorsForm.cs b/Source/Windows/ErrorsForm.cs new file mode 100644 index 00000000..cff3e4aa --- /dev/null +++ b/Source/Windows/ErrorsForm.cs @@ -0,0 +1,111 @@ + +#region ================== Copyright (c) 2007 Pascal vd Heiden + +/* + * Copyright (c) 2007 Pascal vd Heiden, www.codeimp.com + * This program is released under GNU General Public License + * + * 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. + * + */ + +#endregion + +#region ================== Namespaces + +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Text; +using System.Windows.Forms; +using Microsoft.Win32; +using System.Diagnostics; +using CodeImp.DoomBuilder.Actions; +using CodeImp.DoomBuilder.Data; +using CodeImp.DoomBuilder.Config; +using CodeImp.DoomBuilder.Map; +using CodeImp.DoomBuilder.Controls; + +#endregion + +namespace CodeImp.DoomBuilder.Windows +{ + public partial class ErrorsForm : Form + { + #region ================== Variables + + #endregion + + #region ================== Constructor / Disposer + + // Constructor + public ErrorsForm() + { + InitializeComponent(); + list.Items.Clear(); + FillList(); + checkerrors.Start(); + } + + #endregion + + #region ================== Methods + + // This sets up the list + private void FillList() + { + // Fill the list with the items we don't have yet + list.BeginUpdate(); + General.ErrorLogger.HasChanged = false; + List errors = General.ErrorLogger.GetErrors(); + int startindex = list.Items.Count; + for(int i = startindex; i < errors.Count; i++) + { + ErrorItem e = errors[i]; + int icon = (e.type == ErrorType.Error) ? 0 : 1; + ListViewItem item = new ListViewItem(e.message, icon); + list.Items.Add(item); + } + list.EndUpdate(); + } + + #endregion + + #region ================== Events + + // Close clicked + private void close_Click(object sender, EventArgs e) + { + this.Close(); + } + + // Closing + private void ErrorsForm_FormClosing(object sender, FormClosingEventArgs e) + { + checkerrors.Stop(); + } + + // Checking for more errors + private void checkerrors_Tick(object sender, EventArgs e) + { + // If errors have been added, update the list + if(General.ErrorLogger.HasChanged) + { + FillList(); + } + } + + // This clears all errors + private void clearlist_Click(object sender, EventArgs e) + { + General.ErrorLogger.Clear(); + list.Items.Clear(); + } + + #endregion + } +} \ No newline at end of file diff --git a/Source/Windows/ErrorsForm.resx b/Source/Windows/ErrorsForm.resx new file mode 100644 index 00000000..7bb3dbd8 --- /dev/null +++ b/Source/Windows/ErrorsForm.resx @@ -0,0 +1,194 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + True + + + 17, 17 + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 + ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACu + CgAAAk1TRnQBSQFMAgEBAgEAAQQBAAEEAQABEgEAARIBAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFI + AwABEgMAAQEBAAEgBQABQAEUKgABFwIBAR4BLgIBAUUBNAIBAVEBKAIBATsBDQIBARD/AAUAAScCAQE4 + AVECDgGdAXABQgFRAdkBdAFcAYYB7wFwAVsBkwHyAXYBVQF9AesBZAEsATQBygFFAgQBfgEUAgEBGvQA + AQQCAQEEAUcCBgGAAY4BgAGpAfYCOAGlAf8BCQEIAZYB/wICAZ4B/wIGAa4B/wIMAb8B/wIhAdMB/wFh + AV8B4gH/AXYBSQFYAd0BMAIBAUoQAAEXAgEBHgEqAgEBPgEtAgEBRAEtAgEBQwEtAgEBQwEtAgEBQwEs + AgEBQgEsAgEBQgEsAgEBQgEsAgEBQQErAgEBQAErAgEBPwEqAgEBPgEqAgEBPQEqAgEBPQEiAgEBMKAA + AU0CCQGLAXIBcQG/Af8CAgGHAf8CAgGLAf8CAwGVAf8BCAEHAZ8B/wEMAQsBrAH/AhABuQH/Ag8BxgH/ + Ag4B1QH/Ai4B5QH/AYYBbgGZAfEBLgIBAUcMAAFoAiUBsAGnAY8BlAHpAZoBlQGbAeoBoAGWAZwB6gGl + AZYBngHpAakBngGkAekBrgGhAakB6QGyAakBsAHpAbIBqgGwAekBsQGjAaoB6AGsAZ4BowHoAacBlQGb + AecBoAGQAZgB5wGZAY0BkwHnAZoBiwGQAecBdAI0Ab6cAAEyAgIBTQGBAX0BvQH9AgIBjwH/AgIBjgH/ + AhMBjwH/AgIBkwH/AgUBngH/AgkBpwH/AgkBsgH/AhsBvAH/AhkBwwH/Ag8B0gH/Ai4B4AH/AXABRAFR + AdsBEgIBARYIAAErAgEBPwGZAYUBhwHkAVwB9QL/AVUB8gL/AVYB7gL/AVQB6wL/AVIB7wL/AUcBoAG+ + Af8BWgGEAZQB/wFXAdkC/wFXAeAC/wFYAd8C/wFYAeAC/wFOAeAC/wGaAekC/wFKAggBfZgAAQkCAQEK + AXEBNAE4AcECFgGkAf8CAgGXAf8CQQGhAf8CogGoAf8CSAGVAf8CAgGYAf8CAgGjAf8CGgGsAf8CtQHV + Af8CqQHWAf8BGgEZAb8B/wIKAckB/wFhAV8B1QH/AUICAwFzDAABQgIEAW4BjwHvAv8BGAHiAv8BIgHe + Av8BHgHZAv8BGQHdAv8BFQFCAU0B/wEzATABLQH/ASkBvQHvAf8BHQHKAv8BIwHFAv8BHgHFAv8BNgHL + Av8BkwFsAW4B2QENAgEBD5gAATUCAwFRAYcBdQGiAfQBFwEYAacB/wICAZ8B/wJjAbAB/wLBAbcB/wKt + AaoB/wJFAZgB/wIVAZwB/wKOAa4B/wLWAcoB/wLEAdcB/wEiASEBuAH/AgoBuQH/AiABwgH/AV4BIQEl + AcEMAAEJAgEBCgGQAV4BXwHSAUEB6wL/ARcB4gL/AR0B3gL/ARcB4QL/ATYB0AHrAf8BPwHBAdcB/wES + AcoC/wETAcsC/wEXAcYC/wENAcAC/wGkAeYC/wE4AQMBAgFZnAABXQEZARcBlwFsAWsBwAH/AS8BMAGy + Af8CGQGqAf8CBAGjAf8CbQG0Af8CvgG3Af8CqAGrAf8CkQGjAf8CrAGkAf8CmgGuAf8CJgGrAf8BBQEE + AaoB/wILAa0B/wIIAa4B/wFsAUgBZAHkEAABMwICAU4BvQH5AfoB/gEYAewC/wEeAeUC/wEcAegC/wEk + AWMBbgH/AUMBUgFQAf8BIwG8AeYB/wERAdMC/wELAcoC/wFKAdcC/wF5AjsBvAEEAgEBBJwAAXYCMwG0 + AmEBwQH/ATUBNgG5Af8CNwG2Af8CIAGuAf8CAwGlAf8CdQG3Af8CvgG5Af8CsQGtAf8CmQGkAf8CHQGe + Af8CAgGgAf8CBgGhAf8CBgGiAf8CAgGgAf8BbAFSAXkB7RAAAQIDAQFyAi4BswF9A/8BLwH8Av8BMgH5 + Av8BJAFEAUkB/wEuASUBJAH/ASwBvwHgAf8BGAHfAv8BEQHTAv8BxAHgAeMB+AEnAgEBOKAAAWoCJQGj + AWkBaAHFAf8COgHCAf8CPAG+Af8BNgE1AbgB/wFAAT8BuAH/AqwB0AH/As4ByQH/Ar8BugH/AqoBrQH/ + AkUBmgH/AgIBmQH/AgIBnAH/AgIBmgH/AgIBmAH/AW4BSwFrAecUAAEiAgEBLwHVAtkB9QFBA/8BPwP/ + AUIBWwFeAf8BOwEyATEB/wE/AckB4AH/ASAB8AL/AYAB+QL/AV0CGAGZpAABQgIHAWYBhQF5AbgB+QI+ + AcsB/wI/AcUB/wJUAcgB/wLTAe0B/wL8AfIB/wLFAdkB/wGQAZEBwgH/AsQBwAH/ArQBsgH/AkwBmwH/ + AggBlwH/AQgBBwGXAf8CEgGaAf8BZgEuATUByxgAAVUCEAGPAZ4D/wErA/8BTwFlAWgB/wFDAjsB/wFE + AcoB3QH/AUEB/gL/AcEBsAGxAekBFwIBAR2kAAESAgEBFwGRAV0BaAHVAkoB0QH/AkABzgH/ArQB7AX/ + AuQB9QH/AlkBxQH/AjMBtwH/AowBxQH/As4BxwH/ArcBuAH/Aj0BowH/Ah8BmwH/Al0BtgH/AUkCBgGF + GAABEgIBARcBtQKbAeQBQQP/AVYBaAFqAf8BVgFDAUIB/wFEAc0B3QH/AacD/wFGAgYBc6wAAUcBCgEJ + AW4BgAF+AdAB/wFEAUUB1wH/AWUBZgHbAf8CvwHxAf8BaQFoAdUB/wI9AcQB/wI/AcEB/wI8AbwB/wKL + AcgB/wJ4Ab0B/wIyAa4B/wIyAaoB/wGQAXUBjQHsARoCAQEjHAABQAIEAWkBrAP/AUcBxgHMAf8BWAGy + AbcB/wFcAfMC/wGSAWMBZQHRAQoCAQELrAABCAIBAQkBewI7AbYBcQFwAdYB/wJIAdsB/wJJAdYB/wJI + AdIB/wJKAc8B/wJHAcsB/wJEAcYB/wI+AcEB/wI4AbsB/wI5AbgB/wGcAZkB0gH+ATwCAgFkIAABBwIB + AQcBiQJQAcsBRQP/AQUD/wGtAvoB/gEzAgIBT7QAARECAQEVAXoBNwE4AbMBhwGFAdUB/wJXAdwB/wJM + AdsB/wJLAdgB/wJJAdQB/wFFAUYBzwH/AkMBywH/AVwBWwHOAf8BngGNAbQB9QFBAgQBbygAAS4CAgFG + Aa4B7gHwAfwBSgP/AW0CKgGyAQMCAQECuAABBwIBAQcBQwIHAWcBjAFUAVoBzAGXAYEBswHzAYABfwHT + Af4BfQF8AdcB/wGHAYIB0AH8AZEBdgGVAeoBZQEhASIBqwEoAgEBOTAAAWECHAGmAcECugHyASECAQEt + /wD/APIAAUIBTQE+BwABPgMAASgDAAFIAwABEgMAAQEBAAEBBQAB2BcAA/8BAAH8AR8C/wHwBwAB8AEH + Av8B8AcAAcABAwHAAQABMAcAAcABAQHAAQABMAcAAYABAAHAAQABMAkAAeABAAEwCQAB4AEAAXAJAAHw + AQABcAkAAfABAAHwCQAB+AEBAfAJAAH8AQEB8AkAAfwBAwHwBwABgAEAAf4BAwHwBwABgAEBAf4BBwHw + BwABwAEDAf8BBwHwBwAB4AEHAf8BjwHwBwAE/wHwBwAE/wHwBwAL + + + + True + + + True + + + True + + + 103, 17 + + + True + + \ No newline at end of file diff --git a/Source/Windows/MainForm.Designer.cs b/Source/Windows/MainForm.Designer.cs index f7475e57..b8bf0987 100644 --- a/Source/Windows/MainForm.Designer.cs +++ b/Source/Windows/MainForm.Designer.cs @@ -88,6 +88,7 @@ namespace CodeImp.DoomBuilder.Windows this.itemcreateprefab = new System.Windows.Forms.ToolStripMenuItem(); this.menutools = new System.Windows.Forms.ToolStripMenuItem(); this.itemreloadresources = new System.Windows.Forms.ToolStripMenuItem(); + this.itemshowerrors = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripMenuItem8 = new System.Windows.Forms.ToolStripSeparator(); this.configurationToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.preferencesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -159,7 +160,6 @@ namespace CodeImp.DoomBuilder.Windows this.processor = new System.Windows.Forms.Timer(this.components); this.statusflasher = new System.Windows.Forms.Timer(this.components); this.statusresetter = new System.Windows.Forms.Timer(this.components); - this.errorsAndWarningsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); toolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator(); toolStripMenuItem3 = new System.Windows.Forms.ToolStripSeparator(); toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); @@ -184,13 +184,13 @@ namespace CodeImp.DoomBuilder.Windows // toolStripMenuItem1.Margin = new System.Windows.Forms.Padding(0, 3, 0, 3); toolStripMenuItem1.Name = "toolStripMenuItem1"; - toolStripMenuItem1.Size = new System.Drawing.Size(199, 6); + toolStripMenuItem1.Size = new System.Drawing.Size(198, 6); // // toolStripMenuItem3 // toolStripMenuItem3.Margin = new System.Windows.Forms.Padding(0, 3, 0, 3); toolStripMenuItem3.Name = "toolStripMenuItem3"; - toolStripMenuItem3.Size = new System.Drawing.Size(199, 6); + toolStripMenuItem3.Size = new System.Drawing.Size(198, 6); // // toolStripSeparator1 // @@ -220,7 +220,7 @@ namespace CodeImp.DoomBuilder.Windows // toolStripSeparator11.Margin = new System.Windows.Forms.Padding(0, 3, 0, 3); toolStripSeparator11.Name = "toolStripSeparator11"; - toolStripSeparator11.Size = new System.Drawing.Size(160, 6); + toolStripSeparator11.Size = new System.Drawing.Size(162, 6); // // toolstripSeperator1 // @@ -232,7 +232,7 @@ namespace CodeImp.DoomBuilder.Windows // toolstripSeperator6.Margin = new System.Windows.Forms.Padding(0, 3, 0, 3); toolstripSeperator6.Name = "toolstripSeperator6"; - toolstripSeperator6.Size = new System.Drawing.Size(160, 6); + toolstripSeperator6.Size = new System.Drawing.Size(162, 6); // // toolStripSeparator7 // @@ -249,12 +249,12 @@ namespace CodeImp.DoomBuilder.Windows // toolStripMenuItem4 // toolStripMenuItem4.Name = "toolStripMenuItem4"; - toolStripMenuItem4.Size = new System.Drawing.Size(150, 6); + toolStripMenuItem4.Size = new System.Drawing.Size(161, 6); // // toolStripSeparator2 // toolStripSeparator2.Name = "toolStripSeparator2"; - toolStripSeparator2.Size = new System.Drawing.Size(153, 6); + toolStripSeparator2.Size = new System.Drawing.Size(164, 6); // // toolStripSeparator4 // @@ -306,7 +306,7 @@ namespace CodeImp.DoomBuilder.Windows toolStripMenuItem3, this.itemexit}); this.menufile.Name = "menufile"; - this.menufile.Size = new System.Drawing.Size(37, 20); + this.menufile.Size = new System.Drawing.Size(35, 20); this.menufile.Text = "File"; // // itemnewmap @@ -314,7 +314,7 @@ namespace CodeImp.DoomBuilder.Windows this.itemnewmap.Image = global::CodeImp.DoomBuilder.Properties.Resources.File; this.itemnewmap.Name = "itemnewmap"; this.itemnewmap.ShortcutKeyDisplayString = ""; - this.itemnewmap.Size = new System.Drawing.Size(202, 22); + this.itemnewmap.Size = new System.Drawing.Size(201, 22); this.itemnewmap.Tag = "builder_newmap"; this.itemnewmap.Text = "New Map"; this.itemnewmap.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -323,7 +323,7 @@ namespace CodeImp.DoomBuilder.Windows // this.itemopenmap.Image = global::CodeImp.DoomBuilder.Properties.Resources.OpenMap; this.itemopenmap.Name = "itemopenmap"; - this.itemopenmap.Size = new System.Drawing.Size(202, 22); + this.itemopenmap.Size = new System.Drawing.Size(201, 22); this.itemopenmap.Tag = "builder_openmap"; this.itemopenmap.Text = "Open Map..."; this.itemopenmap.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -331,7 +331,7 @@ namespace CodeImp.DoomBuilder.Windows // itemclosemap // this.itemclosemap.Name = "itemclosemap"; - this.itemclosemap.Size = new System.Drawing.Size(202, 22); + this.itemclosemap.Size = new System.Drawing.Size(201, 22); this.itemclosemap.Tag = "builder_closemap"; this.itemclosemap.Text = "Close Map"; this.itemclosemap.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -340,7 +340,7 @@ namespace CodeImp.DoomBuilder.Windows // this.itemsavemap.Image = global::CodeImp.DoomBuilder.Properties.Resources.SaveMap; this.itemsavemap.Name = "itemsavemap"; - this.itemsavemap.Size = new System.Drawing.Size(202, 22); + this.itemsavemap.Size = new System.Drawing.Size(201, 22); this.itemsavemap.Tag = "builder_savemap"; this.itemsavemap.Text = "Save Map"; this.itemsavemap.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -348,7 +348,7 @@ namespace CodeImp.DoomBuilder.Windows // itemsavemapas // this.itemsavemapas.Name = "itemsavemapas"; - this.itemsavemapas.Size = new System.Drawing.Size(202, 22); + this.itemsavemapas.Size = new System.Drawing.Size(201, 22); this.itemsavemapas.Tag = "builder_savemapas"; this.itemsavemapas.Text = "Save Map As..."; this.itemsavemapas.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -356,7 +356,7 @@ namespace CodeImp.DoomBuilder.Windows // itemsavemapinto // this.itemsavemapinto.Name = "itemsavemapinto"; - this.itemsavemapinto.Size = new System.Drawing.Size(202, 22); + this.itemsavemapinto.Size = new System.Drawing.Size(201, 22); this.itemsavemapinto.Tag = "builder_savemapinto"; this.itemsavemapinto.Text = "Save Map Into..."; this.itemsavemapinto.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -365,19 +365,19 @@ namespace CodeImp.DoomBuilder.Windows // this.toolStripMenuItem5.Margin = new System.Windows.Forms.Padding(0, 3, 0, 3); this.toolStripMenuItem5.Name = "toolStripMenuItem5"; - this.toolStripMenuItem5.Size = new System.Drawing.Size(199, 6); + this.toolStripMenuItem5.Size = new System.Drawing.Size(198, 6); // // itemnorecent // this.itemnorecent.Enabled = false; this.itemnorecent.Name = "itemnorecent"; - this.itemnorecent.Size = new System.Drawing.Size(202, 22); + this.itemnorecent.Size = new System.Drawing.Size(201, 22); this.itemnorecent.Text = "No recently opened files"; // // itemexit // this.itemexit.Name = "itemexit"; - this.itemexit.Size = new System.Drawing.Size(202, 22); + this.itemexit.Size = new System.Drawing.Size(201, 22); this.itemexit.Text = "Exit"; this.itemexit.Click += new System.EventHandler(this.itemexit_Click); // @@ -400,14 +400,14 @@ namespace CodeImp.DoomBuilder.Windows toolStripSeparator11, this.itemmapoptions}); this.menuedit.Name = "menuedit"; - this.menuedit.Size = new System.Drawing.Size(39, 20); + this.menuedit.Size = new System.Drawing.Size(37, 20); this.menuedit.Text = "Edit"; // // itemundo // this.itemundo.Image = global::CodeImp.DoomBuilder.Properties.Resources.Undo; this.itemundo.Name = "itemundo"; - this.itemundo.Size = new System.Drawing.Size(163, 22); + this.itemundo.Size = new System.Drawing.Size(165, 22); this.itemundo.Tag = "builder_undo"; this.itemundo.Text = "Undo"; this.itemundo.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -416,7 +416,7 @@ namespace CodeImp.DoomBuilder.Windows // this.itemredo.Image = global::CodeImp.DoomBuilder.Properties.Resources.Redo; this.itemredo.Name = "itemredo"; - this.itemredo.Size = new System.Drawing.Size(163, 22); + this.itemredo.Size = new System.Drawing.Size(165, 22); this.itemredo.Tag = "builder_redo"; this.itemredo.Text = "Redo"; this.itemredo.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -425,13 +425,13 @@ namespace CodeImp.DoomBuilder.Windows // this.toolStripMenuItem7.Margin = new System.Windows.Forms.Padding(0, 3, 0, 3); this.toolStripMenuItem7.Name = "toolStripMenuItem7"; - this.toolStripMenuItem7.Size = new System.Drawing.Size(160, 6); + this.toolStripMenuItem7.Size = new System.Drawing.Size(162, 6); // // itemcut // this.itemcut.Image = global::CodeImp.DoomBuilder.Properties.Resources.Cut; this.itemcut.Name = "itemcut"; - this.itemcut.Size = new System.Drawing.Size(163, 22); + this.itemcut.Size = new System.Drawing.Size(165, 22); this.itemcut.Tag = "builder_cutselection"; this.itemcut.Text = "Cut"; this.itemcut.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -440,7 +440,7 @@ namespace CodeImp.DoomBuilder.Windows // this.itemcopy.Image = global::CodeImp.DoomBuilder.Properties.Resources.Copy; this.itemcopy.Name = "itemcopy"; - this.itemcopy.Size = new System.Drawing.Size(163, 22); + this.itemcopy.Size = new System.Drawing.Size(165, 22); this.itemcopy.Tag = "builder_copyselection"; this.itemcopy.Text = "Copy"; this.itemcopy.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -449,7 +449,7 @@ namespace CodeImp.DoomBuilder.Windows // this.itempaste.Image = global::CodeImp.DoomBuilder.Properties.Resources.Paste; this.itempaste.Name = "itempaste"; - this.itempaste.Size = new System.Drawing.Size(163, 22); + this.itempaste.Size = new System.Drawing.Size(165, 22); this.itempaste.Tag = "builder_pasteselection"; this.itempaste.Text = "Paste"; this.itempaste.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -460,7 +460,7 @@ namespace CodeImp.DoomBuilder.Windows this.itemsnaptogrid.CheckState = System.Windows.Forms.CheckState.Checked; this.itemsnaptogrid.Image = global::CodeImp.DoomBuilder.Properties.Resources.Grid4; this.itemsnaptogrid.Name = "itemsnaptogrid"; - this.itemsnaptogrid.Size = new System.Drawing.Size(163, 22); + this.itemsnaptogrid.Size = new System.Drawing.Size(165, 22); this.itemsnaptogrid.Tag = "builder_togglesnap"; this.itemsnaptogrid.Text = "Snap to Grid"; this.itemsnaptogrid.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -471,7 +471,7 @@ namespace CodeImp.DoomBuilder.Windows this.itemautomerge.CheckState = System.Windows.Forms.CheckState.Checked; this.itemautomerge.Image = global::CodeImp.DoomBuilder.Properties.Resources.mergegeometry2; this.itemautomerge.Name = "itemautomerge"; - this.itemautomerge.Size = new System.Drawing.Size(163, 22); + this.itemautomerge.Size = new System.Drawing.Size(165, 22); this.itemautomerge.Tag = "builder_toggleautomerge"; this.itemautomerge.Text = "Merge Geometry"; this.itemautomerge.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -480,12 +480,12 @@ namespace CodeImp.DoomBuilder.Windows // this.toolStripMenuItem6.Margin = new System.Windows.Forms.Padding(0, 3, 0, 3); this.toolStripMenuItem6.Name = "toolStripMenuItem6"; - this.toolStripMenuItem6.Size = new System.Drawing.Size(160, 6); + this.toolStripMenuItem6.Size = new System.Drawing.Size(162, 6); // // itemgridinc // this.itemgridinc.Name = "itemgridinc"; - this.itemgridinc.Size = new System.Drawing.Size(163, 22); + this.itemgridinc.Size = new System.Drawing.Size(165, 22); this.itemgridinc.Tag = "builder_gridinc"; this.itemgridinc.Text = "Increase Grid"; this.itemgridinc.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -493,7 +493,7 @@ namespace CodeImp.DoomBuilder.Windows // itemgriddec // this.itemgriddec.Name = "itemgriddec"; - this.itemgriddec.Size = new System.Drawing.Size(163, 22); + this.itemgriddec.Size = new System.Drawing.Size(165, 22); this.itemgriddec.Tag = "builder_griddec"; this.itemgriddec.Text = "Decrease Grid"; this.itemgriddec.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -502,7 +502,7 @@ namespace CodeImp.DoomBuilder.Windows // this.itemgridsetup.Image = global::CodeImp.DoomBuilder.Properties.Resources.Grid2; this.itemgridsetup.Name = "itemgridsetup"; - this.itemgridsetup.Size = new System.Drawing.Size(163, 22); + this.itemgridsetup.Size = new System.Drawing.Size(165, 22); this.itemgridsetup.Tag = "builder_gridsetup"; this.itemgridsetup.Text = "Grid Setup..."; this.itemgridsetup.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -511,7 +511,7 @@ namespace CodeImp.DoomBuilder.Windows // this.itemmapoptions.Image = global::CodeImp.DoomBuilder.Properties.Resources.Properties; this.itemmapoptions.Name = "itemmapoptions"; - this.itemmapoptions.Size = new System.Drawing.Size(163, 22); + this.itemmapoptions.Size = new System.Drawing.Size(165, 22); this.itemmapoptions.Tag = "builder_mapoptions"; this.itemmapoptions.Text = "Map Options...."; this.itemmapoptions.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -528,14 +528,14 @@ namespace CodeImp.DoomBuilder.Windows this.toolStripMenuItem10, this.itemscripteditor}); this.menuview.Name = "menuview"; - this.menuview.Size = new System.Drawing.Size(44, 20); + this.menuview.Size = new System.Drawing.Size(41, 20); this.menuview.Text = "View"; // // itemthingsfilter // this.itemthingsfilter.Image = global::CodeImp.DoomBuilder.Properties.Resources.Filter; this.itemthingsfilter.Name = "itemthingsfilter"; - this.itemthingsfilter.Size = new System.Drawing.Size(209, 22); + this.itemthingsfilter.Size = new System.Drawing.Size(210, 22); this.itemthingsfilter.Tag = "builder_thingsfilterssetup"; this.itemthingsfilter.Text = "Configure Things Filters..."; this.itemthingsfilter.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -544,13 +544,13 @@ namespace CodeImp.DoomBuilder.Windows // this.toolStripMenuItem9.Margin = new System.Windows.Forms.Padding(0, 3, 0, 3); this.toolStripMenuItem9.Name = "toolStripMenuItem9"; - this.toolStripMenuItem9.Size = new System.Drawing.Size(206, 6); + this.toolStripMenuItem9.Size = new System.Drawing.Size(207, 6); // // itemviewnormal // this.itemviewnormal.Image = global::CodeImp.DoomBuilder.Properties.Resources.ViewNormal; this.itemviewnormal.Name = "itemviewnormal"; - this.itemviewnormal.Size = new System.Drawing.Size(209, 22); + this.itemviewnormal.Size = new System.Drawing.Size(210, 22); this.itemviewnormal.Tag = "builder_viewmodenormal"; this.itemviewnormal.Text = "Wireframe"; this.itemviewnormal.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -559,7 +559,7 @@ namespace CodeImp.DoomBuilder.Windows // this.itemviewbrightness.Image = global::CodeImp.DoomBuilder.Properties.Resources.ViewBrightness; this.itemviewbrightness.Name = "itemviewbrightness"; - this.itemviewbrightness.Size = new System.Drawing.Size(209, 22); + this.itemviewbrightness.Size = new System.Drawing.Size(210, 22); this.itemviewbrightness.Tag = "builder_viewmodebrightness"; this.itemviewbrightness.Text = "Brightness Levels"; this.itemviewbrightness.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -568,7 +568,7 @@ namespace CodeImp.DoomBuilder.Windows // this.itemviewfloors.Image = global::CodeImp.DoomBuilder.Properties.Resources.ViewTextureFloor; this.itemviewfloors.Name = "itemviewfloors"; - this.itemviewfloors.Size = new System.Drawing.Size(209, 22); + this.itemviewfloors.Size = new System.Drawing.Size(210, 22); this.itemviewfloors.Tag = "builder_viewmodefloors"; this.itemviewfloors.Text = "Floor Textures"; this.itemviewfloors.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -577,7 +577,7 @@ namespace CodeImp.DoomBuilder.Windows // this.itemviewceilings.Image = global::CodeImp.DoomBuilder.Properties.Resources.ViewTextureCeiling; this.itemviewceilings.Name = "itemviewceilings"; - this.itemviewceilings.Size = new System.Drawing.Size(209, 22); + this.itemviewceilings.Size = new System.Drawing.Size(210, 22); this.itemviewceilings.Tag = "builder_viewmodeceilings"; this.itemviewceilings.Text = "Ceiling Textures"; this.itemviewceilings.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -586,13 +586,13 @@ namespace CodeImp.DoomBuilder.Windows // this.toolStripMenuItem10.Margin = new System.Windows.Forms.Padding(0, 3, 0, 3); this.toolStripMenuItem10.Name = "toolStripMenuItem10"; - this.toolStripMenuItem10.Size = new System.Drawing.Size(206, 6); + this.toolStripMenuItem10.Size = new System.Drawing.Size(207, 6); // // itemscripteditor // this.itemscripteditor.Image = global::CodeImp.DoomBuilder.Properties.Resources.Script2; this.itemscripteditor.Name = "itemscripteditor"; - this.itemscripteditor.Size = new System.Drawing.Size(209, 22); + this.itemscripteditor.Size = new System.Drawing.Size(210, 22); this.itemscripteditor.Tag = "builder_openscripteditor"; this.itemscripteditor.Text = "Script Editor..."; this.itemscripteditor.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -600,7 +600,7 @@ namespace CodeImp.DoomBuilder.Windows // menumode // this.menumode.Name = "menumode"; - this.menumode.Size = new System.Drawing.Size(50, 20); + this.menumode.Size = new System.Drawing.Size(45, 20); this.menumode.Text = "Mode"; // // menuprefabs @@ -611,13 +611,13 @@ namespace CodeImp.DoomBuilder.Windows this.toolStripMenuItem12, this.itemcreateprefab}); this.menuprefabs.Name = "menuprefabs"; - this.menuprefabs.Size = new System.Drawing.Size(58, 20); + this.menuprefabs.Size = new System.Drawing.Size(56, 20); this.menuprefabs.Text = "Prefabs"; // // iteminsertprefabfile // this.iteminsertprefabfile.Name = "iteminsertprefabfile"; - this.iteminsertprefabfile.Size = new System.Drawing.Size(199, 22); + this.iteminsertprefabfile.Size = new System.Drawing.Size(205, 22); this.iteminsertprefabfile.Tag = "builder_insertprefabfile"; this.iteminsertprefabfile.Text = "Insert Prefab from File..."; this.iteminsertprefabfile.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -625,7 +625,7 @@ namespace CodeImp.DoomBuilder.Windows // iteminsertpreviousprefab // this.iteminsertpreviousprefab.Name = "iteminsertpreviousprefab"; - this.iteminsertpreviousprefab.Size = new System.Drawing.Size(199, 22); + this.iteminsertpreviousprefab.Size = new System.Drawing.Size(205, 22); this.iteminsertpreviousprefab.Tag = "builder_insertpreviousprefab"; this.iteminsertpreviousprefab.Text = "Insert Previous Prefab"; this.iteminsertpreviousprefab.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -634,12 +634,12 @@ namespace CodeImp.DoomBuilder.Windows // this.toolStripMenuItem12.Margin = new System.Windows.Forms.Padding(0, 3, 0, 3); this.toolStripMenuItem12.Name = "toolStripMenuItem12"; - this.toolStripMenuItem12.Size = new System.Drawing.Size(196, 6); + this.toolStripMenuItem12.Size = new System.Drawing.Size(202, 6); // // itemcreateprefab // this.itemcreateprefab.Name = "itemcreateprefab"; - this.itemcreateprefab.Size = new System.Drawing.Size(199, 22); + this.itemcreateprefab.Size = new System.Drawing.Size(205, 22); this.itemcreateprefab.Tag = "builder_createprefab"; this.itemcreateprefab.Text = "Create From Selection..."; this.itemcreateprefab.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -648,34 +648,43 @@ namespace CodeImp.DoomBuilder.Windows // this.menutools.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.itemreloadresources, - this.errorsAndWarningsToolStripMenuItem, + this.itemshowerrors, this.toolStripMenuItem8, this.configurationToolStripMenuItem, this.preferencesToolStripMenuItem, this.toolStripMenuItem11, this.itemtestmap}); this.menutools.Name = "menutools"; - this.menutools.Size = new System.Drawing.Size(48, 20); + this.menutools.Size = new System.Drawing.Size(44, 20); this.menutools.Text = "Tools"; // // itemreloadresources // this.itemreloadresources.Name = "itemreloadresources"; - this.itemreloadresources.Size = new System.Drawing.Size(196, 22); + this.itemreloadresources.Size = new System.Drawing.Size(197, 22); this.itemreloadresources.Tag = "builder_reloadresources"; this.itemreloadresources.Text = "Reload Resources"; this.itemreloadresources.Click += new System.EventHandler(this.InvokeTaggedAction); // + // itemshowerrors + // + this.itemshowerrors.Image = global::CodeImp.DoomBuilder.Properties.Resources.Warning; + this.itemshowerrors.Name = "itemshowerrors"; + this.itemshowerrors.Size = new System.Drawing.Size(197, 22); + this.itemshowerrors.Tag = "builder_showerrors"; + this.itemshowerrors.Text = "Errors and Warnings..."; + this.itemshowerrors.Click += new System.EventHandler(this.InvokeTaggedAction); + // // toolStripMenuItem8 // this.toolStripMenuItem8.Margin = new System.Windows.Forms.Padding(0, 3, 0, 3); this.toolStripMenuItem8.Name = "toolStripMenuItem8"; - this.toolStripMenuItem8.Size = new System.Drawing.Size(193, 6); + this.toolStripMenuItem8.Size = new System.Drawing.Size(194, 6); // // configurationToolStripMenuItem // this.configurationToolStripMenuItem.Name = "configurationToolStripMenuItem"; - this.configurationToolStripMenuItem.Size = new System.Drawing.Size(196, 22); + this.configurationToolStripMenuItem.Size = new System.Drawing.Size(197, 22); this.configurationToolStripMenuItem.Tag = "builder_configuration"; this.configurationToolStripMenuItem.Text = "Game Configurations..."; this.configurationToolStripMenuItem.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -683,7 +692,7 @@ namespace CodeImp.DoomBuilder.Windows // preferencesToolStripMenuItem // this.preferencesToolStripMenuItem.Name = "preferencesToolStripMenuItem"; - this.preferencesToolStripMenuItem.Size = new System.Drawing.Size(196, 22); + this.preferencesToolStripMenuItem.Size = new System.Drawing.Size(197, 22); this.preferencesToolStripMenuItem.Tag = "builder_preferences"; this.preferencesToolStripMenuItem.Text = "Preferences..."; this.preferencesToolStripMenuItem.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -692,13 +701,13 @@ namespace CodeImp.DoomBuilder.Windows // this.toolStripMenuItem11.Margin = new System.Windows.Forms.Padding(0, 3, 0, 3); this.toolStripMenuItem11.Name = "toolStripMenuItem11"; - this.toolStripMenuItem11.Size = new System.Drawing.Size(193, 6); + this.toolStripMenuItem11.Size = new System.Drawing.Size(194, 6); // // itemtestmap // this.itemtestmap.Image = global::CodeImp.DoomBuilder.Properties.Resources.Test; this.itemtestmap.Name = "itemtestmap"; - this.itemtestmap.Size = new System.Drawing.Size(196, 22); + this.itemtestmap.Size = new System.Drawing.Size(197, 22); this.itemtestmap.Tag = "builder_testmap"; this.itemtestmap.Text = "Test Map"; this.itemtestmap.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -708,13 +717,13 @@ namespace CodeImp.DoomBuilder.Windows this.menuhelp.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.itemhelpabout}); this.menuhelp.Name = "menuhelp"; - this.menuhelp.Size = new System.Drawing.Size(44, 20); + this.menuhelp.Size = new System.Drawing.Size(40, 20); this.menuhelp.Text = "Help"; // // itemhelpabout // this.itemhelpabout.Name = "itemhelpabout"; - this.itemhelpabout.Size = new System.Drawing.Size(192, 22); + this.itemhelpabout.Size = new System.Drawing.Size(191, 22); this.itemhelpabout.Text = "About Doom Builder..."; this.itemhelpabout.Click += new System.EventHandler(this.itemhelpabout_Click); // @@ -1104,7 +1113,7 @@ namespace CodeImp.DoomBuilder.Windows // itemgrid1024 // this.itemgrid1024.Name = "itemgrid1024"; - this.itemgrid1024.Size = new System.Drawing.Size(153, 22); + this.itemgrid1024.Size = new System.Drawing.Size(164, 22); this.itemgrid1024.Tag = "1024"; this.itemgrid1024.Text = "1024 mp"; this.itemgrid1024.Click += new System.EventHandler(this.itemgridsize_Click); @@ -1112,7 +1121,7 @@ namespace CodeImp.DoomBuilder.Windows // itemgrid512 // this.itemgrid512.Name = "itemgrid512"; - this.itemgrid512.Size = new System.Drawing.Size(153, 22); + this.itemgrid512.Size = new System.Drawing.Size(164, 22); this.itemgrid512.Tag = "512"; this.itemgrid512.Text = "512 mp"; this.itemgrid512.Click += new System.EventHandler(this.itemgridsize_Click); @@ -1120,7 +1129,7 @@ namespace CodeImp.DoomBuilder.Windows // itemgrid256 // this.itemgrid256.Name = "itemgrid256"; - this.itemgrid256.Size = new System.Drawing.Size(153, 22); + this.itemgrid256.Size = new System.Drawing.Size(164, 22); this.itemgrid256.Tag = "256"; this.itemgrid256.Text = "256 mp"; this.itemgrid256.Click += new System.EventHandler(this.itemgridsize_Click); @@ -1128,7 +1137,7 @@ namespace CodeImp.DoomBuilder.Windows // itemgrid128 // this.itemgrid128.Name = "itemgrid128"; - this.itemgrid128.Size = new System.Drawing.Size(153, 22); + this.itemgrid128.Size = new System.Drawing.Size(164, 22); this.itemgrid128.Tag = "128"; this.itemgrid128.Text = "128 mp"; this.itemgrid128.Click += new System.EventHandler(this.itemgridsize_Click); @@ -1136,7 +1145,7 @@ namespace CodeImp.DoomBuilder.Windows // itemgrid64 // this.itemgrid64.Name = "itemgrid64"; - this.itemgrid64.Size = new System.Drawing.Size(153, 22); + this.itemgrid64.Size = new System.Drawing.Size(164, 22); this.itemgrid64.Tag = "64"; this.itemgrid64.Text = "64 mp"; this.itemgrid64.Click += new System.EventHandler(this.itemgridsize_Click); @@ -1144,7 +1153,7 @@ namespace CodeImp.DoomBuilder.Windows // itemgrid32 // this.itemgrid32.Name = "itemgrid32"; - this.itemgrid32.Size = new System.Drawing.Size(153, 22); + this.itemgrid32.Size = new System.Drawing.Size(164, 22); this.itemgrid32.Tag = "32"; this.itemgrid32.Text = "32 mp"; this.itemgrid32.Click += new System.EventHandler(this.itemgridsize_Click); @@ -1152,7 +1161,7 @@ namespace CodeImp.DoomBuilder.Windows // itemgrid16 // this.itemgrid16.Name = "itemgrid16"; - this.itemgrid16.Size = new System.Drawing.Size(153, 22); + this.itemgrid16.Size = new System.Drawing.Size(164, 22); this.itemgrid16.Tag = "16"; this.itemgrid16.Text = "16 mp"; this.itemgrid16.Click += new System.EventHandler(this.itemgridsize_Click); @@ -1160,7 +1169,7 @@ namespace CodeImp.DoomBuilder.Windows // itemgrid8 // this.itemgrid8.Name = "itemgrid8"; - this.itemgrid8.Size = new System.Drawing.Size(153, 22); + this.itemgrid8.Size = new System.Drawing.Size(164, 22); this.itemgrid8.Tag = "8"; this.itemgrid8.Text = "8 mp"; this.itemgrid8.Click += new System.EventHandler(this.itemgridsize_Click); @@ -1168,7 +1177,7 @@ namespace CodeImp.DoomBuilder.Windows // itemgrid4 // this.itemgrid4.Name = "itemgrid4"; - this.itemgrid4.Size = new System.Drawing.Size(153, 22); + this.itemgrid4.Size = new System.Drawing.Size(164, 22); this.itemgrid4.Tag = "4"; this.itemgrid4.Text = "4 mp"; this.itemgrid4.Click += new System.EventHandler(this.itemgridsize_Click); @@ -1176,7 +1185,7 @@ namespace CodeImp.DoomBuilder.Windows // itemgridcustom // this.itemgridcustom.Name = "itemgridcustom"; - this.itemgridcustom.Size = new System.Drawing.Size(153, 22); + this.itemgridcustom.Size = new System.Drawing.Size(164, 22); this.itemgridcustom.Text = "Customize..."; this.itemgridcustom.Click += new System.EventHandler(this.itemgridcustom_Click); // @@ -1215,7 +1224,7 @@ namespace CodeImp.DoomBuilder.Windows // itemzoom200 // this.itemzoom200.Name = "itemzoom200"; - this.itemzoom200.Size = new System.Drawing.Size(156, 22); + this.itemzoom200.Size = new System.Drawing.Size(167, 22); this.itemzoom200.Tag = "200"; this.itemzoom200.Text = "200%"; this.itemzoom200.Click += new System.EventHandler(this.itemzoomto_Click); @@ -1223,7 +1232,7 @@ namespace CodeImp.DoomBuilder.Windows // itemzoom100 // this.itemzoom100.Name = "itemzoom100"; - this.itemzoom100.Size = new System.Drawing.Size(156, 22); + this.itemzoom100.Size = new System.Drawing.Size(167, 22); this.itemzoom100.Tag = "100"; this.itemzoom100.Text = "100%"; this.itemzoom100.Click += new System.EventHandler(this.itemzoomto_Click); @@ -1231,7 +1240,7 @@ namespace CodeImp.DoomBuilder.Windows // itemzoom50 // this.itemzoom50.Name = "itemzoom50"; - this.itemzoom50.Size = new System.Drawing.Size(156, 22); + this.itemzoom50.Size = new System.Drawing.Size(167, 22); this.itemzoom50.Tag = "50"; this.itemzoom50.Text = "50%"; this.itemzoom50.Click += new System.EventHandler(this.itemzoomto_Click); @@ -1239,7 +1248,7 @@ namespace CodeImp.DoomBuilder.Windows // itemzoom25 // this.itemzoom25.Name = "itemzoom25"; - this.itemzoom25.Size = new System.Drawing.Size(156, 22); + this.itemzoom25.Size = new System.Drawing.Size(167, 22); this.itemzoom25.Tag = "25"; this.itemzoom25.Text = "25%"; this.itemzoom25.Click += new System.EventHandler(this.itemzoomto_Click); @@ -1247,7 +1256,7 @@ namespace CodeImp.DoomBuilder.Windows // itemzoom10 // this.itemzoom10.Name = "itemzoom10"; - this.itemzoom10.Size = new System.Drawing.Size(156, 22); + this.itemzoom10.Size = new System.Drawing.Size(167, 22); this.itemzoom10.Tag = "10"; this.itemzoom10.Text = "10%"; this.itemzoom10.Click += new System.EventHandler(this.itemzoomto_Click); @@ -1255,7 +1264,7 @@ namespace CodeImp.DoomBuilder.Windows // itemzoom5 // this.itemzoom5.Name = "itemzoom5"; - this.itemzoom5.Size = new System.Drawing.Size(156, 22); + this.itemzoom5.Size = new System.Drawing.Size(167, 22); this.itemzoom5.Tag = "5"; this.itemzoom5.Text = "5%"; this.itemzoom5.Click += new System.EventHandler(this.itemzoomto_Click); @@ -1263,7 +1272,7 @@ namespace CodeImp.DoomBuilder.Windows // itemzoomfittoscreen // this.itemzoomfittoscreen.Name = "itemzoomfittoscreen"; - this.itemzoomfittoscreen.Size = new System.Drawing.Size(156, 22); + this.itemzoomfittoscreen.Size = new System.Drawing.Size(167, 22); this.itemzoomfittoscreen.Text = "Fit to screen"; this.itemzoomfittoscreen.Click += new System.EventHandler(this.itemzoomfittoscreen_Click); // @@ -1422,13 +1431,6 @@ namespace CodeImp.DoomBuilder.Windows // this.statusresetter.Tick += new System.EventHandler(this.statusresetter_Tick); // - // errorsAndWarningsToolStripMenuItem - // - this.errorsAndWarningsToolStripMenuItem.Image = global::CodeImp.DoomBuilder.Properties.Resources.Warning; - this.errorsAndWarningsToolStripMenuItem.Name = "errorsAndWarningsToolStripMenuItem"; - this.errorsAndWarningsToolStripMenuItem.Size = new System.Drawing.Size(196, 22); - this.errorsAndWarningsToolStripMenuItem.Text = "Errors and Warnings..."; - // // MainForm // this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); @@ -1586,6 +1588,6 @@ namespace CodeImp.DoomBuilder.Windows private System.Windows.Forms.Button buttontoggleinfo; private System.Windows.Forms.Label labelcollapsedinfo; private System.Windows.Forms.Timer statusresetter; - private System.Windows.Forms.ToolStripMenuItem errorsAndWarningsToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem itemshowerrors; } } \ No newline at end of file diff --git a/Source/Windows/MainForm.cs b/Source/Windows/MainForm.cs index 718e6b29..e0f3e60a 100644 --- a/Source/Windows/MainForm.cs +++ b/Source/Windows/MainForm.cs @@ -58,9 +58,11 @@ namespace CodeImp.DoomBuilder.Windows private const string STATUS_LOADING_TEXT = "Loading resources..."; private const int WARNING_FLASH_COUNT = 10; private const int WARNING_FLASH_INTERVAL = 100; - private const int WARNING_RESET_DELAY = 3000; + private const int WARNING_RESET_DELAY = 4000; + private const int INFO_RESET_DELAY = 4000; private const int ACTION_FLASH_COUNT = 1; private const int ACTION_FLASH_INTERVAL = 100; + private const int ACTION_RESET_DELAY = 4000; private readonly Image[,] STATUS_IMAGES = new Image[2, 4] { @@ -564,14 +566,21 @@ namespace CodeImp.DoomBuilder.Windows else newstatus.message = STATUS_READY_TEXT; break; + + // Shows information without flashing the icon. + case StatusType.Info: + statusresetter.Interval = INFO_RESET_DELAY; + statusresetter.Start(); + break; // Shows action information and flashes up the status icon once. case StatusType.Action: - MessageBeep(MessageBeepType.Warning); statusflashicon = true; statusflasher.Interval = ACTION_FLASH_INTERVAL; statusflashcount = ACTION_FLASH_COUNT; statusflasher.Start(); + statusresetter.Interval = ACTION_RESET_DELAY; + statusresetter.Start(); break; // Shows a warning, makes a warning sound and flashes a warning icon. @@ -1855,7 +1864,9 @@ namespace CodeImp.DoomBuilder.Windows [BeginAction("showerrors")] internal void ShowErrors() { - // TODO + ErrorsForm errform = new ErrorsForm(); + errform.ShowDialog(this); + errform.Dispose(); } // Game Configuration action diff --git a/Source/ZDoom/ActorStructure.cs b/Source/ZDoom/ActorStructure.cs index 4f62d240..886829e3 100644 --- a/Source/ZDoom/ActorStructure.cs +++ b/Source/ZDoom/ActorStructure.cs @@ -136,7 +136,7 @@ namespace CodeImp.DoomBuilder.ZDoom if(other != null) InheritFrom(other); else - General.WriteLogLine("WARNING: Unable to find the DECORATE class '" + inheritclass + "' to inherit from, while parsing '" + classname + "'"); + General.ErrorLogger.Add(ErrorType.Warning, "Unable to find the DECORATE class '" + inheritclass + "' to inherit from, while parsing '" + classname + "'"); } } else if(token == "replaces") diff --git a/Source/ZDoom/DecorateParser.cs b/Source/ZDoom/DecorateParser.cs index f0dfb744..ae35f7bf 100644 --- a/Source/ZDoom/DecorateParser.cs +++ b/Source/ZDoom/DecorateParser.cs @@ -115,7 +115,7 @@ namespace CodeImp.DoomBuilder.ZDoom if(GetArchivedActorByName(actor.ReplacesClass) != null) archivedactors[actor.ReplacesClass.ToLowerInvariant()] = actor; else - General.WriteLogLine("WARNING: Unable to find the DECORATE class '" + actor.ReplacesClass + "' to replace, while parsing '" + actor.ClassName + "'"); + General.ErrorLogger.Add(ErrorType.Warning, "Unable to find the DECORATE class '" + actor.ReplacesClass + "' to replace, while parsing '" + actor.ClassName + "'"); if(actor.CheckActorSupported()) {