HenryEx icon

TableCleaner

HenryEx | PRO | 08/18/26 12:49:47 PM UTC | 0 ⭐ | 3409 👁️ | Never ⏰ | []
Lua |

3.99 KB

|

Source Code

|

0 👍

/

0 👎

-- 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

Comments