Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ------------------------------------------ Библиотеки ---------------------------------------------------------------
- local ecs = require("ECSAPI")
- local fs = require("filesystem")
- local gpu = require("component").gpu
- local unicode = require("unicode")
- local event = require("event")
- local serialization = require("serialization")
- ------------------------------------------ Переменные ---------------------------------------------------------------
- local width, height = 70, 30
- local x, y = ecs.correctStartCoords("auto", "auto", width, height)
- local oldPixels = ecs.rememberOldPixels(x, y, x + width - 1, y + height - 1)
- local dataWidth, dataHeight = width - 6, height - 14
- local drawListFrom = 1
- local selectedObject = 3
- local pathToList = "MineOS/System/AutorunManager/Filelist.txt"
- local autorunObjects = {
- -- { path = "OS.lua", enabled = true, size = 30 },
- -- { path = "Cyka/Home.lua", enabled = true, size = 30 },
- -- { path = "Pidar/Lalra/Cyka.lua", enabled = true, size = 30 },
- -- { path = "322File.lua", enabled = false, size = 30 },
- -- { path = "SasiHyu.lua", enabled = true, size = 30 },
- -- { path = "Blabla.cfg", enabled = false, size = 30 },
- }
- ------------------------------------------ Функции ---------------------------------------------------------------
- --Объекты для тача
- local obj = {}
- local function newObj(class, name, ...)
- obj[class] = obj[class] or {}
- obj[class][name] = {...}
- end
- local function saveAutorun()
- local file = io.open("autorun.lua", "w")
- file:write("local success, reason\n")
- for i = 1, #autorunObjects do
- if autorunObjects[i].enabled then
- file:write("success, reason = pcall(loadfile(\"" .. autorunObjects[i].path .. "\")); if not success then print(\"Ошибка: \" .. tostring(reason)) end\n")
- end
- end
- file:close()
- end
- local function saveList()
- local file = io.open(pathToList, "w")
- file:write(serialization.serialize(autorunObjects))
- file:close()
- end
- local function loadList()
- if fs.exists(pathToList) then
- local file = io.open(pathToList, "r")
- local text = file:read("*a")
- autorunObjects = serialization.unserialize(text)
- file:close()
- else
- fs.makeDirectory(fs.path(pathToList))
- saveList()
- end
- end
- local function drawFiles(x, y)
- local limit, from = dataHeight, drawListFrom
- obj["List"] = {}
- local yPos = y + 1
- ecs.square(x, y, dataWidth, dataHeight, 0xFFFFFF)
- ecs.square(x, y, dataWidth, 1, ecs.colors.blue)
- gpu.setForeground(0xFFFFFF)
- gpu.set(x + 1, y, "Запуск")
- gpu.set(x + 9, y, "Файл")
- gpu.set(x + 48, y, "Размер")
- ecs.srollBar(x + dataWidth - 1, yPos, 1, dataHeight - 1, #autorunObjects == 0 and from or #autorunObjects, from, 0xCCCCCC, ecs.colors.lightBlue)
- local color, color2
- for i = from, (from + #autorunObjects - 1) do
- if i > limit then break end
- if i % 2 == 0 then color = 0xFFFFFF; color2 = 0x262626 else color = 0xEEEEEE; color2 = 0x262626 end
- if i == selectedObject then color = ecs.colors.green; color2 = 0xFFFFFF end
- if autorunObjects[i] then
- ecs.square(x, yPos, dataWidth - 1, 1, color)
- if autorunObjects[i].enabled then
- ecs.colorTextWithBack(x + 3, yPos, ecs.colors.blue, color, "✔")
- else
- ecs.colorTextWithBack(x + 3, yPos, ecs.colors.red, color, "❌")
- end
- gpu.setBackground(color)
- gpu.setForeground(color2)
- gpu.set(x + 9, yPos, ecs.stringLimit("start", autorunObjects[i].path, 37))
- gpu.set(x + 48, yPos, autorunObjects[i].size .. " КБ")
- newObj("List", i, x, yPos, x + dataWidth - 1, yPos)
- yPos = yPos + 1
- end
- end
- end
- local function drawWindow()
- local xPos, yPos
- ecs.square(x, y, width, height, 0xDDDDDD)
- xPos = x + 3
- yPos = y + 4
- ecs.colorText(xPos, yPos, 0x262626, "Эти объекты будут запускаться автоматически при загрузке:")
- yPos = yPos + 2
- ecs.square(x, y, width, 3, 0xCCCCCC)
- ecs.centerText("x", y + 1, "Менеджер автозагрузки")
- drawFiles(x + 3, y + 6)
- yPos = y + height - 7
- ecs.colorTextWithBack(xPos, yPos, 0x262626, 0xDDDDDD, "Чтобы отключить загрузку файла, снимите галочку рядом с именем")
- yPos = yPos + 1
- gpu.set(xPos, yPos, "программы. Приоритет загузки снижается сверху вниз.")
- yPos = yPos + 2
- local name
- name = "+"; newObj("Buttons", name, ecs.drawAdaptiveButton(xPos, yPos, 2, 1, name, 0xFFFFFF, 0x262626)); xPos = obj["Buttons"][name][3] + 2
- name = "-"; newObj("Buttons", name, ecs.drawAdaptiveButton(xPos, yPos, 2, 1, name, 0xFFFFFF, 0x262626)); xPos = obj["Buttons"][name][3] + 2
- name = "Выше"; newObj("Buttons", name, ecs.drawAdaptiveButton(xPos, yPos, 2, 1, name, 0xFFFFFF, 0x262626)); xPos = obj["Buttons"][name][3] + 2
- name = "Ниже"; newObj("Buttons", name, ecs.drawAdaptiveButton(xPos, yPos, 2, 1, name, 0xFFFFFF, 0x262626)); xPos = obj["Buttons"][name][3] + 2
- -- if fs.isAutorunEnabled() then
- -- name = "Выключить автозапуск"
- -- else
- -- name = "Включить автозапуск "
- -- end
- -- newObj("Buttons", name, ecs.drawAdaptiveButton(xPos, yPos, 2, 1, name, 0xAAAAAA, 0xFFFFFF)); xPos = obj["Buttons"][name][3] + 2
- xPos = x + width - 12
- name = "Выход"; newObj("Buttons", name, ecs.drawAdaptiveButton(xPos, yPos, 2, 1, name, 0x888888, 0xFFFFFF))
- end
- ------------------------------------------ Программа ---------------------------------------------------------------
- loadList()
- drawWindow()
- while true do
- local e = {event.pull()}
- if e[1] == "touch" then
- --if obj["List"] and #obj["List"] > 0 then
- for key in pairs(obj["List"]) do
- if ecs.clickedAtArea(e[3], e[4], obj["List"][key][1], obj["List"][key][2], obj["List"][key][3], obj["List"][key][4]) then
- if selectedObject ~= key then
- selectedObject = key
- drawFiles(x + 3, y + 6)
- else
- if e[3] >= obj["List"][key][1] + 2 and e[3] <= obj["List"][key][1] + 4 then
- autorunObjects[key].enabled = not autorunObjects[key].enabled
- drawFiles(x + 3, y + 6)
- saveList()
- saveAutorun()
- end
- end
- break
- end
- end
- --end
- for key in pairs(obj["Buttons"]) do
- if ecs.clickedAtArea(e[3], e[4], obj["Buttons"][key][1], obj["Buttons"][key][2], obj["Buttons"][key][3], obj["Buttons"][key][4]) then
- ecs.drawAdaptiveButton(obj["Buttons"][key][1], obj["Buttons"][key][2], 2, 1, key, ecs.colors.blue, 0xFFFFFF)
- os.sleep(0.2)
- ecs.drawAdaptiveButton(obj["Buttons"][key][1], obj["Buttons"][key][2], 2, 1, key, 0xFFFFFF, 0x262626)
- if key == "-" then
- table.remove(autorunObjects, selectedObject)
- if drawListFrom == selectedObject then drawListFrom = 1 end
- drawFiles(x + 3, y + 6)
- saveList()
- saveAutorun()
- elseif key == "+" then
- local data = ecs.universalWindow("auto", "auto", 36, 0xeeeeee, true, {"EmptyLine"}, {"CenterText", 0x880000, "Добавить новый файл"}, {"EmptyLine"}, {"Input", 0x262626, 0x880000, "Путь к файлу"}, {"EmptyLine"}, {"Button", {0x888888, 0xffffff, "Добавить"}, {0xAAAAAA, 0xffffff, "Отмена"}})
- if data[2] == "Добавить" then
- if fs.exists(data[1]) then
- local cyka = false
- for i = 1, #autorunObjects do
- if autorunObjects[i].path == data[1] then cyka = true end
- end
- if not cyka then
- table.insert(autorunObjects, { path = data[1], enabled = true, size = math.ceil(fs.size(data[1]) / 1024) })
- drawFiles(x + 3, y + 6)
- saveList()
- saveAutorun()
- else
- ecs.error("Файл \"" .. data[1] .. "\" уже есть в этом списке!")
- end
- else
- ecs.error("Файл \"" .. data[1] .. "\" не существует!")
- end
- end
- elseif key == "Выше" then
- if selectedObject > 1 then
- local cyka = autorunObjects[selectedObject]
- table.remove(autorunObjects, selectedObject)
- table.insert(autorunObjects, selectedObject - 1, cyka)
- selectedObject = selectedObject - 1
- drawFiles(x + 3, y + 6)
- saveList()
- saveAutorun()
- end
- elseif key == "Ниже" then
- if selectedObject < #autorunObjects then
- local cyka = autorunObjects[selectedObject]
- table.remove(autorunObjects, selectedObject)
- table.insert(autorunObjects, selectedObject + 1, cyka)
- selectedObject = selectedObject + 1
- drawFiles(x + 3, y + 6)
- saveList()
- saveAutorun()
- end
- elseif key == "Выход" then
- ecs.drawOldPixels(oldPixels)
- return
- -- elseif key == "Включить автозапуск " then
- -- fs.setAutorunEnabled(true)
- -- drawWindow()
- -- elseif key == "Выключить автозапуск" then
- -- fs.setAutorunEnabled(false)
- -- drawWindow()
- end
- break
- end
- end
- elseif e[1] == "scroll" then
- if e[5] == 1 then
- if drawListFrom > 1 then drawListFrom = drawListFrom - 1; drawFiles(x + 3, y + 6) end
- else
- if drawListFrom < #autorunObjects then drawListFrom = drawListFrom + 1; drawFiles(x + 3, y + 6) end
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement