Advertisement
DYankee

get file

Oct 2nd, 2022 (edited)
1,065
0
Never
1
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.56 KB | None | 0 0
  1. os.loadAPI("/os/apis/etu")
  2. peripheral.find("modem", rednet.open)
  3.  
  4. FsAddress = rednet.lookup("fileServer")
  5. TermWidth, TermHeight = term.getSize()
  6. SelectedItem = 1
  7. Running = true
  8.  
  9.  
  10. -- handler methods
  11. local function on_key_pressed(key, menu)
  12.     if key == keys.enter then
  13.         menu[SelectedItem].handler()
  14.     elseif key == keys.up and SelectedItem > 1 then
  15.         SelectedItem = SelectedItem - 1
  16.     elseif key == keys.down and SelectedItem < #menu then
  17.         SelectedItem = SelectedItem + 1
  18.     end
  19. end
  20.  
  21. --printing methods
  22. local function print_menu(menu)
  23.     for i = 1, #menu do
  24.         if i == SelectedItem then
  25.             etu.print_centered(3+i, ">> " .. menu[i].text .. " <<")
  26.         else
  27.             etu.print_centered(3+i, "   " .. menu[i].text .. "   ")
  28.         end
  29.     end
  30. end
  31.  
  32.  
  33. --menu methods
  34. local function get_file_list()
  35.     local msg = {
  36.         [1] = "filelist",
  37.     }
  38.     rednet.send(FsAddress, msg, "fileServer")
  39.     local id, filelist = rednet.receive(10)
  40.     AvailibleFiles = filelist
  41.     term.clear()
  42.     print("recieved file list")
  43.     sleep(4)
  44. end
  45.  
  46. local function get_file()
  47.     local running = true
  48.  
  49.     -- local methods
  50.     local function request_file()
  51.         local msg = {
  52.             [1] = "request",
  53.             [2] = AvailibleFiles[SelectedItem]
  54.         }
  55.         rednet.send(FsAddress, msg, "fileServer")
  56.         local id, msg = rednet.receive(10)
  57.         local nfile = fs.open("os/programs/"..AvailibleFiles[SelectedItem], "w")
  58.         nfile.write(msg)
  59.         nfile.close()
  60.     end
  61.  
  62.     local function exit()
  63.         running = false
  64.         term.clear()
  65.         print_menu(MainMenu)
  66.     end
  67.  
  68.     --build fileMenu
  69.     local filemenu = {}
  70.     for i = 1, #AvailibleFiles do
  71.         filemenu[i] = {text = AvailibleFiles[i], handler = request_file}
  72.     end
  73.     filemenu[#AvailibleFiles+1] = {text = "Go Back", handler = exit}
  74.  
  75.     while running do
  76.         term.clear()
  77.         term.setCursorPos(1,1)
  78.         print_menu(filemenu)
  79.         local event, key = os.pullEvent("key")
  80.         on_key_pressed(key, filemenu)
  81.     end
  82. end
  83.  
  84. function Exit()
  85.     Running = false
  86. end
  87.  
  88. --menu defs
  89. MainMenu = {
  90.     [1] = {text = "Get file list", handler = get_file_list},
  91.     [2] = {text = "get file", handler = get_file},
  92.     [3] = {text = "exit", handler = Exit}
  93. }
  94.  
  95. local function main()
  96.     while Running do
  97.         term.clear()
  98.         term.setCursorPos(1,1)
  99.         print_menu(MainMenu)
  100.  
  101.         local event, key = os.pullEvent("key")
  102.         on_key_pressed(key, MainMenu)
  103.     end
  104. end
  105.  
  106. main()
Advertisement
Comments
Add Comment
Please, Sign In to add comment
Advertisement