HenryEx

TableCleaner

Aug 18th, 2026
4,615
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.99 KB | Source Code | 0 0
  1. -- Made by GreenHouse! for the FearlessRevolution Forum.
  2. -- Version 1.02
  3. -- https://fearlessrevolution.com/viewtopic.php?f=14&t=20159
  4.  
  5. -- Changelog [1.01]:
  6. ---- Changed scale of the Form to fit properly on other resolutions (Can't really fully test it myself, but it should fit properly.)
  7.  
  8. -- Changelog [1.02]:
  9. ---- Moved the Clean Table option to the Edit menu.
  10. ---- User can now use Alt+E (Edit) + C to open the form. Then again C to clean the table.
  11. ---- Added a Cancel button to the form
  12. ---- Added ability to close the form by hitting the Escape key
  13. ---- Removed min/maximize buttons from the form
  14.  
  15. delOptions = {'delSymbols','delAdvOptions','delComments','delStructs'}
  16. delCaptions = {'Symbols','Advanced Options','Comments','Structures'}
  17. chkDelBoxes = {}
  18.  
  19. local function FindForm(name)
  20.   for i = 0,GetFormCount()-1 do
  21.     local form = GetForm(i)
  22.     if form.ClassName == name then return form end
  23.   end
  24. end
  25.  
  26. function CloseCleaner()
  27.   frmClean.Hide()
  28. end
  29.  
  30. function Escaper(key)
  31.   if key == VK_ESCAPE then CloseCleaner() end
  32.   return key
  33. end
  34.  
  35. regSettings = getSettings('GreenH')
  36. for key,val in pairs(delOptions) do
  37.   if #regSettings[val..'Active'] == 0 then regSettings[val..'Active'] = 1 end --If it doesn't exist, then create and set to default
  38.   _G[val..'Active'] = tonumber(regSettings[val..'Active']) --Then load the saved setting
  39. end
  40.  
  41. frmClean = createForm(false)
  42. frmClean.Width = 300
  43. frmClean.Height = 120
  44. frmClean.Caption = 'Table Cleaner'
  45. frmClean.Position = 'poMainFormCenter'
  46. frmClean.BorderStyle = 'bsToolWindow'
  47. frmClean.OnClose = CloseCleaner
  48. frmClean.OnShow = function()
  49.   for key,val in pairs(delOptions) do
  50.     checkbox_setState(chkDelBoxes[key],_G[val.."Active"])
  51.   end
  52. end
  53.  
  54. for key,val in pairs(delOptions) do
  55.   chkDelBoxes[key] = createCheckBox(frmClean)
  56.   chkDelBoxes[key].Left = 5
  57.   chkDelBoxes[key].Top = 5 + (20*(key-1))
  58.   chkDelBoxes[key].Height = 20
  59.   chkDelBoxes[key].AutoSize = true
  60.   chkDelBoxes[key].Name = val
  61.   chkDelBoxes[key].Caption = "Delete "..delCaptions[key]
  62.   chkDelBoxes[key].OnChange = function(sender)
  63.     _G[sender.Name.."Active"] = checkbox_getState(sender)
  64.     regSettings.Value[sender.Name..'Active'] = checkbox_getState(sender)
  65.   end
  66.   chkDelBoxes[key].OnKeyUp = function(sender,key) return Escaper(key) end
  67. end
  68.  
  69. btnClean = createButton(frmClean)
  70. btnClean.Left = 5
  71. btnClean.Top = 90
  72. btnClean.Width = 80
  73. btnClean.Name = 'btnClean'
  74. btnClean.Caption = '&Clean'
  75. btnClean.OnKeyUp = function(sender,key) return Escaper(key) end
  76. btnClean.OnClick = function()
  77.   AddressList.disableAllWithoutExecute() --Force Disable All Scripts
  78.   if delSymbolsActive == 1 then
  79.     local MemBrwsr = FindForm('TMemoryBrowser')
  80.     MemBrwsr.miUserdefinedSymbols.doClick()
  81.     SymbHndlr = FindForm('TfrmSymbolhandler')
  82.     local list = SymbHndlr.ListView1.Items
  83.     for i = SymbHndlr.ListView1.Items.Count-1,0,-1 do
  84.       unregisterSymbol(SymbHndlr.ListView1.Items[i].Caption)
  85.     end
  86.     SymbHndlr.Close()
  87.   end
  88.   if delAdvOptionsActive == 1 then
  89.     FindForm('TAdvancedOptions').lvCodelist.Items.Clear()
  90.   end
  91.   if delCommentsActive == 1 then
  92.     local Cmnts = FindForm('TComments')
  93.     Cmnts.Memo1.Clear()
  94.     MainForm.CommentButton.Font.Style = ''
  95.   end
  96.   if delStructsActive == 1 then
  97.     if getStructureCount() ~= 0 then
  98.       for i = getStructureCount()-1,0,-1 do
  99.         getStructure(i).removeFromGlobalStructureList()
  100.       end
  101.     end
  102.   end
  103. end
  104.  
  105. btnCancelClean = createButton(frmClean)
  106. btnCancelClean.Left = 90
  107. btnCancelClean.Top = 90
  108. btnCancelClean.Width = 80
  109. btnCancelClean.Caption = 'Cancel'
  110. btnCancelClean.OnClick = CloseCleaner
  111. btnCancelClean.OnKeyUp = function(sender,key) return Escaper(key) end
  112.  
  113. if CleanerMenuItem == nil then
  114.   local parent = getMainForm().Menu.Items[1]
  115.   CleanerMenuItem = createMenuItem(parent)
  116.   CleanerMenuItem.Caption = '&Clean Table'
  117.   CleanerMenuItem.OnClick = function() frmClean.Show() end
  118.   CleanerMenuItem.Name = 'ghCleanTable'
  119.   CleanerMenuItem.Shortcut = 'Ctrl+Q'
  120.   parent.add(CleanerMenuItem)
  121. end
Advertisement
Add Comment
Please, Sign In to add comment