-- Made by GreenHouse! for the FearlessRevolution Forum. -- Version 1.02 -- https://fearlessrevolution.com/viewtopic.php?f=14&t=20159 -- Changelog [1.01]: ---- Changed scale of the Form to fit properly on other resolutions (Can't really fully test it myself, but it should fit properly.) -- Changelog [1.02]: ---- Moved the Clean Table option to the Edit menu. ---- User can now use Alt+E (Edit) + C to open the form. Then again C to clean the table. ---- Added a Cancel button to the form ---- Added ability to close the form by hitting the Escape key ---- Removed min/maximize buttons from the form delOptions = {'delSymbols','delAdvOptions','delComments','delStructs'} delCaptions = {'Symbols','Advanced Options','Comments','Structures'} chkDelBoxes = {} local function FindForm(name) for i = 0,GetFormCount()-1 do local form = GetForm(i) if form.ClassName == name then return form end end end function CloseCleaner() frmClean.Hide() end function Escaper(key) if key == VK_ESCAPE then CloseCleaner() end return key end regSettings = getSettings('GreenH') for key,val in pairs(delOptions) do if #regSettings[val..'Active'] == 0 then regSettings[val..'Active'] = 1 end --If it doesn't exist, then create and set to default _G[val..'Active'] = tonumber(regSettings[val..'Active']) --Then load the saved setting end frmClean = createForm(false) frmClean.Width = 300 frmClean.Height = 120 frmClean.Caption = 'Table Cleaner' frmClean.Position = 'poMainFormCenter' frmClean.BorderStyle = 'bsToolWindow' frmClean.OnClose = CloseCleaner frmClean.OnShow = function() for key,val in pairs(delOptions) do checkbox_setState(chkDelBoxes[key],_G[val.."Active"]) end end for key,val in pairs(delOptions) do chkDelBoxes[key] = createCheckBox(frmClean) chkDelBoxes[key].Left = 5 chkDelBoxes[key].Top = 5 + (20*(key-1)) chkDelBoxes[key].Height = 20 chkDelBoxes[key].AutoSize = true chkDelBoxes[key].Name = val chkDelBoxes[key].Caption = "Delete "..delCaptions[key] chkDelBoxes[key].OnChange = function(sender) _G[sender.Name.."Active"] = checkbox_getState(sender) regSettings.Value[sender.Name..'Active'] = checkbox_getState(sender) end chkDelBoxes[key].OnKeyUp = function(sender,key) return Escaper(key) end end btnClean = createButton(frmClean) btnClean.Left = 5 btnClean.Top = 90 btnClean.Width = 80 btnClean.Name = 'btnClean' btnClean.Caption = '&Clean' btnClean.OnKeyUp = function(sender,key) return Escaper(key) end btnClean.OnClick = function() AddressList.disableAllWithoutExecute() --Force Disable All Scripts if delSymbolsActive == 1 then local MemBrwsr = FindForm('TMemoryBrowser') MemBrwsr.miUserdefinedSymbols.doClick() SymbHndlr = FindForm('TfrmSymbolhandler') local list = SymbHndlr.ListView1.Items for i = SymbHndlr.ListView1.Items.Count-1,0,-1 do unregisterSymbol(SymbHndlr.ListView1.Items[i].Caption) end SymbHndlr.Close() end if delAdvOptionsActive == 1 then FindForm('TAdvancedOptions').lvCodelist.Items.Clear() end if delCommentsActive == 1 then local Cmnts = FindForm('TComments') Cmnts.Memo1.Clear() MainForm.CommentButton.Font.Style = '' end if delStructsActive == 1 then if getStructureCount() ~= 0 then for i = getStructureCount()-1,0,-1 do getStructure(i).removeFromGlobalStructureList() end end end end btnCancelClean = createButton(frmClean) btnCancelClean.Left = 90 btnCancelClean.Top = 90 btnCancelClean.Width = 80 btnCancelClean.Caption = 'Cancel' btnCancelClean.OnClick = CloseCleaner btnCancelClean.OnKeyUp = function(sender,key) return Escaper(key) end if CleanerMenuItem == nil then local parent = getMainForm().Menu.Items[1] CleanerMenuItem = createMenuItem(parent) CleanerMenuItem.Caption = '&Clean Table' CleanerMenuItem.OnClick = function() frmClean.Show() end CleanerMenuItem.Name = 'ghCleanTable' CleanerMenuItem.Shortcut = 'Ctrl+Q' parent.add(CleanerMenuItem) end