Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- os.loadAPI("/os/apis/etu")
- peripheral.find("modem", rednet.open)
- FsAddress = rednet.lookup("fileServer")
- TermWidth, TermHeight = term.getSize()
- SelectedItem = 1
- Running = true
- -- handler methods
- local function on_key_pressed(key, menu)
- if key == keys.enter then
- menu[SelectedItem].handler()
- elseif key == keys.up and SelectedItem > 1 then
- SelectedItem = SelectedItem - 1
- elseif key == keys.down and SelectedItem < #menu then
- SelectedItem = SelectedItem + 1
- end
- end
- --printing methods
- local function print_menu(menu)
- for i = 1, #menu do
- if i == SelectedItem then
- etu.print_centered(3+i, ">> " .. menu[i].text .. " <<")
- else
- etu.print_centered(3+i, " " .. menu[i].text .. " ")
- end
- end
- end
- --menu methods
- local function get_file_list()
- local msg = {
- [1] = "filelist",
- }
- rednet.send(FsAddress, msg, "fileServer")
- local id, filelist = rednet.receive(10)
- AvailibleFiles = filelist
- term.clear()
- print("recieved file list")
- sleep(4)
- end
- local function get_file()
- local running = true
- -- local methods
- local function request_file()
- local msg = {
- [1] = "request",
- [2] = AvailibleFiles[SelectedItem]
- }
- rednet.send(FsAddress, msg, "fileServer")
- local id, msg = rednet.receive(10)
- local nfile = fs.open("os/programs/"..AvailibleFiles[SelectedItem], "w")
- nfile.write(msg)
- nfile.close()
- end
- local function exit()
- running = false
- term.clear()
- print_menu(MainMenu)
- end
- --build fileMenu
- local filemenu = {}
- for i = 1, #AvailibleFiles do
- filemenu[i] = {text = AvailibleFiles[i], handler = request_file}
- end
- filemenu[#AvailibleFiles+1] = {text = "Go Back", handler = exit}
- while running do
- term.clear()
- term.setCursorPos(1,1)
- print_menu(filemenu)
- local event, key = os.pullEvent("key")
- on_key_pressed(key, filemenu)
- end
- end
- function Exit()
- Running = false
- end
- --menu defs
- MainMenu = {
- [1] = {text = "Get file list", handler = get_file_list},
- [2] = {text = "get file", handler = get_file},
- [3] = {text = "exit", handler = Exit}
- }
- local function main()
- while Running do
- term.clear()
- term.setCursorPos(1,1)
- print_menu(MainMenu)
- local event, key = os.pullEvent("key")
- on_key_pressed(key, MainMenu)
- end
- end
- main()
Advertisement
Advertisement