diff --git a/Source/Builder.csproj b/Source/Builder.csproj index ca05432b..c1e824a5 100644 --- a/Source/Builder.csproj +++ b/Source/Builder.csproj @@ -666,6 +666,7 @@ + @@ -677,6 +678,9 @@ + + + diff --git a/Source/BuilderModes/ClassicModes/EditSelectionMode.cs b/Source/BuilderModes/ClassicModes/EditSelectionMode.cs index 3388abf2..7f82cc28 100644 --- a/Source/BuilderModes/ClassicModes/EditSelectionMode.cs +++ b/Source/BuilderModes/ClassicModes/EditSelectionMode.cs @@ -712,7 +712,7 @@ namespace CodeImp.DoomBuilder.BuilderModes } else { - General.Interface.DisplayWarning("Please make a selection first!"); + General.Interface.DisplayStatus(StatusType.Warning, "Please make a selection first!"); // Cancel now General.Editing.CancelMode(); diff --git a/Source/Controls/ScriptEditorPanel.cs b/Source/Controls/ScriptEditorPanel.cs index 3678a448..055a50cf 100644 --- a/Source/Controls/ScriptEditorPanel.cs +++ b/Source/Controls/ScriptEditorPanel.cs @@ -559,15 +559,15 @@ namespace CodeImp.DoomBuilder.Controls } // Compile now - General.MainWindow.DisplayStatus("Compiling script " + t.Text + "..."); + General.MainWindow.DisplayStatus(StatusType.Busy, "Compiling script " + t.Text + "..."); Cursor.Current = Cursors.WaitCursor; t.Compile(); // Show warning if((compilererrors != null) && (compilererrors.Count > 0)) - General.MainWindow.DisplayWarning(compilererrors.Count.ToString() + " errors while compiling " + t.Text + "!"); + General.MainWindow.DisplayStatus(StatusType.Warning, compilererrors.Count.ToString() + " errors while compiling " + t.Text + "!"); else - General.MainWindow.DisplayReady(); + General.MainWindow.DisplayStatus(StatusType.Info, "Script " + t.Text + " compiled without errors."); Cursor.Current = Cursors.Default; UpdateToolbar(true); diff --git a/Source/Data/DataManager.cs b/Source/Data/DataManager.cs index 12829e67..bad54c79 100644 --- a/Source/Data/DataManager.cs +++ b/Source/Data/DataManager.cs @@ -470,7 +470,7 @@ namespace CodeImp.DoomBuilder.Data // Done notifiedbusy = false; backgroundloader = null; - General.SendMessage(General.MainWindow.Handle, (int)MainForm.ThreadMessages.UpdateStatusIcon, 0, 0); + General.SendMessage(General.MainWindow.Handle, (int)MainForm.ThreadMessages.UpdateStatus, 0, 0); } } @@ -516,7 +516,7 @@ namespace CodeImp.DoomBuilder.Data if(!notifiedbusy) { notifiedbusy = true; - General.SendMessage(General.MainWindow.Handle, (int)MainForm.ThreadMessages.UpdateStatusIcon, 0, 0); + General.SendMessage(General.MainWindow.Handle, (int)MainForm.ThreadMessages.UpdateStatus, 0, 0); } Thread.Sleep(0); } @@ -530,7 +530,7 @@ namespace CodeImp.DoomBuilder.Data if(!notifiedbusy) { notifiedbusy = true; - General.SendMessage(General.MainWindow.Handle, (int)MainForm.ThreadMessages.UpdateStatusIcon, 0, 0); + General.SendMessage(General.MainWindow.Handle, (int)MainForm.ThreadMessages.UpdateStatus, 0, 0); } Thread.Sleep(0); } @@ -539,7 +539,7 @@ namespace CodeImp.DoomBuilder.Data if(notifiedbusy) { notifiedbusy = false; - General.SendMessage(General.MainWindow.Handle, (int)MainForm.ThreadMessages.UpdateStatusIcon, 0, 0); + General.SendMessage(General.MainWindow.Handle, (int)MainForm.ThreadMessages.UpdateStatus, 0, 0); } // Wait longer to release CPU resources @@ -575,7 +575,7 @@ namespace CodeImp.DoomBuilder.Data } // Update icon - General.SendMessage(General.MainWindow.Handle, (int)MainForm.ThreadMessages.UpdateStatusIcon, 0, 0); + General.SendMessage(General.MainWindow.Handle, (int)MainForm.ThreadMessages.UpdateStatus, 0, 0); } // This updates the used-in-map status on all textures and flats diff --git a/Source/Editing/CopyPasteManager.cs b/Source/Editing/CopyPasteManager.cs index 6393cd9e..15f3da88 100644 --- a/Source/Editing/CopyPasteManager.cs +++ b/Source/Editing/CopyPasteManager.cs @@ -138,8 +138,9 @@ namespace CodeImp.DoomBuilder.Editing internal void PastePrefab(Stream filedata) { // Create undo + General.MainWindow.DisplayStatus(StatusType.Action, "Inserted prefab."); General.Map.UndoRedo.CreateUndo("Insert prefab"); - + // Decompress stream MemoryStream decompressed = new MemoryStream((int)filedata.Length * 3); filedata.Seek(0, SeekOrigin.Begin); @@ -149,7 +150,7 @@ namespace CodeImp.DoomBuilder.Editing // Mark all current geometry General.Map.Map.ClearAllMarks(true); - + // Read data stream UniversalStreamReader reader = new UniversalStreamReader(); reader.StrictChecking = false; @@ -157,10 +158,10 @@ namespace CodeImp.DoomBuilder.Editing // The new geometry is not marked, so invert the marks to get it marked General.Map.Map.InvertAllMarks(); - + // Convert UDMF fields back to flags and activations, if needed if(!(General.Map.FormatInterface is UniversalMapSetIO)) General.Map.Map.TranslateFromUDMF(); - + // Done memstream.Dispose(); General.Map.Map.UpdateConfiguration(); @@ -170,7 +171,7 @@ namespace CodeImp.DoomBuilder.Editing } // This performs the copy. Returns false when copy was cancelled. - private bool DoCopySelection() + private bool DoCopySelection(string desc) { // Let the plugins know if(General.Plugins.OnCopyBegin()) @@ -180,6 +181,8 @@ namespace CodeImp.DoomBuilder.Editing // that need to be copied. if(General.Editing.Mode.OnCopyBegin()) { + General.MainWindow.DisplayStatus(StatusType.Action, desc); + // Copy the marked geometry // This links sidedefs that are not linked to a marked sector to a virtual sector MapSet copyset = General.Map.Map.CloneMarked(); @@ -224,6 +227,7 @@ namespace CodeImp.DoomBuilder.Editing if(General.Editing.Mode.OnPasteBegin()) { // Create undo + General.MainWindow.DisplayStatus(StatusType.Action, "Pasted selected elements."); General.Map.UndoRedo.CreateUndo("Paste"); // Read from clipboard @@ -273,7 +277,7 @@ namespace CodeImp.DoomBuilder.Editing [BeginAction("copyselection")] public void CopySelection() { - DoCopySelection(); + DoCopySelection("Copied selected elements."); } // This cuts the current selection @@ -281,7 +285,7 @@ namespace CodeImp.DoomBuilder.Editing public void CutSelection() { // Copy selected geometry - if(DoCopySelection()) + if(DoCopySelection("Cut selected elements.")) { // Get the delete action and check if it's bound Action deleteitem = General.Actions["builder_deleteitem"]; @@ -294,7 +298,7 @@ namespace CodeImp.DoomBuilder.Editing else { // Action not bound - General.Interface.DisplayWarning("Cannot remove that in this mode."); + General.Interface.DisplayStatus(StatusType.Warning, "Cannot remove that in this mode."); } } } diff --git a/Source/General/General.cs b/Source/General/General.cs index dc397089..6e58db8b 100644 --- a/Source/General/General.cs +++ b/Source/General/General.cs @@ -295,7 +295,7 @@ namespace CodeImp.DoomBuilder string name, fullfilename; // Display status - mainwindow.DisplayStatus("Loading game configurations..."); + mainwindow.DisplayStatus(StatusType.Busy, "Loading game configurations..."); // Make array configs = new List(); @@ -329,7 +329,7 @@ namespace CodeImp.DoomBuilder string[] filenames; // Display status - mainwindow.DisplayStatus("Loading nodebuilder configurations..."); + mainwindow.DisplayStatus(StatusType.Busy, "Loading nodebuilder configurations..."); // Make array nodebuilders = new List(); @@ -391,7 +391,7 @@ namespace CodeImp.DoomBuilder string[] filenames; // Display status - mainwindow.DisplayStatus("Loading script configurations..."); + mainwindow.DisplayStatus(StatusType.Busy, "Loading script configurations..."); // Make collection scriptconfigs = new Dictionary(); @@ -444,7 +444,7 @@ namespace CodeImp.DoomBuilder string[] filenames; // Display status - mainwindow.DisplayStatus("Loading compiler configurations..."); + mainwindow.DisplayStatus(StatusType.Busy, "Loading compiler configurations..."); // Make array compilers = new List(); @@ -882,7 +882,7 @@ namespace CodeImp.DoomBuilder if(optionswindow.ShowDialog(mainwindow) == DialogResult.OK) { // Display status - mainwindow.DisplayStatus("Creating new map..."); + mainwindow.DisplayStatus(StatusType.Busy, "Creating new map..."); Cursor.Current = Cursors.WaitCursor; // Let the plugins know @@ -935,7 +935,7 @@ namespace CodeImp.DoomBuilder if(General.AskSaveMap()) { // Display status - mainwindow.DisplayStatus("Closing map..."); + mainwindow.DisplayStatus(StatusType.Busy, "Closing map..."); General.WriteLogLine("Unloading map..."); Cursor.Current = Cursors.WaitCursor; @@ -1012,7 +1012,7 @@ namespace CodeImp.DoomBuilder internal static void OpenMapFileWithOptions(string filename, MapOptions options) { // Display status - mainwindow.DisplayStatus("Opening map file..."); + mainwindow.DisplayStatus(StatusType.Busy, "Opening map file..."); Cursor.Current = Cursors.WaitCursor; // Let the plugins know @@ -1072,7 +1072,7 @@ namespace CodeImp.DoomBuilder else { // Display status - mainwindow.DisplayStatus("Saving map file..."); + mainwindow.DisplayStatus(StatusType.Busy, "Saving map file..."); Cursor.Current = Cursors.WaitCursor; // Save the map @@ -1116,7 +1116,7 @@ namespace CodeImp.DoomBuilder if(savefile.ShowDialog(mainwindow) == DialogResult.OK) { // Display status - mainwindow.DisplayStatus("Saving map file..."); + mainwindow.DisplayStatus(StatusType.Busy, "Saving map file..."); Cursor.Current = Cursors.WaitCursor; // Save the map @@ -1160,7 +1160,7 @@ namespace CodeImp.DoomBuilder if(savefile.ShowDialog(mainwindow) == DialogResult.OK) { // Display status - mainwindow.DisplayStatus("Saving map file..."); + mainwindow.DisplayStatus(StatusType.Busy, "Saving map file..."); Cursor.Current = Cursors.WaitCursor; // Save the map diff --git a/Source/General/Launcher.cs b/Source/General/Launcher.cs index 09f1b30e..d01a6cfa 100644 --- a/Source/General/Launcher.cs +++ b/Source/General/Launcher.cs @@ -26,6 +26,7 @@ using CodeImp.DoomBuilder.Data; using System.Diagnostics; using CodeImp.DoomBuilder.Actions; using System.Windows.Forms; +using CodeImp.DoomBuilder.Windows; #endregion @@ -279,7 +280,7 @@ namespace CodeImp.DoomBuilder General.WriteLogLine("Program parameters: " + processinfo.Arguments); // Disable interface - General.MainWindow.DisplayStatus("Waiting for game application to finish..."); + General.MainWindow.DisplayStatus(StatusType.Busy, "Waiting for game application to finish..."); try { diff --git a/Source/General/MapManager.cs b/Source/General/MapManager.cs index 5cefbb09..0846ca64 100644 --- a/Source/General/MapManager.cs +++ b/Source/General/MapManager.cs @@ -391,7 +391,8 @@ namespace CodeImp.DoomBuilder internal bool SaveMap(string newfilepathname, int savemode) { MapSet outputset; - string nodebuildername, oldstatus, settingsfile; + string nodebuildername, settingsfile; + StatusInfo oldstatus; WAD targetwad; int index; bool includenodes = false; @@ -469,8 +470,8 @@ namespace CodeImp.DoomBuilder nodebuildername = savemode == SAVE_TEST ? configinfo.NodebuilderTest : configinfo.NodebuilderSave; // Build the nodes - oldstatus = General.MainWindow.GetCurrentSatus(); - General.MainWindow.DisplayStatus("Building map nodes..."); + oldstatus = General.MainWindow.Status; + General.MainWindow.DisplayStatus(StatusType.Busy, "Building map nodes..."); if(!string.IsNullOrEmpty(nodebuildername)) includenodes = BuildNodes(nodebuildername, true); else @@ -1395,15 +1396,15 @@ namespace CodeImp.DoomBuilder internal void ReloadResources() { DataLocation maplocation; - string oldstatus; + StatusInfo oldstatus; Cursor oldcursor; // Keep old display info - oldstatus = General.MainWindow.GetCurrentSatus(); + oldstatus = General.MainWindow.Status; oldcursor = Cursor.Current; // Show status - General.MainWindow.DisplayStatus("Reloading data resources..."); + General.MainWindow.DisplayStatus(StatusType.Busy, "Reloading data resources..."); Cursor.Current = Cursors.WaitCursor; // Clean up diff --git a/Source/Plugins/PluginManager.cs b/Source/Plugins/PluginManager.cs index 3f3121bc..0faaed6b 100644 --- a/Source/Plugins/PluginManager.cs +++ b/Source/Plugins/PluginManager.cs @@ -109,7 +109,7 @@ namespace CodeImp.DoomBuilder.Plugins foreach(string fn in filenames) { // Load plugin from this file - General.MainWindow.DisplayStatus("Loading plugin '" + Path.GetFileName(fn) + "'..."); + General.MainWindow.DisplayStatus(StatusType.Busy, "Loading plugin '" + Path.GetFileName(fn) + "'..."); try { p = new Plugin(fn); diff --git a/Source/Properties/Resources.Designer.cs b/Source/Properties/Resources.Designer.cs index 876a4c9c..3c61ab76 100644 --- a/Source/Properties/Resources.Designer.cs +++ b/Source/Properties/Resources.Designer.cs @@ -1,7 +1,7 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:2.0.50727.1433 +// Runtime Version:2.0.50727.1826 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -347,6 +347,27 @@ namespace CodeImp.DoomBuilder.Properties { } } + internal static System.Drawing.Bitmap Status10 { + get { + object obj = ResourceManager.GetObject("Status10", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + internal static System.Drawing.Bitmap Status11 { + get { + object obj = ResourceManager.GetObject("Status11", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + internal static System.Drawing.Bitmap Status12 { + get { + object obj = ResourceManager.GetObject("Status12", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + internal static System.Drawing.Bitmap Status2 { get { object obj = ResourceManager.GetObject("Status2", resourceCulture); diff --git a/Source/Properties/Resources.resx b/Source/Properties/Resources.resx index b7a6c394..2650303c 100644 --- a/Source/Properties/Resources.resx +++ b/Source/Properties/Resources.resx @@ -280,4 +280,13 @@ ..\Resources\Monster3.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Status10.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Status11.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Status12.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/Source/Resources/Status10.png b/Source/Resources/Status10.png new file mode 100644 index 00000000..64d5d60d Binary files /dev/null and b/Source/Resources/Status10.png differ diff --git a/Source/Resources/Status11.png b/Source/Resources/Status11.png new file mode 100644 index 00000000..2ce67b41 Binary files /dev/null and b/Source/Resources/Status11.png differ diff --git a/Source/Resources/Status12.png b/Source/Resources/Status12.png new file mode 100644 index 00000000..0130d23a Binary files /dev/null and b/Source/Resources/Status12.png differ diff --git a/Source/Windows/IMainForm.cs b/Source/Windows/IMainForm.cs index 6d9b34ba..2a5d1479 100644 --- a/Source/Windows/IMainForm.cs +++ b/Source/Windows/IMainForm.cs @@ -54,7 +54,8 @@ namespace CodeImp.DoomBuilder.Windows // Methods void DisplayReady(); - void DisplayStatus(string status); + void DisplayStatus(StatusType type, string message); + void DisplayStatus(StatusInfo newstatus); void RedrawDisplay(); DialogResult ShowEditLinedefs(ICollection lines); DialogResult ShowEditSectors(ICollection sectors); @@ -74,8 +75,6 @@ namespace CodeImp.DoomBuilder.Windows void BreakExclusiveMouseInput(); void ResumeExclusiveMouseInput(); void SetCursor(Cursor cursor); - void DisplayWarning(string warning); - void HideWarning(); void MessageBeep(MessageBeepType type); /// diff --git a/Source/Windows/MainForm.Designer.cs b/Source/Windows/MainForm.Designer.cs index e773f4ce..50b061a5 100644 --- a/Source/Windows/MainForm.Designer.cs +++ b/Source/Windows/MainForm.Designer.cs @@ -157,8 +157,8 @@ namespace CodeImp.DoomBuilder.Windows this.redrawtimer = new System.Windows.Forms.Timer(this.components); this.display = new CodeImp.DoomBuilder.Controls.RenderTargetControl(); this.processor = new System.Windows.Forms.Timer(this.components); - this.warningtimer = new System.Windows.Forms.Timer(this.components); - this.warningflasher = 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); toolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator(); toolStripMenuItem3 = new System.Windows.Forms.ToolStripSeparator(); toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); @@ -183,13 +183,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(198, 6); + toolStripMenuItem1.Size = new System.Drawing.Size(199, 6); // // toolStripMenuItem3 // toolStripMenuItem3.Margin = new System.Windows.Forms.Padding(0, 3, 0, 3); toolStripMenuItem3.Name = "toolStripMenuItem3"; - toolStripMenuItem3.Size = new System.Drawing.Size(198, 6); + toolStripMenuItem3.Size = new System.Drawing.Size(199, 6); // // toolStripSeparator1 // @@ -219,7 +219,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(162, 6); + toolStripSeparator11.Size = new System.Drawing.Size(160, 6); // // toolstripSeperator1 // @@ -231,7 +231,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(162, 6); + toolstripSeperator6.Size = new System.Drawing.Size(160, 6); // // toolStripSeparator7 // @@ -248,12 +248,12 @@ namespace CodeImp.DoomBuilder.Windows // toolStripMenuItem4 // toolStripMenuItem4.Name = "toolStripMenuItem4"; - toolStripMenuItem4.Size = new System.Drawing.Size(161, 6); + toolStripMenuItem4.Size = new System.Drawing.Size(150, 6); // // toolStripSeparator2 // toolStripSeparator2.Name = "toolStripSeparator2"; - toolStripSeparator2.Size = new System.Drawing.Size(164, 6); + toolStripSeparator2.Size = new System.Drawing.Size(153, 6); // // toolStripSeparator4 // @@ -305,7 +305,7 @@ namespace CodeImp.DoomBuilder.Windows toolStripMenuItem3, this.itemexit}); this.menufile.Name = "menufile"; - this.menufile.Size = new System.Drawing.Size(35, 20); + this.menufile.Size = new System.Drawing.Size(37, 20); this.menufile.Text = "File"; // // itemnewmap @@ -313,7 +313,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(201, 22); + this.itemnewmap.Size = new System.Drawing.Size(202, 22); this.itemnewmap.Tag = "builder_newmap"; this.itemnewmap.Text = "New Map"; this.itemnewmap.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -322,7 +322,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(201, 22); + this.itemopenmap.Size = new System.Drawing.Size(202, 22); this.itemopenmap.Tag = "builder_openmap"; this.itemopenmap.Text = "Open Map..."; this.itemopenmap.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -330,7 +330,7 @@ namespace CodeImp.DoomBuilder.Windows // itemclosemap // this.itemclosemap.Name = "itemclosemap"; - this.itemclosemap.Size = new System.Drawing.Size(201, 22); + this.itemclosemap.Size = new System.Drawing.Size(202, 22); this.itemclosemap.Tag = "builder_closemap"; this.itemclosemap.Text = "Close Map"; this.itemclosemap.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -339,7 +339,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(201, 22); + this.itemsavemap.Size = new System.Drawing.Size(202, 22); this.itemsavemap.Tag = "builder_savemap"; this.itemsavemap.Text = "Save Map"; this.itemsavemap.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -347,7 +347,7 @@ namespace CodeImp.DoomBuilder.Windows // itemsavemapas // this.itemsavemapas.Name = "itemsavemapas"; - this.itemsavemapas.Size = new System.Drawing.Size(201, 22); + this.itemsavemapas.Size = new System.Drawing.Size(202, 22); this.itemsavemapas.Tag = "builder_savemapas"; this.itemsavemapas.Text = "Save Map As..."; this.itemsavemapas.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -355,7 +355,7 @@ namespace CodeImp.DoomBuilder.Windows // itemsavemapinto // this.itemsavemapinto.Name = "itemsavemapinto"; - this.itemsavemapinto.Size = new System.Drawing.Size(201, 22); + this.itemsavemapinto.Size = new System.Drawing.Size(202, 22); this.itemsavemapinto.Tag = "builder_savemapinto"; this.itemsavemapinto.Text = "Save Map Into..."; this.itemsavemapinto.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -364,19 +364,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(198, 6); + this.toolStripMenuItem5.Size = new System.Drawing.Size(199, 6); // // itemnorecent // this.itemnorecent.Enabled = false; this.itemnorecent.Name = "itemnorecent"; - this.itemnorecent.Size = new System.Drawing.Size(201, 22); + this.itemnorecent.Size = new System.Drawing.Size(202, 22); this.itemnorecent.Text = "No recently opened files"; // // itemexit // this.itemexit.Name = "itemexit"; - this.itemexit.Size = new System.Drawing.Size(201, 22); + this.itemexit.Size = new System.Drawing.Size(202, 22); this.itemexit.Text = "Exit"; this.itemexit.Click += new System.EventHandler(this.itemexit_Click); // @@ -399,14 +399,14 @@ namespace CodeImp.DoomBuilder.Windows toolStripSeparator11, this.itemmapoptions}); this.menuedit.Name = "menuedit"; - this.menuedit.Size = new System.Drawing.Size(37, 20); + this.menuedit.Size = new System.Drawing.Size(39, 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(165, 22); + this.itemundo.Size = new System.Drawing.Size(163, 22); this.itemundo.Tag = "builder_undo"; this.itemundo.Text = "Undo"; this.itemundo.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -415,7 +415,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(165, 22); + this.itemredo.Size = new System.Drawing.Size(163, 22); this.itemredo.Tag = "builder_redo"; this.itemredo.Text = "Redo"; this.itemredo.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -424,13 +424,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(162, 6); + this.toolStripMenuItem7.Size = new System.Drawing.Size(160, 6); // // itemcut // this.itemcut.Image = global::CodeImp.DoomBuilder.Properties.Resources.Cut; this.itemcut.Name = "itemcut"; - this.itemcut.Size = new System.Drawing.Size(165, 22); + this.itemcut.Size = new System.Drawing.Size(163, 22); this.itemcut.Tag = "builder_cutselection"; this.itemcut.Text = "Cut"; this.itemcut.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -439,7 +439,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(165, 22); + this.itemcopy.Size = new System.Drawing.Size(163, 22); this.itemcopy.Tag = "builder_copyselection"; this.itemcopy.Text = "Copy"; this.itemcopy.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -448,7 +448,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(165, 22); + this.itempaste.Size = new System.Drawing.Size(163, 22); this.itempaste.Tag = "builder_pasteselection"; this.itempaste.Text = "Paste"; this.itempaste.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -459,7 +459,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(165, 22); + this.itemsnaptogrid.Size = new System.Drawing.Size(163, 22); this.itemsnaptogrid.Tag = "builder_togglesnap"; this.itemsnaptogrid.Text = "Snap to Grid"; this.itemsnaptogrid.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -470,7 +470,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(165, 22); + this.itemautomerge.Size = new System.Drawing.Size(163, 22); this.itemautomerge.Tag = "builder_toggleautomerge"; this.itemautomerge.Text = "Merge Geometry"; this.itemautomerge.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -479,12 +479,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(162, 6); + this.toolStripMenuItem6.Size = new System.Drawing.Size(160, 6); // // itemgridinc // this.itemgridinc.Name = "itemgridinc"; - this.itemgridinc.Size = new System.Drawing.Size(165, 22); + this.itemgridinc.Size = new System.Drawing.Size(163, 22); this.itemgridinc.Tag = "builder_gridinc"; this.itemgridinc.Text = "Increase Grid"; this.itemgridinc.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -492,7 +492,7 @@ namespace CodeImp.DoomBuilder.Windows // itemgriddec // this.itemgriddec.Name = "itemgriddec"; - this.itemgriddec.Size = new System.Drawing.Size(165, 22); + this.itemgriddec.Size = new System.Drawing.Size(163, 22); this.itemgriddec.Tag = "builder_griddec"; this.itemgriddec.Text = "Decrease Grid"; this.itemgriddec.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -501,7 +501,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(165, 22); + this.itemgridsetup.Size = new System.Drawing.Size(163, 22); this.itemgridsetup.Tag = "builder_gridsetup"; this.itemgridsetup.Text = "Grid Setup..."; this.itemgridsetup.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -510,7 +510,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(165, 22); + this.itemmapoptions.Size = new System.Drawing.Size(163, 22); this.itemmapoptions.Tag = "builder_mapoptions"; this.itemmapoptions.Text = "Map Options...."; this.itemmapoptions.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -527,14 +527,14 @@ namespace CodeImp.DoomBuilder.Windows this.toolStripMenuItem10, this.itemscripteditor}); this.menuview.Name = "menuview"; - this.menuview.Size = new System.Drawing.Size(41, 20); + this.menuview.Size = new System.Drawing.Size(44, 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(210, 22); + this.itemthingsfilter.Size = new System.Drawing.Size(209, 22); this.itemthingsfilter.Tag = "builder_thingsfilterssetup"; this.itemthingsfilter.Text = "Configure Things Filters..."; this.itemthingsfilter.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -543,13 +543,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(207, 6); + this.toolStripMenuItem9.Size = new System.Drawing.Size(206, 6); // // itemviewnormal // this.itemviewnormal.Image = global::CodeImp.DoomBuilder.Properties.Resources.ViewNormal; this.itemviewnormal.Name = "itemviewnormal"; - this.itemviewnormal.Size = new System.Drawing.Size(210, 22); + this.itemviewnormal.Size = new System.Drawing.Size(209, 22); this.itemviewnormal.Tag = "builder_viewmodenormal"; this.itemviewnormal.Text = "Wireframe"; this.itemviewnormal.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -558,7 +558,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(210, 22); + this.itemviewbrightness.Size = new System.Drawing.Size(209, 22); this.itemviewbrightness.Tag = "builder_viewmodebrightness"; this.itemviewbrightness.Text = "Brightness Levels"; this.itemviewbrightness.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -567,7 +567,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(210, 22); + this.itemviewfloors.Size = new System.Drawing.Size(209, 22); this.itemviewfloors.Tag = "builder_viewmodefloors"; this.itemviewfloors.Text = "Floor Textures"; this.itemviewfloors.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -576,7 +576,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(210, 22); + this.itemviewceilings.Size = new System.Drawing.Size(209, 22); this.itemviewceilings.Tag = "builder_viewmodeceilings"; this.itemviewceilings.Text = "Ceiling Textures"; this.itemviewceilings.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -585,13 +585,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(207, 6); + this.toolStripMenuItem10.Size = new System.Drawing.Size(206, 6); // // itemscripteditor // this.itemscripteditor.Image = global::CodeImp.DoomBuilder.Properties.Resources.Script2; this.itemscripteditor.Name = "itemscripteditor"; - this.itemscripteditor.Size = new System.Drawing.Size(210, 22); + this.itemscripteditor.Size = new System.Drawing.Size(209, 22); this.itemscripteditor.Tag = "builder_openscripteditor"; this.itemscripteditor.Text = "Script Editor..."; this.itemscripteditor.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -599,7 +599,7 @@ namespace CodeImp.DoomBuilder.Windows // menumode // this.menumode.Name = "menumode"; - this.menumode.Size = new System.Drawing.Size(45, 20); + this.menumode.Size = new System.Drawing.Size(50, 20); this.menumode.Text = "Mode"; // // menuprefabs @@ -610,13 +610,13 @@ namespace CodeImp.DoomBuilder.Windows this.toolStripMenuItem12, this.itemcreateprefab}); this.menuprefabs.Name = "menuprefabs"; - this.menuprefabs.Size = new System.Drawing.Size(56, 20); + this.menuprefabs.Size = new System.Drawing.Size(58, 20); this.menuprefabs.Text = "Prefabs"; // // iteminsertprefabfile // this.iteminsertprefabfile.Name = "iteminsertprefabfile"; - this.iteminsertprefabfile.Size = new System.Drawing.Size(205, 22); + this.iteminsertprefabfile.Size = new System.Drawing.Size(199, 22); this.iteminsertprefabfile.Tag = "builder_insertprefabfile"; this.iteminsertprefabfile.Text = "Insert Prefab from File..."; this.iteminsertprefabfile.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -624,7 +624,7 @@ namespace CodeImp.DoomBuilder.Windows // iteminsertpreviousprefab // this.iteminsertpreviousprefab.Name = "iteminsertpreviousprefab"; - this.iteminsertpreviousprefab.Size = new System.Drawing.Size(205, 22); + this.iteminsertpreviousprefab.Size = new System.Drawing.Size(199, 22); this.iteminsertpreviousprefab.Tag = "builder_insertpreviousprefab"; this.iteminsertpreviousprefab.Text = "Insert Previous Prefab"; this.iteminsertpreviousprefab.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -633,12 +633,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(202, 6); + this.toolStripMenuItem12.Size = new System.Drawing.Size(196, 6); // // itemcreateprefab // this.itemcreateprefab.Name = "itemcreateprefab"; - this.itemcreateprefab.Size = new System.Drawing.Size(205, 22); + this.itemcreateprefab.Size = new System.Drawing.Size(199, 22); this.itemcreateprefab.Tag = "builder_createprefab"; this.itemcreateprefab.Text = "Create From Selection..."; this.itemcreateprefab.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -653,13 +653,13 @@ namespace CodeImp.DoomBuilder.Windows this.toolStripMenuItem11, this.itemtestmap}); this.menutools.Name = "menutools"; - this.menutools.Size = new System.Drawing.Size(44, 20); + this.menutools.Size = new System.Drawing.Size(48, 20); this.menutools.Text = "Tools"; // // itemreloadresources // this.itemreloadresources.Name = "itemreloadresources"; - this.itemreloadresources.Size = new System.Drawing.Size(197, 22); + this.itemreloadresources.Size = new System.Drawing.Size(196, 22); this.itemreloadresources.Tag = "builder_reloadresources"; this.itemreloadresources.Text = "Reload Resources"; this.itemreloadresources.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -668,12 +668,12 @@ namespace CodeImp.DoomBuilder.Windows // this.toolStripMenuItem8.Margin = new System.Windows.Forms.Padding(0, 3, 0, 3); this.toolStripMenuItem8.Name = "toolStripMenuItem8"; - this.toolStripMenuItem8.Size = new System.Drawing.Size(194, 6); + this.toolStripMenuItem8.Size = new System.Drawing.Size(193, 6); // // configurationToolStripMenuItem // this.configurationToolStripMenuItem.Name = "configurationToolStripMenuItem"; - this.configurationToolStripMenuItem.Size = new System.Drawing.Size(197, 22); + this.configurationToolStripMenuItem.Size = new System.Drawing.Size(196, 22); this.configurationToolStripMenuItem.Tag = "builder_configuration"; this.configurationToolStripMenuItem.Text = "Game Configurations..."; this.configurationToolStripMenuItem.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -681,7 +681,7 @@ namespace CodeImp.DoomBuilder.Windows // preferencesToolStripMenuItem // this.preferencesToolStripMenuItem.Name = "preferencesToolStripMenuItem"; - this.preferencesToolStripMenuItem.Size = new System.Drawing.Size(197, 22); + this.preferencesToolStripMenuItem.Size = new System.Drawing.Size(196, 22); this.preferencesToolStripMenuItem.Tag = "builder_preferences"; this.preferencesToolStripMenuItem.Text = "Preferences..."; this.preferencesToolStripMenuItem.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -690,13 +690,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(194, 6); + this.toolStripMenuItem11.Size = new System.Drawing.Size(193, 6); // // itemtestmap // this.itemtestmap.Image = global::CodeImp.DoomBuilder.Properties.Resources.Test; this.itemtestmap.Name = "itemtestmap"; - this.itemtestmap.Size = new System.Drawing.Size(197, 22); + this.itemtestmap.Size = new System.Drawing.Size(196, 22); this.itemtestmap.Tag = "builder_testmap"; this.itemtestmap.Text = "Test Map"; this.itemtestmap.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -706,13 +706,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(40, 20); + this.menuhelp.Size = new System.Drawing.Size(44, 20); this.menuhelp.Text = "Help"; // // itemhelpabout // this.itemhelpabout.Name = "itemhelpabout"; - this.itemhelpabout.Size = new System.Drawing.Size(191, 22); + this.itemhelpabout.Size = new System.Drawing.Size(192, 22); this.itemhelpabout.Text = "About Doom Builder..."; this.itemhelpabout.Click += new System.EventHandler(this.itemhelpabout_Click); // @@ -1102,7 +1102,7 @@ namespace CodeImp.DoomBuilder.Windows // itemgrid1024 // this.itemgrid1024.Name = "itemgrid1024"; - this.itemgrid1024.Size = new System.Drawing.Size(164, 22); + this.itemgrid1024.Size = new System.Drawing.Size(153, 22); this.itemgrid1024.Tag = "1024"; this.itemgrid1024.Text = "1024 mp"; this.itemgrid1024.Click += new System.EventHandler(this.itemgridsize_Click); @@ -1110,7 +1110,7 @@ namespace CodeImp.DoomBuilder.Windows // itemgrid512 // this.itemgrid512.Name = "itemgrid512"; - this.itemgrid512.Size = new System.Drawing.Size(164, 22); + this.itemgrid512.Size = new System.Drawing.Size(153, 22); this.itemgrid512.Tag = "512"; this.itemgrid512.Text = "512 mp"; this.itemgrid512.Click += new System.EventHandler(this.itemgridsize_Click); @@ -1118,7 +1118,7 @@ namespace CodeImp.DoomBuilder.Windows // itemgrid256 // this.itemgrid256.Name = "itemgrid256"; - this.itemgrid256.Size = new System.Drawing.Size(164, 22); + this.itemgrid256.Size = new System.Drawing.Size(153, 22); this.itemgrid256.Tag = "256"; this.itemgrid256.Text = "256 mp"; this.itemgrid256.Click += new System.EventHandler(this.itemgridsize_Click); @@ -1126,7 +1126,7 @@ namespace CodeImp.DoomBuilder.Windows // itemgrid128 // this.itemgrid128.Name = "itemgrid128"; - this.itemgrid128.Size = new System.Drawing.Size(164, 22); + this.itemgrid128.Size = new System.Drawing.Size(153, 22); this.itemgrid128.Tag = "128"; this.itemgrid128.Text = "128 mp"; this.itemgrid128.Click += new System.EventHandler(this.itemgridsize_Click); @@ -1134,7 +1134,7 @@ namespace CodeImp.DoomBuilder.Windows // itemgrid64 // this.itemgrid64.Name = "itemgrid64"; - this.itemgrid64.Size = new System.Drawing.Size(164, 22); + this.itemgrid64.Size = new System.Drawing.Size(153, 22); this.itemgrid64.Tag = "64"; this.itemgrid64.Text = "64 mp"; this.itemgrid64.Click += new System.EventHandler(this.itemgridsize_Click); @@ -1142,7 +1142,7 @@ namespace CodeImp.DoomBuilder.Windows // itemgrid32 // this.itemgrid32.Name = "itemgrid32"; - this.itemgrid32.Size = new System.Drawing.Size(164, 22); + this.itemgrid32.Size = new System.Drawing.Size(153, 22); this.itemgrid32.Tag = "32"; this.itemgrid32.Text = "32 mp"; this.itemgrid32.Click += new System.EventHandler(this.itemgridsize_Click); @@ -1150,7 +1150,7 @@ namespace CodeImp.DoomBuilder.Windows // itemgrid16 // this.itemgrid16.Name = "itemgrid16"; - this.itemgrid16.Size = new System.Drawing.Size(164, 22); + this.itemgrid16.Size = new System.Drawing.Size(153, 22); this.itemgrid16.Tag = "16"; this.itemgrid16.Text = "16 mp"; this.itemgrid16.Click += new System.EventHandler(this.itemgridsize_Click); @@ -1158,7 +1158,7 @@ namespace CodeImp.DoomBuilder.Windows // itemgrid8 // this.itemgrid8.Name = "itemgrid8"; - this.itemgrid8.Size = new System.Drawing.Size(164, 22); + this.itemgrid8.Size = new System.Drawing.Size(153, 22); this.itemgrid8.Tag = "8"; this.itemgrid8.Text = "8 mp"; this.itemgrid8.Click += new System.EventHandler(this.itemgridsize_Click); @@ -1166,7 +1166,7 @@ namespace CodeImp.DoomBuilder.Windows // itemgrid4 // this.itemgrid4.Name = "itemgrid4"; - this.itemgrid4.Size = new System.Drawing.Size(164, 22); + this.itemgrid4.Size = new System.Drawing.Size(153, 22); this.itemgrid4.Tag = "4"; this.itemgrid4.Text = "4 mp"; this.itemgrid4.Click += new System.EventHandler(this.itemgridsize_Click); @@ -1174,7 +1174,7 @@ namespace CodeImp.DoomBuilder.Windows // itemgridcustom // this.itemgridcustom.Name = "itemgridcustom"; - this.itemgridcustom.Size = new System.Drawing.Size(164, 22); + this.itemgridcustom.Size = new System.Drawing.Size(153, 22); this.itemgridcustom.Text = "Customize..."; this.itemgridcustom.Click += new System.EventHandler(this.itemgridcustom_Click); // @@ -1213,7 +1213,7 @@ namespace CodeImp.DoomBuilder.Windows // itemzoom200 // this.itemzoom200.Name = "itemzoom200"; - this.itemzoom200.Size = new System.Drawing.Size(167, 22); + this.itemzoom200.Size = new System.Drawing.Size(156, 22); this.itemzoom200.Tag = "200"; this.itemzoom200.Text = "200%"; this.itemzoom200.Click += new System.EventHandler(this.itemzoomto_Click); @@ -1221,7 +1221,7 @@ namespace CodeImp.DoomBuilder.Windows // itemzoom100 // this.itemzoom100.Name = "itemzoom100"; - this.itemzoom100.Size = new System.Drawing.Size(167, 22); + this.itemzoom100.Size = new System.Drawing.Size(156, 22); this.itemzoom100.Tag = "100"; this.itemzoom100.Text = "100%"; this.itemzoom100.Click += new System.EventHandler(this.itemzoomto_Click); @@ -1229,7 +1229,7 @@ namespace CodeImp.DoomBuilder.Windows // itemzoom50 // this.itemzoom50.Name = "itemzoom50"; - this.itemzoom50.Size = new System.Drawing.Size(167, 22); + this.itemzoom50.Size = new System.Drawing.Size(156, 22); this.itemzoom50.Tag = "50"; this.itemzoom50.Text = "50%"; this.itemzoom50.Click += new System.EventHandler(this.itemzoomto_Click); @@ -1237,7 +1237,7 @@ namespace CodeImp.DoomBuilder.Windows // itemzoom25 // this.itemzoom25.Name = "itemzoom25"; - this.itemzoom25.Size = new System.Drawing.Size(167, 22); + this.itemzoom25.Size = new System.Drawing.Size(156, 22); this.itemzoom25.Tag = "25"; this.itemzoom25.Text = "25%"; this.itemzoom25.Click += new System.EventHandler(this.itemzoomto_Click); @@ -1245,7 +1245,7 @@ namespace CodeImp.DoomBuilder.Windows // itemzoom10 // this.itemzoom10.Name = "itemzoom10"; - this.itemzoom10.Size = new System.Drawing.Size(167, 22); + this.itemzoom10.Size = new System.Drawing.Size(156, 22); this.itemzoom10.Tag = "10"; this.itemzoom10.Text = "10%"; this.itemzoom10.Click += new System.EventHandler(this.itemzoomto_Click); @@ -1253,7 +1253,7 @@ namespace CodeImp.DoomBuilder.Windows // itemzoom5 // this.itemzoom5.Name = "itemzoom5"; - this.itemzoom5.Size = new System.Drawing.Size(167, 22); + this.itemzoom5.Size = new System.Drawing.Size(156, 22); this.itemzoom5.Tag = "5"; this.itemzoom5.Text = "5%"; this.itemzoom5.Click += new System.EventHandler(this.itemzoomto_Click); @@ -1261,7 +1261,7 @@ namespace CodeImp.DoomBuilder.Windows // itemzoomfittoscreen // this.itemzoomfittoscreen.Name = "itemzoomfittoscreen"; - this.itemzoomfittoscreen.Size = new System.Drawing.Size(167, 22); + this.itemzoomfittoscreen.Size = new System.Drawing.Size(156, 22); this.itemzoomfittoscreen.Text = "Fit to screen"; this.itemzoomfittoscreen.Click += new System.EventHandler(this.itemzoomfittoscreen_Click); // @@ -1412,13 +1412,13 @@ namespace CodeImp.DoomBuilder.Windows this.processor.Interval = 10; this.processor.Tick += new System.EventHandler(this.processor_Tick); // - // warningtimer + // statusflasher // - this.warningtimer.Tick += new System.EventHandler(this.warningtimer_Tick); + this.statusflasher.Tick += new System.EventHandler(this.statusflasher_Tick); // - // warningflasher + // statusresetter // - this.warningflasher.Tick += new System.EventHandler(this.warningflasher_Tick); + this.statusresetter.Tick += new System.EventHandler(this.statusresetter_Tick); // // MainForm // @@ -1539,8 +1539,7 @@ namespace CodeImp.DoomBuilder.Windows private System.Windows.Forms.ToolStripMenuItem itemgriddec; private System.Windows.Forms.ToolStripMenuItem itemgridsetup; private System.Windows.Forms.Label modename; - private System.Windows.Forms.Timer warningtimer; - private System.Windows.Forms.Timer warningflasher; + private System.Windows.Forms.Timer statusflasher; private System.Windows.Forms.ToolStripSplitButton buttontest; private System.Windows.Forms.ToolStripButton buttoncut; private System.Windows.Forms.ToolStripButton buttoncopy; @@ -1577,5 +1576,6 @@ namespace CodeImp.DoomBuilder.Windows private System.Windows.Forms.ToolStripButton buttoninsertpreviousprefab; private System.Windows.Forms.Button buttontoggleinfo; private System.Windows.Forms.Label labelcollapsedinfo; + private System.Windows.Forms.Timer statusresetter; } } \ No newline at end of file diff --git a/Source/Windows/MainForm.cs b/Source/Windows/MainForm.cs index 1c648643..d60753e9 100644 --- a/Source/Windows/MainForm.cs +++ b/Source/Windows/MainForm.cs @@ -48,26 +48,40 @@ namespace CodeImp.DoomBuilder.Windows { #region ================== Constants - private const string STATUS_READY_TEXT = "Ready."; - private const string STATUS_LOADING_TEXT = "Loading resources..."; private const int MAX_RECENT_FILES = 8; private const int MAX_RECENT_FILES_PIXELS = 250; - private const int WARNING_FLASH_COUNT = 5; private const int EXPANDED_INFO_HEIGHT = 106; private const int COLLAPSED_INFO_HEIGHT = 20; - private enum StatusType : int + // Status bar + private const string STATUS_READY_TEXT = "Ready."; + 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 ACTION_FLASH_COUNT = 1; + private const int ACTION_FLASH_INTERVAL = 100; + + private readonly Image[,] STATUS_IMAGES = new Image[2, 4] { - Ready, - Busy, - Warning - } + // Normal versions + { + Properties.Resources.Status0, Properties.Resources.Status1, + Properties.Resources.Status2, Properties.Resources.Warning + }, + + // Flashing versions + { + Properties.Resources.Status10, Properties.Resources.Status11, + Properties.Resources.Status12, Properties.Resources.WarningOff + } + }; // Message pump public enum ThreadMessages : int { - // Sent by the background threat to update the status icon - UpdateStatusIcon = General.WM_USER + 1, + // Sent by the background threat to update the status + UpdateStatus = General.WM_USER + 1, // This is sent by the background thread when images are loaded // but only when first loaded or when dimensions were changed @@ -123,9 +137,9 @@ namespace CodeImp.DoomBuilder.Windows private bool updatingfilters; // Statusbar - private StatusType statustype; - private int warningflashcount; - private bool warningsignon; + private StatusInfo status; + private int statusflashcount; + private bool statusflashicon; // Properties private IntPtr windowptr; @@ -150,6 +164,7 @@ namespace CodeImp.DoomBuilder.Windows new public IntPtr Handle { get { return windowptr; } } public bool IsInfoPanelExpanded { get { return (panelinfo.Height == EXPANDED_INFO_HEIGHT); } } public bool IsActiveWindow { get { return windowactive; } } + public StatusInfo Status { get { return status; } } #endregion @@ -438,8 +453,9 @@ namespace CodeImp.DoomBuilder.Windows { General.WriteLogLine("Closing main interface window..."); - // Hide warning to stop timers - HideWarning(); + // Stop timers + statusflasher.Stop(); + statusresetter.Stop(); // Stop exclusive mode, if any is active StopExclusiveMouseInput(); @@ -513,168 +529,107 @@ namespace CodeImp.DoomBuilder.Windows UpdateStatusIcon(); } - // This returns the current status text - internal string GetCurrentSatus() + // This flashes the status icon + private void statusflasher_Tick(object sender, EventArgs e) { - if(statustype == StatusType.Busy) - return statuslabel.Text; - else - return null; + statusflashicon = !statusflashicon; + UpdateStatusIcon(); + statusflashcount--; + if(statusflashcount == 0) statusflasher.Stop(); } - // This shows a warning - public void DisplayWarning(string warning) + // This resets the status to ready + private void statusresetter_Tick(object sender, EventArgs e) { - MessageBeep(MessageBeepType.Warning); - if(statuslabel.Text != warning) statuslabel.Text = warning; - statustype = StatusType.Warning; - statuslabel.Image = Resources.Warning; - warningflashcount = 0; - warningsignon = true; - warningtimer.Stop(); - warningtimer.Interval = 3000; - warningtimer.Start(); - warningflasher.Start(); - - // Refresh if needed - statusbar.Invalidate(); - this.Update(); - } - - // This hides any warning - public void HideWarning() - { - if(statustype == StatusType.Warning) - { - warningtimer.Stop(); - warningflasher.Stop(); - DisplayReady(); - } - } - - // This flashes the warning sign - private void warningflasher_Tick(object sender, EventArgs e) - { - if(statustype == StatusType.Warning) - { - // Warning sign on? - if(warningsignon) - { - // Turn it off or should we stop? - if(warningflashcount < WARNING_FLASH_COUNT) - { - statuslabel.Image = Resources.WarningOff; - warningsignon = false; - } - else - { - warningflasher.Stop(); - } - } - else - { - // Turn it on and count the flash - statuslabel.Image = Resources.Warning; - warningsignon = true; - warningflashcount++; - } - } - } - - // Warning timed out - private void warningtimer_Tick(object sender, EventArgs e) - { - HideWarning(); + DisplayReady(); } // This changes status text - public void DisplayStatus(string status) + public void DisplayStatus(StatusType type, string message) { DisplayStatus(new StatusInfo(type, message)); } + public void DisplayStatus(StatusInfo newstatus) { - // Null is no busy status - if(status == null) + // Stop timers + statusresetter.Stop(); + statusflasher.Stop(); + statusflashicon = false; + + // Determine what to do specifically for this status type + switch(newstatus.type) { - DisplayReady(); - } - else - { - // Stop warning timers - warningtimer.Stop(); - warningflasher.Stop(); - - // Update status description - statustype = StatusType.Busy; - if(statuslabel.Text != status) - statuslabel.Text = status; - - // Update icon as well - UpdateStatusIcon(); - - // Refresh if needed - statusbar.Invalidate(); - this.Update(); + // When no particular information is to be displayed. + // The messages displayed depends on running background processes. + case StatusType.Ready: + if((General.Map != null) && (General.Map.Data != null) && General.Map.Data.IsLoading) + newstatus.message = STATUS_LOADING_TEXT; + else + newstatus.message = STATUS_READY_TEXT; + 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(); + break; + + // Shows a warning, makes a warning sound and flashes a warning icon. + case StatusType.Warning: + MessageBeep(MessageBeepType.Warning); + statusflasher.Interval = WARNING_FLASH_INTERVAL; + statusflashcount = WARNING_FLASH_COUNT; + statusflasher.Start(); + statusresetter.Interval = WARNING_RESET_DELAY; + statusresetter.Start(); + break; } + + // Update status description + status = newstatus; + if(statuslabel.Text != status.message) + statuslabel.Text = status.message; + + // Update icon as well + UpdateStatusIcon(); + + // Refresh + statusbar.Invalidate(); + this.Update(); } - + // This changes status text to Ready public void DisplayReady() { - // Stop warning timers - warningtimer.Stop(); - warningflasher.Stop(); - - // Update icon, this also sets the ready text - statustype = StatusType.Ready; - UpdateStatusIcon(); - - // Refresh if needed - statusbar.Invalidate(); - this.Update(); + DisplayStatus(StatusType.Ready, null); } // This updates the status icon internal void UpdateStatusIcon() { - // From another thread? - if(statusbar.InvokeRequired) + int statusicon = 0; + int statusflashindex = statusflashicon ? 1 : 0; + + // Loading icon? + if((General.Map != null) && (General.Map.Data != null) && General.Map.Data.IsLoading) + statusicon = 1; + + // Status type + switch(status.type) { - // Call to form thread - // This may not be called from a different thread. Send a WM_NOTIFY message instead! - throw new Exception("This should not be called from any other thread than the main application thread!"); - } - else - { - // Ready status? - if(statustype == StatusType.Ready) - { - // Map open? - if((General.Map != null) && (General.Map.Data != null)) - { - // Check if loading in the background - if(General.Map.Data.IsLoading) - { - // Display semi-ready icon - statuslabel.Image = CodeImp.DoomBuilder.Properties.Resources.Status1; - if(statuslabel.Text != STATUS_LOADING_TEXT) statuslabel.Text = STATUS_LOADING_TEXT; - } - else - { - // Display ready icon - statuslabel.Image = CodeImp.DoomBuilder.Properties.Resources.Status0; - if(statuslabel.Text != STATUS_READY_TEXT) statuslabel.Text = STATUS_READY_TEXT; - } - } - else - { - // Display ready icon - statuslabel.Image = CodeImp.DoomBuilder.Properties.Resources.Status0; - if(statuslabel.Text != STATUS_READY_TEXT) statuslabel.Text = STATUS_READY_TEXT; - } - } - else if(statustype == StatusType.Busy) - { - // Display busy icon - statuslabel.Image = CodeImp.DoomBuilder.Properties.Resources.Status2; - } + case StatusType.Ready: + case StatusType.Info: + case StatusType.Action: + statuslabel.Image = STATUS_IMAGES[statusflashindex, statusicon]; + break; + + case StatusType.Busy: + statuslabel.Image = STATUS_IMAGES[statusflashindex, 2]; + break; + + case StatusType.Warning: + statuslabel.Image = STATUS_IMAGES[statusflashindex, 3]; + break; } } @@ -2200,8 +2155,8 @@ namespace CodeImp.DoomBuilder.Windows // Notify message? switch(m.Msg) { - case (int)ThreadMessages.UpdateStatusIcon: - UpdateStatusIcon(); + case (int)ThreadMessages.UpdateStatus: + DisplayStatus(status); break; case (int)ThreadMessages.ImageDataLoaded: diff --git a/Source/Windows/MainForm.resx b/Source/Windows/MainForm.resx index 96b81a61..fb1725a7 100644 --- a/Source/Windows/MainForm.resx +++ b/Source/Windows/MainForm.resx @@ -169,13 +169,13 @@ True - 121, 17 + 127, 17 True - 207, 17 + 218, 17 True @@ -196,19 +196,19 @@ True - 304, 17 + 319, 17 True - 416, 17 + 437, 17 - - 515, 17 + + 541, 17 - - 632, 17 + + 661, 17 True diff --git a/Source/Windows/StatusInfo.cs b/Source/Windows/StatusInfo.cs new file mode 100644 index 00000000..e2483b3e --- /dev/null +++ b/Source/Windows/StatusInfo.cs @@ -0,0 +1,80 @@ + +#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; +using System.Collections.Generic; +using System.Globalization; +using System.Text; +using System.Windows.Forms; +using System.IO; +using System.Reflection; +using System.Drawing; +using System.ComponentModel; +using CodeImp.DoomBuilder.Map; +using SlimDX.Direct3D9; +using SlimDX; +using CodeImp.DoomBuilder.Geometry; +using System.Drawing.Imaging; +using CodeImp.DoomBuilder.Data; +using CodeImp.DoomBuilder.Editing; + +#endregion + +namespace CodeImp.DoomBuilder.Windows +{ + public struct StatusInfo + { + public StatusType type; + public string message; + + internal StatusInfo(StatusType type, string message) + { + this.type = type; + this.message = message; + } + } + + public enum StatusType : int + { + /// + /// When no particular information is to be displayed. The messages displayed depends on running background processes. + /// + Ready, + + /// + /// Shows action information and flashes up the status icon once. + /// + Action, + + /// + /// Shows information without flashing the icon. + /// + Info, + + /// + /// Shows information with the busy icon. + /// + Busy, + + /// + /// Shows a warning, makes a warning sound and flashes a warning icon. + /// + Warning + } +}