require "Gelo" require "RudraScript" LuaRunner = {} LuaRunner.default_luadir = ProgDir..'Scripts\\' function LuaRunner:runlua() Rudra.Set_CustomLibName('Sandcat') Rudra.Redirect_IO(true) if extbar.getval('button[name="clearlog"]') == 'True' then tab:clearlog() end local script = extbar.getval('plaintext[name="script"]') --extbar.setattrib('button[name="run"]','disabled','True') tab.statusbartext = 'Executing Lua Script...' assert(loadstring(script))() --extbar.setattrib('button[name="run"]','disabled','') tab.statusbartext = 'Done.' end function LuaRunner:openlua() extbar.setattrib('button[name="run"]','disabled','') local f = extbar.getval('select[name="scriptlist"]') local fcontents = '' if file_exists(self.default_luadir..f) then fcontents = file_gettostr(self.default_luadir..f) end extbar.setval('plaintext[name="script"]',fcontents) end function LuaRunner:get_scriptlist() local p = GStrListParser:new() local flist = GStrList:new() local l = file_getdirfiles(self.default_luadir..'*.lua') p:loadfromstr(l) while p:parsing() do flist:add('') end local result = flist.text flist:release() p:release() return result end function LuaRunner:viewluaeditor(script,scbxname) defaultlua = [[]] html = [[
</plaintext> </td> <td style="width:3px;"></td> <td style="width:40%;" valign="top"> External Scripts: <font color="gray">(Place your .lua scripts in <b>]]..ProgDir..[[Scripts\</b>)</font> <select .file-list name="scriptlist" size="5" style="width:100%;" onchange="LuaRunner:openlua()"> ]] html_end = [[ </select><br><br> Note: You can use all standard Lua functions plus:<br> <ul> <li><b>print()</b>, <b>Sandcat.WriteLn()</b> and <b>Sandcat.Write()</b> to print to the Log tab</li> <li><a href="#" onclick="browser.newtab('http://www.syhunt.com/sandcat/docs.php?n=SandcatBrowserEDK.LuaFunctions')">Sandcat Browser functions</a></li> <li><a href="#" onclick="browser.newtab('http://www.syhunt.com/sandcat/docs.php?n=Gelo.Gelo')">Gelo functions</a></li> <li><a href="#" onclick="browser.newtab('http://www.syhunt.com/sandcat/docs.php?n=SandcatBrowserEDK.RudraScriptSupport')">Rudra functions</a></li> </ul> </td> </tr></table> <button name="run" onclick="LuaRunner:runlua()">Execute Lua Script <img src="Syhunt.scx#Images\icon_lang_lua.png" style="height:10px;width:10px;"></button> &nbsp;&nbsp;<button type="checkbox" name="clearlog" checked>Clear log before execution</button> ]] if str_beginswith(tab.url,'http') then if script ~= nil then defaultlua = browser.readfile(scbxname,script) end extbar.load(html..self:get_scriptlist()..html_end) extbar.setval('plaintext[name="script"]',defaultlua) else app.showmessage('No URL loaded.') end end