Guest User

cefadrom

a guest
May 25th, 2016
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.20 KB | None | 0 0
  1. function printUsage()
  2. print( "Usage: monitor <side> <program> <arguments>" )
  3. return
  4. end
  5.  
  6. local tArgs = { ... }
  7. if #tArgs < 2 then
  8. printUsage()
  9. return
  10. end
  11.  
  12. local sSide = tArgs[1]
  13. if peripheral.getType( sSide ) ~= "monitor" then
  14. print( "No monitor on "..sSide.." side" )
  15. return
  16. end
  17.  
  18. local sProgram = tArgs[2]
  19. local sPath = shell.resolveProgram( sProgram )
  20. if sPath == nil then
  21. print( "No such program: "..sProgram )
  22. return
  23. end
  24.  
  25. print( "Running "..sProgram.." on "..sSide.." monitor" )
  26.  
  27. local monitor = peripheral.wrap( sSide )
  28. term.redirect( monitor )
  29.  
  30. local args = {...}
  31.  
  32. local function runProgram()
  33. shell.run( sProgram, select( 3, unpack( args ) ) )
  34. end
  35.  
  36. local co = coroutine.create(runProgram)
  37.  
  38. local event = {}
  39. local tFilter = {}
  40.  
  41. while true do
  42. if event[1] == "monitor_touch" and event[2] == sSide then
  43. os.queueEvent( "mouse_click", 1, unpack( event, 3 ) )
  44. end
  45. local ok, param = coroutine.resume( co, unpack(event) )
  46. if not ok then
  47. term.restore()
  48. error(param)
  49. else
  50. tFilter = param
  51. end
  52.  
  53. if coroutine.status(co) == "dead" then
  54. break
  55. end
  56.  
  57. event = { os.pullEventRaw() }
  58. end
  59.  
  60. term.restore()
Add Comment
Please, Sign In to add comment