Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Apps Management Module for SimpleOS
- local apps = {}
- -- Default apps storage
- local appList = {}
- local appsFile = "os/data/apps.dat"
- -- Default apps
- local defaultApps = {
- {
- name = "Shell",
- symbol = ">",
- command = "shell"
- },
- {
- name = "Files",
- symbol = "F",
- command = "list"
- },
- {
- name = "Edit",
- symbol = "E",
- command = "edit"
- },
- {
- name = "Lua",
- symbol = "L",
- command = "lua"
- },
- {
- name = "Snake",
- symbol = "S",
- command = "os/games/snake"
- },
- {
- name = "Tetris",
- symbol = "T",
- command = "os/games/tetris"
- },
- {
- name = "Pong",
- symbol = "P",
- command = "os/games/pong"
- },
- {
- name = "Mines",
- symbol = "M",
- command = "os/games/minesweeper"
- },
- {
- name = "2048",
- symbol = "2",
- command = "os/games/2048"
- },
- {
- name = "Breakou",
- symbol = "B",
- command = "os/games/breakout"
- },
- {
- name = "ImgView",
- symbol = "I",
- command = "os/programs/imgconv"
- }
- }
- -- Ensure data directory exists
- local function ensureDataDir()
- if not fs.exists("os/data") then
- fs.makeDir("os/data")
- end
- end
- -- Load apps from file
- function apps.load()
- ensureDataDir()
- if fs.exists(appsFile) then
- local file = fs.open(appsFile, "r")
- if file then
- local content = file.readAll()
- file.close()
- local loaded = textutils.unserialize(content)
- if loaded then
- appList = loaded
- return
- end
- end
- end
- -- Use defaults if no saved apps
- appList = defaultApps
- apps.save()
- end
- -- Save apps to file
- function apps.save()
- ensureDataDir()
- local file = fs.open(appsFile, "w")
- if file then
- file.write(textutils.serialize(appList))
- file.close()
- end
- end
- -- Get all apps
- function apps.getAll()
- return appList
- end
- -- Add a new app
- function apps.add(name, symbol, command)
- table.insert(appList, {
- name = name,
- symbol = symbol or "#",
- command = command
- })
- apps.save()
- end
- -- Remove an app by index
- function apps.remove(index)
- if index > 0 and index <= #appList then
- table.remove(appList, index)
- apps.save()
- return true
- end
- return false
- end
- -- Edit an app
- function apps.edit(index, name, symbol, command)
- if index > 0 and index <= #appList then
- appList[index].name = name or appList[index].name
- appList[index].symbol = symbol or appList[index].symbol
- appList[index].command = command or appList[index].command
- apps.save()
- return true
- end
- return false
- end
- -- Run an app
- function apps.run(index)
- if index > 0 and index <= #appList then
- local app = appList[index]
- term.setBackgroundColor(colors.black)
- term.setTextColor(colors.white)
- term.clear()
- term.setCursorPos(1, 1)
- -- Run the command
- shell.run(app.command)
- -- Wait for key press to return
- print()
- print("Press any key to return to desktop...")
- os.pullEvent("key")
- return true
- end
- return false
- end
- -- Get app count
- function apps.count()
- return #appList
- end
- -- Get app by index
- function apps.get(index)
- return appList[index]
- end
- return apps
Advertisement