From ecc38960f38750cbbc3d5270895f05a2856d1512 Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Thu, 28 Dec 2023 10:35:23 -0500 Subject: [PATCH] Immediate window fixes --- IDE/src/ui/ImmediateWidget.bf | 9 ++- IDE/src/ui/OutputWidget.bf | 139 ++++++++++++++++++---------------- 2 files changed, 80 insertions(+), 68 deletions(-) diff --git a/IDE/src/ui/ImmediateWidget.bf b/IDE/src/ui/ImmediateWidget.bf index 0c31f89b..40aedd50 100644 --- a/IDE/src/ui/ImmediateWidget.bf +++ b/IDE/src/ui/ImmediateWidget.bf @@ -83,7 +83,7 @@ namespace IDE.ui }*/ } - bool IsInsideEntry(int idx) + public bool IsInsideEntry(int idx) { var immediateWidget = (ImmediateWidget)mEditWidget; return idx > immediateWidget.mEntryStartPos.mIndex; @@ -443,6 +443,13 @@ namespace IDE.ui return; } + if (c == '\x7F') // Ctrl+Backspace + { + var editWidgetContent = (ImmediateWidgetContent)mEditWidgetContent; + if (!editWidgetContent.IsInsideEntry(editWidgetContent.mCursorTextPos - 1)) + return; + } + String cmdText = scope String(); bool hasCmd = false; diff --git a/IDE/src/ui/OutputWidget.bf b/IDE/src/ui/OutputWidget.bf index 1f91da0d..2e07c6a6 100644 --- a/IDE/src/ui/OutputWidget.bf +++ b/IDE/src/ui/OutputWidget.bf @@ -254,77 +254,82 @@ namespace IDE.ui ClearText(); }); - // Separator - menu.AddItem(); - IDE.Debugger.DebugManager.OutputFilterFlags outputFilterFlags = gApp.mDebugger.GetOutputFilterFlags(); - - var menuItemModuleLoadMessages = menu.AddItem("Module Load Messages"); - if (!outputFilterFlags.HasFlag(.ModuleLoadMessages)) + bool isOutputWindow = mIsReadOnly; + if (isOutputWindow) { - menuItemModuleLoadMessages.mIconImage = DarkTheme.sDarkTheme.GetImage(DarkTheme.ImageIdx.Check); + // Separator + menu.AddItem(); + + IDE.Debugger.DebugManager.OutputFilterFlags outputFilterFlags = gApp.mDebugger.GetOutputFilterFlags(); + + var menuItemModuleLoadMessages = menu.AddItem("Module Load Messages"); + if (!outputFilterFlags.HasFlag(.ModuleLoadMessages)) + { + menuItemModuleLoadMessages.mIconImage = DarkTheme.sDarkTheme.GetImage(DarkTheme.ImageIdx.Check); + } + + menuItemModuleLoadMessages.mOnMenuItemSelected.Add(new (evt) => + { + gApp.mDebugger.SetOutputFilterFlags(outputFilterFlags ^ .ModuleLoadMessages); + }); + + var menuItemModuleUnloadMessages = menu.AddItem("Module Unload Messages"); + if (!outputFilterFlags.HasFlag(.ModuleUnloadMessages)) + { + menuItemModuleUnloadMessages.mIconImage = DarkTheme.sDarkTheme.GetImage(DarkTheme.ImageIdx.Check); + } + + menuItemModuleUnloadMessages.mOnMenuItemSelected.Add(new (evt) => + { + gApp.mDebugger.SetOutputFilterFlags(outputFilterFlags ^ .ModuleUnloadMessages); + }); + + var menuItemProcessExitMessages = menu.AddItem("Process Exit Messages"); + if (!outputFilterFlags.HasFlag(.ProcessExitMessages)) + { + menuItemProcessExitMessages.mIconImage = DarkTheme.sDarkTheme.GetImage(DarkTheme.ImageIdx.Check); + } + + menuItemProcessExitMessages.mOnMenuItemSelected.Add(new (evt) => + { + gApp.mDebugger.SetOutputFilterFlags(outputFilterFlags ^ .ProcessExitMessages); + }); + + var menuItemThreadCreateMessages = menu.AddItem("Thread Creation Messages"); + if (!outputFilterFlags.HasFlag(.ThreadCreateMessages)) + { + menuItemThreadCreateMessages.mIconImage = DarkTheme.sDarkTheme.GetImage(DarkTheme.ImageIdx.Check); + } + + menuItemThreadCreateMessages.mOnMenuItemSelected.Add(new (evt) => + { + gApp.mDebugger.SetOutputFilterFlags(outputFilterFlags ^ .ThreadCreateMessages); + }); + + var menuItemThreadExitMessages = menu.AddItem("Thread Exit Messages"); + if (!outputFilterFlags.HasFlag(.ThreadExitMessages)) + { + menuItemThreadExitMessages.mIconImage = DarkTheme.sDarkTheme.GetImage(DarkTheme.ImageIdx.Check); + } + + menuItemThreadExitMessages.mOnMenuItemSelected.Add(new (evt) => + { + gApp.mDebugger.SetOutputFilterFlags(outputFilterFlags ^ .ThreadExitMessages); + }); + + var menuItemSymbolLoadMessages = menu.AddItem("Symbol Load Messages"); + if (!outputFilterFlags.HasFlag(.SymbolLoadMessages)) + { + menuItemSymbolLoadMessages.mIconImage = DarkTheme.sDarkTheme.GetImage(DarkTheme.ImageIdx.Check); + } + + menuItemSymbolLoadMessages.mOnMenuItemSelected.Add(new (evt) => + { + gApp.mDebugger.SetOutputFilterFlags(outputFilterFlags ^ .SymbolLoadMessages); + }); } - menuItemModuleLoadMessages.mOnMenuItemSelected.Add(new (evt) => - { - gApp.mDebugger.SetOutputFilterFlags(outputFilterFlags ^ .ModuleLoadMessages); - }); - - var menuItemModuleUnloadMessages = menu.AddItem("Module Unload Messages"); - if (!outputFilterFlags.HasFlag(.ModuleUnloadMessages)) - { - menuItemModuleUnloadMessages.mIconImage = DarkTheme.sDarkTheme.GetImage(DarkTheme.ImageIdx.Check); - } - - menuItemModuleUnloadMessages.mOnMenuItemSelected.Add(new (evt) => - { - gApp.mDebugger.SetOutputFilterFlags(outputFilterFlags ^ .ModuleUnloadMessages); - }); - - var menuItemProcessExitMessages = menu.AddItem("Process Exit Messages"); - if (!outputFilterFlags.HasFlag(.ProcessExitMessages)) - { - menuItemProcessExitMessages.mIconImage = DarkTheme.sDarkTheme.GetImage(DarkTheme.ImageIdx.Check); - } - - menuItemProcessExitMessages.mOnMenuItemSelected.Add(new (evt) => - { - gApp.mDebugger.SetOutputFilterFlags(outputFilterFlags ^ .ProcessExitMessages); - }); - - var menuItemThreadCreateMessages = menu.AddItem("Thread Creation Messages"); - if (!outputFilterFlags.HasFlag(.ThreadCreateMessages)) - { - menuItemThreadCreateMessages.mIconImage = DarkTheme.sDarkTheme.GetImage(DarkTheme.ImageIdx.Check); - } - - menuItemThreadCreateMessages.mOnMenuItemSelected.Add(new (evt) => - { - gApp.mDebugger.SetOutputFilterFlags(outputFilterFlags ^ .ThreadCreateMessages); - }); - - var menuItemThreadExitMessages = menu.AddItem("Thread Exit Messages"); - if (!outputFilterFlags.HasFlag(.ThreadExitMessages)) - { - menuItemThreadExitMessages.mIconImage = DarkTheme.sDarkTheme.GetImage(DarkTheme.ImageIdx.Check); - } - - menuItemThreadExitMessages.mOnMenuItemSelected.Add(new (evt) => - { - gApp.mDebugger.SetOutputFilterFlags(outputFilterFlags ^ .ThreadExitMessages); - }); - - var menuItemSymbolLoadMessages = menu.AddItem("Symbol Load Messages"); - if (!outputFilterFlags.HasFlag(.SymbolLoadMessages)) - { - menuItemSymbolLoadMessages.mIconImage = DarkTheme.sDarkTheme.GetImage(DarkTheme.ImageIdx.Check); - } - - menuItemSymbolLoadMessages.mOnMenuItemSelected.Add(new (evt) => - { - gApp.mDebugger.SetOutputFilterFlags(outputFilterFlags ^ .SymbolLoadMessages); - }); - /* Not sure how to filter Program Output, it's handled in BeefSysLib not the IDE/Debugger. Perhaps we would also need SetOutputFilterFlags() in BeefSysLib var menuItemProgramOutput = menu.AddItem("Program Output");