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