mirror of
https://github.com/IgorTimofeev/MineOS.git
synced 2025-12-20 19:19:21 +01:00
621 lines
19 KiB
Lua
621 lines
19 KiB
Lua
require("advancedLua")
|
||
local component = require("component")
|
||
local event = require("event")
|
||
local term = require("term")
|
||
local unicode = require("unicode")
|
||
local ecs = require("ECSAPI")
|
||
local fs = require("filesystem")
|
||
local shell = require("shell")
|
||
local internet = require("internet")
|
||
local context = require("context")
|
||
local xml = require("xmlParser")
|
||
local unixtime = require("unixtime")
|
||
local SHA2 = require("SHA2")
|
||
-- local computer = require("computer")
|
||
-- local keyboard = require("keyboard")
|
||
-- local image = require("image")
|
||
|
||
local gpu = component.gpu
|
||
|
||
--//replace 1,3,12,11,13,7,16,15,14,582,56,73,166,165,21,167,168,228,229,10,11 0
|
||
--
|
||
--------------------------------------------------------------------------------------------------------------------------
|
||
|
||
local xSize, ySize = gpu.getResolution()
|
||
local centerX, centerY = math.floor(xSize / 2), math.floor(ySize / 2)
|
||
|
||
local username = nil
|
||
local password = nil
|
||
|
||
local userkey = nil
|
||
local devKey = "e98db6da803203282d172156bc46137c"
|
||
local pastebin_url = nil
|
||
|
||
local isNotLoggedIn = true
|
||
|
||
local pathToConfig = "System/Pastebin/Login.cfg"
|
||
|
||
--МАССИВ СО ВСЕМИ ПАСТАМИ С ПАСТЕБИНА
|
||
local MyMassivWithPastes = {}
|
||
local drawPastesFrom = 1
|
||
|
||
local tabColor1 = 0x103258
|
||
local tabColor2 = 0x034879
|
||
local tabTextColor = 0xffffff
|
||
|
||
--------------------------------------------------------------------------------------------------------------------------
|
||
|
||
--СОЗДАНИЕ ОБЪЕКТОВ
|
||
local obj = {}
|
||
local function newObj(class, name, ...)
|
||
obj[class] = obj[class] or {}
|
||
obj[class][name] = {...}
|
||
end
|
||
|
||
--ЗАГРУЗИТЬ ФАЙЛ С ПАСТЕБИНА
|
||
local function get(pasteId, filename)
|
||
local f, reason = io.open(filename, "w")
|
||
if not f then
|
||
io.stderr:write("Failed opening file for writing: " .. reason)
|
||
return
|
||
end
|
||
|
||
--io.write("Downloading from pastebin.com... ")
|
||
local url = "http://pastebin.com/raw.php?i=" .. pasteId
|
||
local result, response = pcall(internet.request, url)
|
||
if result then
|
||
--io.write("success.\n")
|
||
for chunk in response do
|
||
--if not options.k then
|
||
chunk = string.gsub(chunk, "\r\n", "\n")
|
||
chunk = string.gsub(chunk, " ", " ")
|
||
--end
|
||
f:write(chunk)
|
||
end
|
||
|
||
f:close()
|
||
--io.write("Saved data to " .. filename .. "\n")
|
||
else
|
||
--io.write("failed.\n")
|
||
f:close()
|
||
fs.remove(filename)
|
||
io.stderr:write("HTTP request failed: " .. response .. "\n")
|
||
end
|
||
end
|
||
|
||
-- This makes a string safe for being used in a URL.
|
||
local function encode(code)
|
||
if code then
|
||
code = string.gsub(code, "([^%w ])", function (c)
|
||
return string.format("%%%02X", string.byte(c))
|
||
end)
|
||
code = string.gsub(code, " ", "+")
|
||
end
|
||
return code
|
||
end
|
||
|
||
|
||
|
||
--Удалить файлецкий
|
||
local function delete(paste)
|
||
local result, response = pcall(internet.request,
|
||
"http://pastebin.com/api/api_post.php",
|
||
"api_option=delete&"..
|
||
"api_dev_key="..devKey.."&"..
|
||
"api_user_key="..userKey.."&"..
|
||
"api_paste_key="..paste
|
||
)
|
||
|
||
if result then
|
||
return true
|
||
else
|
||
ecs.error("Отсутствует соединение с Pastebin.com")
|
||
return false
|
||
end
|
||
end
|
||
|
||
--ЗАЛОГИНИТЬСЯ В АККАУНТ
|
||
local function loginToAccount(username, password)
|
||
|
||
--print("Логинюсь в пастебине... ")
|
||
local result, response = pcall(internet.request,
|
||
"http://pastebin.com/api/api_login.php",
|
||
"api_dev_key="..devKey..
|
||
"&api_user_name="..username..
|
||
"&api_user_password="..password
|
||
)
|
||
|
||
if result then
|
||
--print("Запрос на пастебин пришел!")
|
||
local info = ""
|
||
for chunk in response do
|
||
info = info .. chunk
|
||
end
|
||
if string.match(info, "^Bad API request, ") then
|
||
--io.write(info)
|
||
return false, info
|
||
--ЕСЛИ ВСЕ ЗАЕБОК
|
||
else
|
||
--print("Получен юзеркей!")
|
||
userKey = info
|
||
--print("Вот так оно выглядит: "..info)
|
||
return true
|
||
end
|
||
else
|
||
--print("Хуйня произошла. Либо URL неверный, либо пастебин недоступен.\n")
|
||
--io.stderr:write(response)
|
||
return false, response
|
||
end
|
||
|
||
end
|
||
|
||
--ЗАГРУЗКА СПИСКА ФАЙЛОВ
|
||
local function getFileListFromPastebin(countOfFilesToShow)
|
||
local result, response = pcall(internet.request,
|
||
"http://pastebin.com/api/api_post.php",
|
||
"api_dev_key="..devKey..
|
||
"&api_user_key="..userKey..
|
||
"&api_results_limit="..countOfFilesToShow..
|
||
"&api_option=list"
|
||
)
|
||
|
||
--КИНУТЬ ОШИБКУ, ЕСЛИ ЧЕТ НЕ ТАК
|
||
if not result then io.stderr:write( response ) end
|
||
|
||
--ПРОЧИТАТЬ ОТВЕТ С СЕРВЕРА ПАСТЕБИНА
|
||
local info = ""
|
||
for chunk in response do
|
||
info = info .. chunk
|
||
end
|
||
|
||
--РАСПАСИТЬ ХМЛ
|
||
local x = xml.collect(info)
|
||
|
||
--ЗАХУЯРИТЬ МАССИВ С ПАСТАМИ
|
||
MyMassivWithPastes = {}
|
||
for pasteID = 1, #x do
|
||
MyMassivWithPastes[pasteID]={}
|
||
MyMassivWithPastes[pasteID]["paste_key"] = x[pasteID][1][1]
|
||
MyMassivWithPastes[pasteID]["paste_date"] = x[pasteID][2][1]
|
||
MyMassivWithPastes[pasteID]["paste_title"] = x[pasteID][3][1]
|
||
MyMassivWithPastes[pasteID]["paste_size"] = x[pasteID][4][1]
|
||
MyMassivWithPastes[pasteID]["paste_expire_date"] = x[pasteID][5][1]
|
||
MyMassivWithPastes[pasteID]["paste_private"] = x[pasteID][6][1]
|
||
MyMassivWithPastes[pasteID]["paste_format_long"] = x[pasteID][7][1]
|
||
MyMassivWithPastes[pasteID]["paste_format_short"] = x[pasteID][8][1]
|
||
MyMassivWithPastes[pasteID]["paste_url"] = x[pasteID][9][1]
|
||
MyMassivWithPastes[pasteID]["paste_hits"] = x[pasteID][10][1]
|
||
end
|
||
end
|
||
|
||
local xPos, yPos
|
||
local widthTitle
|
||
local widthOthers
|
||
local xDate
|
||
local xDownloads
|
||
local xSyntax
|
||
local maxPastesCountToShow = math.floor((ySize - 7) / 2)
|
||
|
||
local function displayPaste(i, background, foreground)
|
||
|
||
ecs.square(1, yPos, xSize - 2, 1, background)
|
||
|
||
--Нарисовать цветной кружочек
|
||
local color = ecs.colors.green
|
||
if tonumber(MyMassivWithPastes[i]["paste_private"]) == 1 then
|
||
color = ecs.colors.red
|
||
end
|
||
ecs.colorText(xPos, yPos, color, "●")
|
||
color = nil
|
||
|
||
--Нарисовать имя пасты
|
||
ecs.colorText(xPos + 2, yPos, foreground, ecs.stringLimit("end", MyMassivWithPastes[i]["paste_title"], widthTitle - 3))
|
||
|
||
--Нарисовать дату пасты
|
||
local date = unixtime.convert(tonumber(MyMassivWithPastes[i]["paste_date"]))
|
||
gpu.set(xDate, yPos, date)
|
||
|
||
--Нарисовать Хитсы
|
||
gpu.set(xDownloads, yPos, MyMassivWithPastes[i]["paste_hits"])
|
||
|
||
--Нарисовать формат
|
||
gpu.set(xSyntax, yPos, MyMassivWithPastes[i]["paste_format_long"])
|
||
end
|
||
|
||
--Нарисовать пасты
|
||
local function displayPastes(from)
|
||
|
||
obj["Pastes"] = nil
|
||
|
||
--Стартовые коорды
|
||
xPos, yPos = 2, 6
|
||
|
||
--Размеры таблицы
|
||
widthTitle = math.floor((xSize - 2) / 2) + 5
|
||
widthOthers = math.floor((xSize - 2 - widthTitle) / 3)
|
||
xDate = xPos + widthTitle
|
||
xDownloads = xDate + widthOthers
|
||
xSyntax = xDownloads + widthOthers
|
||
|
||
--Цвет фона на нужный сразу
|
||
gpu.setBackground(0xffffff)
|
||
|
||
--Стартовая инфотаблица - ну, имя там, размер, дата и прочее
|
||
ecs.colorText(xPos, yPos, 0x990000, "Имя")
|
||
gpu.set(xDate, yPos, "Дата")
|
||
gpu.set(xDownloads, yPos, "Скачиваний")
|
||
gpu.set(xSyntax, yPos, "Синтакс")
|
||
|
||
ecs.colorText(1, yPos + 1, 0x990000, string.rep("─", xSize - 2))
|
||
yPos = yPos + 2
|
||
|
||
ecs.srollBar(xSize - 1, 6, 2, ySize - 5, #MyMassivWithPastes, from, 0xcccccc, ecs.colors.blue)
|
||
|
||
--Все пасты рисуем
|
||
for i = from, (from + maxPastesCountToShow - 1) do
|
||
|
||
if MyMassivWithPastes[i] then
|
||
displayPaste(i, 0xffffff, 0x000000)
|
||
|
||
newObj("Pastes", i, 1, yPos, xSize - 2, yPos)
|
||
|
||
--Нарисовать разделитель
|
||
if i ~= (from + maxPastesCountToShow - 1) then ecs.colorText(1, yPos + 1, 0xcccccc, string.rep("─", xSize - 2)) end
|
||
else
|
||
ecs.square(1, yPos, xSize - 2, 2, 0xffffff)
|
||
end
|
||
|
||
yPos = yPos + 2
|
||
end
|
||
end
|
||
|
||
local function getRandomCifri(length)
|
||
local cifri = ""
|
||
for i = 1, length do
|
||
cifri = cifri .. tostring(math.random(0, 1))
|
||
end
|
||
return cifri
|
||
end
|
||
|
||
local function drawTopBar()
|
||
|
||
--Полосочки
|
||
ecs.square(1, 1, xSize, 1, tabColor1)
|
||
|
||
gpu.setBackground(tabColor2)
|
||
gpu.setForeground( tabColor1 )
|
||
gpu.fill(1, 2, xSize, 3, "░")
|
||
|
||
ecs.square(1, 5, xSize, 1, tabColor1)
|
||
|
||
--Листочек
|
||
local sheetWidth = 6
|
||
gpu.setForeground(0x000000)
|
||
gpu.setBackground(0xffffff)
|
||
|
||
gpu.set(2, 2, getRandomCifri(sheetWidth))
|
||
gpu.set(3, 3, getRandomCifri(sheetWidth))
|
||
gpu.set(4, 4, getRandomCifri(sheetWidth))
|
||
|
||
--Надписи всякие
|
||
ecs.colorTextWithBack(2, 1, tabColor2, tabColor1, "#1 paste tool since 2002")
|
||
ecs.colorTextWithBack(11, 3, tabTextColor, tabColor2, "PASTEBIN")
|
||
local name = "⛨Загрузить новый файл"; newObj("TopButtons", name, ecs.drawAdaptiveButton(1, 5, 1, 0, name, tabColor1, tabTextColor))
|
||
|
||
local xPos = xSize - 23
|
||
if username then
|
||
name = "Разлогиниться"; newObj("TopButtons", name, ecs.drawAdaptiveButton(xPos, 5, 1, 0, name, tabColor1, tabTextColor)); xPos = xPos + unicode.len(name) + 3
|
||
name = "Выход"; newObj("TopButtons", name, ecs.drawAdaptiveButton(xPos, 5, 1, 0, name, tabColor1, tabTextColor)); xPos = xPos + unicode.len(name) + 3
|
||
|
||
--Никнейм
|
||
ecs.colorTextWithBack(xSize - 1 - unicode.len(username), 3, tabTextColor, tabColor2, username)
|
||
end
|
||
end
|
||
|
||
local function clear()
|
||
ecs.square(1, 6, xSize, ySize, 0xffffff)
|
||
end
|
||
|
||
local function inputPassword()
|
||
--local massiv = ecs.input("auto", "auto", 20, "Войти в Pastebin", {"input", "Логин", ""}, {"input", "Пароль", ""})
|
||
|
||
local data = ecs.universalWindow("auto", "auto", 24, tabColor1, true, {"EmptyLine"}, {"CenterText", 0xffffff, "Авторизация"}, {"EmptyLine"}, {"Input", 0xffffff, 0xccccff, "Логин"}, {"Input", 0xffffff, 0xccccff, "Пароль", "●"}, {"EmptyLine"}, {"Button", {tabColor2, 0xffffff, "Войти в аккаунт"}, {0x006dbf, 0xffffff, "Отмена"}})
|
||
|
||
if data[3] == "Отмена" then return false end
|
||
|
||
username = data[1] or ""
|
||
password = data[2] or ""
|
||
clear()
|
||
|
||
return true
|
||
end
|
||
|
||
local function analyseConfig()
|
||
if fs.exists(pathToConfig) then
|
||
local massiv = table.fromFile(pathToConfig)
|
||
username = massiv.username
|
||
password = massiv.password
|
||
massiv = nil
|
||
else
|
||
fs.makeDirectory(fs.path(pathToConfig))
|
||
local success = inputPassword()
|
||
if not success then return false end
|
||
table.toFile(pathToConfig, {username = username, password = password})
|
||
end
|
||
|
||
return true
|
||
end
|
||
|
||
local function waitForSuccessLogin()
|
||
while true do
|
||
|
||
local success = analyseConfig()
|
||
if not success then return false end
|
||
ecs.info("auto", "auto", " ", "Захожу в аккаунт...")
|
||
local success, reason = loginToAccount(username, password)
|
||
|
||
if success then
|
||
break
|
||
else
|
||
if string.match(reason, "^Bad API request, ") then
|
||
reason = string.sub(reason, 18, -1)
|
||
end
|
||
|
||
if reason == "invalid login" then fs.remove(pathToConfig); ecs.error("Неверное сочетание логин/пароль!"); clear() end
|
||
end
|
||
|
||
end
|
||
|
||
return true
|
||
end
|
||
|
||
local function drawAll()
|
||
ecs.clearScreen(0xffffff)
|
||
drawTopBar()
|
||
end
|
||
|
||
local function viewPaste(i)
|
||
local id = MyMassivWithPastes[i]["paste_key"]
|
||
local tmp = "System/Pastebin/tempfile.lua"
|
||
ecs.info("auto", "auto", " ", "Загружаю файл...")
|
||
os.sleep(0.3)
|
||
get(id, tmp)
|
||
|
||
local file = io.open(tmp, "r")
|
||
local lines = {}
|
||
for line in file:lines() do
|
||
table.insert(lines, line)
|
||
end
|
||
file:close()
|
||
|
||
ecs.clearScreen(0xffffff)
|
||
|
||
local from = 1
|
||
|
||
local back = 0xbbbbbb
|
||
|
||
ecs.square(1, 1, xSize, 1, back)
|
||
gpu.setForeground(0xffffff)
|
||
ecs.centerText("x", 1, "Просмотр "..id)
|
||
ecs.colorTextWithBack(xSize, 1, 0x000000, back, "X")
|
||
|
||
--ecs.error("#lines = ".. #lines)
|
||
|
||
ecs.textField(1, 2, xSize, ySize - 1, lines, from, 0xffffff, 0x262626, 0xdddddd, ecs.colors.blue)
|
||
|
||
fs.remove(tmp)
|
||
|
||
while true do
|
||
local e = {event.pull()}
|
||
if e[1] == "scroll" then
|
||
if e[5] == 1 then
|
||
if from > 1 then from = from - 1; ecs.textField(1, 2, xSize, ySize - 1, lines, from, 0xffffff, 0x262626, 0xdddddd, ecs.colors.blue) end
|
||
else
|
||
if from < #lines then from = from + 1; ecs.textField(1, 2, xSize, ySize - 1, lines, from, 0xffffff, 0x262626, 0xdddddd, ecs.colors.blue) end
|
||
end
|
||
elseif e[1] == "touch" then
|
||
if e[3] == (xSize) and e[4] == 1 then
|
||
ecs.colorTextWithBack(xSize, 1, 0xffffff, back, "X")
|
||
os.sleep(0.3)
|
||
return
|
||
end
|
||
end
|
||
end
|
||
end
|
||
|
||
local function launch(i)
|
||
local tmp = "System/Pastebin/tempfile.lua"
|
||
ecs.info("auto", "auto", " ", "Загружаю файл...")
|
||
get(MyMassivWithPastes[i]["paste_key"], tmp)
|
||
|
||
ecs.prepareToExit()
|
||
local s, r = shell.execute(tmp)
|
||
if not s then
|
||
ecs.displayCompileMessage(1, r, true, false)
|
||
else
|
||
ecs.prepareToExit()
|
||
print("Программа выполнена успешно. Нажмите любую клавишу, чтобы продолжить.")
|
||
ecs.waitForTouchOrClick()
|
||
end
|
||
|
||
|
||
|
||
fs.remove(tmp)
|
||
end
|
||
|
||
--ЗАГРУЗИТЬ ФАЙЛ НА ПАСТЕБИН
|
||
local function upload(path, title)
|
||
ecs.info("auto", "auto", " ", "Загружаю \""..fs.name(path).."\"...")
|
||
local file = io.open(path, "r")
|
||
local sText = file:read("*a")
|
||
file:close()
|
||
|
||
local result, response = pcall(internet.request,
|
||
"http://pastebin.com/api/api_post.php",
|
||
"api_option=paste&"..
|
||
"api_dev_key="..devKey.."&"..
|
||
"api_user_key="..userKey.."&"..
|
||
"api_paste_private=0&"..
|
||
"api_paste_format=lua&"..
|
||
"api_paste_name="..encode(title).."&"..
|
||
"api_paste_code="..encode(sText)
|
||
)
|
||
|
||
if result then
|
||
--ecs.error(response)
|
||
else
|
||
ecs.error("Отсутствует соединение с Pastebin.com")
|
||
return false
|
||
end
|
||
end
|
||
|
||
|
||
--------------------------------------------------------------------------------------------------------------------------
|
||
|
||
local pasteLoadLimit = 50
|
||
local args = {...}
|
||
|
||
drawAll()
|
||
if not waitForSuccessLogin() then ecs.prepareToExit(); return true end
|
||
drawTopBar()
|
||
|
||
if #args > 1 then
|
||
if args[1] == "upload" or args[1] == "load" then
|
||
if fs.exists(args[2]) and not fs.isDirectory(args[2]) then
|
||
upload(args[2], fs.name(args[2]))
|
||
os.sleep(5) -- Ждем, пока 100% прогрузится апи пастебина
|
||
else
|
||
ecs.error("Файл не существует или является директорией.")
|
||
return
|
||
end
|
||
end
|
||
end
|
||
|
||
ecs.info("auto", "auto", " ", "Получаю список файлов...")
|
||
getFileListFromPastebin(pasteLoadLimit)
|
||
|
||
displayPastes(drawPastesFrom)
|
||
|
||
while true do
|
||
local e = {event.pull()}
|
||
if e[1] == "scroll" then
|
||
if e[5] == 1 then
|
||
if drawPastesFrom > 1 then drawPastesFrom = drawPastesFrom - 1; displayPastes(drawPastesFrom) end
|
||
else
|
||
if drawPastesFrom < pasteLoadLimit then drawPastesFrom = drawPastesFrom + 1; displayPastes(drawPastesFrom) end
|
||
end
|
||
elseif e[1] == "touch" then
|
||
for key, val in pairs(obj["Pastes"]) do
|
||
if ecs.clickedAtArea(e[3], e[4], obj["Pastes"][key][1], obj["Pastes"][key][2], obj["Pastes"][key][3], obj["Pastes"][key][4] ) then
|
||
--ecs.error("key = "..key)
|
||
yPos = obj["Pastes"][key][2]
|
||
displayPaste(key, ecs.colors.blue, 0xffffff)
|
||
|
||
if e[5] == 1 then
|
||
local action = context.menu(e[3], e[4], {"Просмотр"}, "-", {"Запустить"}, {"Сохранить как"}, "-",{"Удалить"})
|
||
|
||
if action == "Сохранить как" then
|
||
local data = ecs.universalWindow("auto", "auto", 36, tabColor1, true, {"EmptyLine"}, {"CenterText", 0xffffff, "Сохранить как"}, {"EmptyLine"}, {"Input", 0xffffff, 0xccccff, "Имя"}, {"EmptyLine"}, {"Button", {0xffffff, 0xccccff, "OK"}} )
|
||
local path = data[1]
|
||
if path ~= nil or path ~= "" or path ~= " " then
|
||
fs.makeDirectory(fs.path(path))
|
||
local action2 = ecs.askForReplaceFile(path)
|
||
ecs.info("auto", "auto", " ", "Загружаю файл...")
|
||
if action2 == nil or action2 == "replace" then
|
||
fs.remove(path)
|
||
get(MyMassivWithPastes[key]["paste_key"], path)
|
||
ecs.select("auto", "auto", " ", {{"Загрузка завершена."}}, {{"Заебись!"}})
|
||
elseif action2 == "keepBoth" then
|
||
get(MyMassivWithPastes[key]["paste_key"], fs.path(path).."(copy)"..fs.name(path))
|
||
end
|
||
drawAll()
|
||
displayPastes(drawPastesFrom)
|
||
else
|
||
ecs.error("Сохранение не удалось: не указан путь.")
|
||
end
|
||
elseif action == "Удалить" then
|
||
ecs.info("auto", "auto", " ", "Удаляю файл...")
|
||
delete(MyMassivWithPastes[key]["paste_key"])
|
||
os.sleep(5)
|
||
ecs.info("auto", "auto", " ", "Перезагружаю список файлов...")
|
||
getFileListFromPastebin(pasteLoadLimit)
|
||
drawAll()
|
||
displayPastes(drawPastesFrom)
|
||
elseif action == "Просмотр" then
|
||
viewPaste(key)
|
||
drawAll()
|
||
displayPastes(drawPastesFrom)
|
||
elseif action == "Запустить" then
|
||
launch(key)
|
||
drawAll()
|
||
displayPastes(drawPastesFrom)
|
||
end
|
||
|
||
displayPaste(key, 0xffffff, 0x000000)
|
||
else
|
||
--os.sleep(0.3)
|
||
viewPaste(key)
|
||
drawAll()
|
||
displayPastes(drawPastesFrom)
|
||
end
|
||
|
||
break
|
||
end
|
||
end
|
||
|
||
for key, val in pairs(obj["TopButtons"]) do
|
||
if ecs.clickedAtArea(e[3], e[4], obj["TopButtons"][key][1], obj["TopButtons"][key][2], obj["TopButtons"][key][3], obj["TopButtons"][key][4] ) then
|
||
ecs.drawAdaptiveButton(obj["TopButtons"][key][1], obj["TopButtons"][key][2], 1, 0, key, tabColor2, tabTextColor)
|
||
|
||
os.sleep(0.3)
|
||
|
||
if key == "Разлогиниться" then
|
||
fs.remove("System/Pastebin/Login.cfg")
|
||
drawAll()
|
||
if not waitForSuccessLogin() then
|
||
ecs.prepareToExit()
|
||
return true
|
||
end
|
||
drawTopBar()
|
||
ecs.info("auto", "auto", " ", "Получаю список файлов...")
|
||
getFileListFromPastebin(pasteLoadLimit)
|
||
drawAll()
|
||
displayPastes(drawPastesFrom)
|
||
elseif key == "⛨Загрузить новый файл" then
|
||
local data = ecs.universalWindow("auto", "auto", 36, tabColor1, true, {"EmptyLine"}, {"CenterText", 0xffffff, "Загрузить на Pastebin"}, {"EmptyLine"}, {"Input", 0xffffff, 0xccccff, "Путь к файлу"}, {"Input", 0xffffff, 0xccccff, "Имя на Pastebin"}, {"EmptyLine"}, {"Button", {tabColor2, 0xffffff, "OK"}})
|
||
if fs.exists(data[1]) then
|
||
if not fs.isDirectory(data[1]) then
|
||
upload(data[1], data[2] or "Untitled")
|
||
os.sleep(5)
|
||
ecs.info("auto", "auto", " ", "Перезагружаю список файлов...")
|
||
|
||
getFileListFromPastebin(pasteLoadLimit)
|
||
drawAll()
|
||
drawPastesFrom = 1
|
||
displayPastes(drawPastesFrom)
|
||
else
|
||
ecs.error("Нельзя загружать папки.")
|
||
end
|
||
else
|
||
ecs.error("Файл \""..fs.name(data[1]).."\" не существует.")
|
||
end
|
||
elseif key == "Выход" then
|
||
ecs.prepareToExit()
|
||
return true
|
||
end
|
||
|
||
drawTopBar()
|
||
|
||
break
|
||
end
|
||
end
|
||
end
|
||
end
|
||
|
||
|
||
|
||
|
||
|
||
|
||
--------------------------------------------------------------------------------------------------------------------------
|