Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local databaseFile = "disk/patents.skydb"
- local adminPassword = ""
- local function save(tbl,name)
- local file = fs.open(name,"w")
- file.write(textutils.serialise(tbl))
- file.close()
- end
- local function load(name)
- local file = fs.open(name,"r")
- local data = file.readAll()
- file.close()
- return textutils.unserialise(data)
- end
- local function centerText(text,y)
- local x,_ = term.getSize()
- local x = math.floor(x/2) - math.floor(string.len(text)/2)
- term.setCursorPos(x,y)
- term.write(text)
- end
- database = load(databaseFile)
- numData = #database
- cpn = 1
- dataWriting = false
- local function checkCurNumber()
- if cpn > numData then cpn = numData end
- if cpn < 1 then cpn = 1 end
- end
- local function writeData()
- patentWriting = true
- newDataNum = numData + 1
- term.clear()
- term.setCursorPos(1,1)
- term.write("Owner: ")
- dOwner = read()
- term.setCursorPos(1,2)
- term.write("Name: ")
- dName = read()
- term.setCursorPos(1,3)
- term.write("Description: ")
- dDesc = read()
- database[newDataNum] = {owner = dOwner,name = dName,desc = dDesc}
- patentWriting = false
- save(database,patentFile)
- numData = #database
- term.clear()
- end
- local function deleteData(tbl,num)
- dataWriting = true
- term.clear()
- term.setCursorPos(1,1)
- term.write("Are you sure you want to delete this data? (y/n)")
- term.setCursorPos(1,2)
- acceptance = read()
- if acceptance == "y" then
- term.setCursorPos(1,3)
- term.write("Please enter the admin password: ")
- local password = read("*")
- if adminPassword == password then
- table.remove(tbl,num)
- term.setCursorPos(1,5)
- print("Data deleted. A copy is stored on the working disk, and a read only copy is stored on the backup disk.")
- else
- term.setCursorPos(1,5)
- print("Password incorrect, returning to data view")
- end
- sleep(1)
- numData = #database
- save(database,databaseFile)
- dataWriting = false
- term.clear()
- end
- end
- local function handleKeys()
- while true do
- _,key = os.pullEvent("key")
- if key == keys.q then cpn = cpn - 1 term.clear() end
- if key == keys.e then cpn = cpn + 1 term.clear() end
- if key == keys.p then writeData() end
- if key == keys.semiColon then deleteData(database,cpn) end
- end
- end
- local function main()
- while true do
- if not patentWriting then
- term.setCursorPos(1,1)
- term.clearLine()
- term.setTextColour(colours.white)
- centerText(tostring(cpn) .. "/" .. tostring(numData),1)
- checkCurNumber()
- if database[cpn] ~= nil then
- term.setTextColour(colours.red)
- centerText("Owner: "..database[cpn]["owner"],2)
- term.setTextColour(colours.yellow)
- centerText("Name: "..database[cpn]["name"],3)
- term.setTextColour(colours.white)
- term.setCursorPos(1,4)
- print(database[cpn]["desc"])
- else
- term.clear()
- end
- end
- sleep(0.1)
- end
- end
- term.clear()
- parallel.waitForAny(handleKeys,main)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement