mirror of
https://github.com/IgorTimofeev/MineOS.git
synced 2025-12-20 02:59:20 +01:00
Screenshots
This commit is contained in:
parent
26dec6fa41
commit
6c5e7afb7e
127
Libraries/English.lang
Normal file
127
Libraries/English.lang
Normal file
@ -0,0 +1,127 @@
|
|||||||
|
{
|
||||||
|
downloading = "Downloading in progress",
|
||||||
|
CPUArchitecture = "CPU architecture",
|
||||||
|
RAMControl = "RAM control",
|
||||||
|
packageUnloading = "Automatic unloading",
|
||||||
|
networkFTPNewConnection = "FTP-connection",
|
||||||
|
networkFTPConnections = "FTP-connections",
|
||||||
|
networkFTPAddress = "Server address",
|
||||||
|
networkFTPPort = "Server port",
|
||||||
|
networkFTPUser = "User",
|
||||||
|
networkFTPPassword = "Password",
|
||||||
|
updatingFileList = "Updating file list...",
|
||||||
|
network = "Network",
|
||||||
|
networkTimeout = "Remote computer is not responding",
|
||||||
|
networkAccessDenied = "Access to the filesystem of the remote computer is denied. Contact it's owner to get appropriate privileges",
|
||||||
|
networkAllowReadAndWrite = "Filesystem access",
|
||||||
|
networkModemNotAvailable = "Attach modem to use network functions",
|
||||||
|
networkState = "Enable network mode",
|
||||||
|
networkComputers = "Network PCs options",
|
||||||
|
networkName = "Name of this PC",
|
||||||
|
networkSearchRadius = "Searching radius",
|
||||||
|
openWith = "Open with",
|
||||||
|
select = "Choose application…",
|
||||||
|
keepInDock = "Keep in dock",
|
||||||
|
closeAllWindows = "Close all windows",
|
||||||
|
closeWindow = "Close",
|
||||||
|
newWindow = "New window",
|
||||||
|
launch = "Launch",
|
||||||
|
launchWithArguments = "Launch with arguments",
|
||||||
|
dontShowAnymore = "Don't show again",
|
||||||
|
newName = "New name",
|
||||||
|
folderName = "Folder name",
|
||||||
|
fileName = "File name",
|
||||||
|
applicationName = "Application name",
|
||||||
|
file = "File",
|
||||||
|
notExists = "not exists",
|
||||||
|
alreadyExists = "already exists",
|
||||||
|
inDirectory = "in folder",
|
||||||
|
needReplace = "Replace it?",
|
||||||
|
yes = "Yes",
|
||||||
|
no = "No",
|
||||||
|
cancel = "Cancel",
|
||||||
|
open = "Open",
|
||||||
|
save = "Save",
|
||||||
|
applyToAll = "Apply to all",
|
||||||
|
toDirectory = "to folder",
|
||||||
|
copying = "Copying",
|
||||||
|
faylaBlyad = "file",
|
||||||
|
|
||||||
|
areYouSure = "Are you sure?",
|
||||||
|
emptyTrash = "Empty trash",
|
||||||
|
type = "Type",
|
||||||
|
size = "Size",
|
||||||
|
date = "Date",
|
||||||
|
name = "Name",
|
||||||
|
path = "Path",
|
||||||
|
folder = "Folder",
|
||||||
|
unknown = "Unknown",
|
||||||
|
calculatingSize = "calculating…",
|
||||||
|
filesWillBeRemovedPermanently = "file(s) will be removed permanently",
|
||||||
|
fileDeletingFailure = "Failed to delete file",
|
||||||
|
|
||||||
|
properties = "Properties",
|
||||||
|
newFolderFromChosen = "New folder from chosen",
|
||||||
|
create = "New",
|
||||||
|
newFolder = "Folder",
|
||||||
|
newFile = "File",
|
||||||
|
newFileFromURL = "File from URL",
|
||||||
|
newImage = "Image",
|
||||||
|
newApplication = "MineOS application",
|
||||||
|
paste = "Paste",
|
||||||
|
copy = "Copy",
|
||||||
|
cut = "Cut",
|
||||||
|
edit = "Edit",
|
||||||
|
editInPhotoshop = "Edit in Photoshop",
|
||||||
|
rename = "Rename",
|
||||||
|
editShortcut = "Edit shortcut",
|
||||||
|
createShortcut = "Create shortcut",
|
||||||
|
deleteWithSource = "Delete with source",
|
||||||
|
addToDock = "Add to Dock",
|
||||||
|
removeFromDock = "Remove from Dock",
|
||||||
|
moveRight = "Move right",
|
||||||
|
moveLeft = "Move left",
|
||||||
|
archive = "Add to archive",
|
||||||
|
delete = "Delete",
|
||||||
|
addToFavourites = "Add to favourites",
|
||||||
|
removeFromFavourites = "Remove from favourites",
|
||||||
|
setAsWallpaper = "Set as wallpaper",
|
||||||
|
showPackageContent = "Show package content",
|
||||||
|
showContainingFolder = "Show containing folder",
|
||||||
|
flashEEPROM = "Flash to EEPROM",
|
||||||
|
flashingEEPROM = "Flashing in progress. Don't turn off computer...",
|
||||||
|
print3D = "Print model",
|
||||||
|
|
||||||
|
sortBy = "Sort",
|
||||||
|
sortByType = "By type",
|
||||||
|
sortByName = "By name",
|
||||||
|
sortByDate = "By date",
|
||||||
|
|
||||||
|
aboutSystem = "About system",
|
||||||
|
updates = "Updates",
|
||||||
|
update = "Refresh",
|
||||||
|
shutdown = "Shutdown",
|
||||||
|
logout = "Logout",
|
||||||
|
reboot = "Reboot",
|
||||||
|
takeScreenshot = "Take screenshot",
|
||||||
|
|
||||||
|
shortcutIsCorrupted = "Shortcut is linked to non-existent file",
|
||||||
|
sortAutomatically = "Align to grid",
|
||||||
|
onDesktop = "On desktop",
|
||||||
|
inCurrentDirectory = "In current folder",
|
||||||
|
|
||||||
|
errorWhileRunningProgram = "Error while running ",
|
||||||
|
yourContacts = "Your contacts",
|
||||||
|
additionalInfo = "Additional information",
|
||||||
|
stackTraceback = "Stack traceback",
|
||||||
|
|
||||||
|
favourite = "Favourite",
|
||||||
|
search = "Search",
|
||||||
|
mounts = "Mounts",
|
||||||
|
|
||||||
|
uploadToPastebin = "Upload to Pastebin",
|
||||||
|
pasteName = "Paste name",
|
||||||
|
uploading = "Uploading in progress...",
|
||||||
|
uploadingSuccess = "Uploaded to ",
|
||||||
|
uploadingFailure = "Uploading failed: ",
|
||||||
|
}
|
||||||
127
Libraries/Russian.lang
Normal file
127
Libraries/Russian.lang
Normal file
@ -0,0 +1,127 @@
|
|||||||
|
{
|
||||||
|
downloading = "Идет загрузка файла",
|
||||||
|
CPUArchitecture = "Архитектура ЦП",
|
||||||
|
RAMControl = "Управление памятью",
|
||||||
|
packageUnloading = "Автоматическая выгрузка",
|
||||||
|
networkFTPNewConnection = "FTP-подключение",
|
||||||
|
networkFTPConnections = "FTP-подключения",
|
||||||
|
networkFTPAddress = "Адрес сервера",
|
||||||
|
networkFTPPort = "Порт сервера",
|
||||||
|
networkFTPUser = "Пользователь",
|
||||||
|
networkFTPPassword = "Пароль",
|
||||||
|
updatingFileList = "Обновление списка файлов...",
|
||||||
|
network = "Сеть",
|
||||||
|
networkTimeout = "Удаленный компьютер не ответил на запрос",
|
||||||
|
networkAccessDenied = "Доступ к файловой системе удаленного компьютера запрещен. Свяжитесь с его владельцем для предоставления соответствующих привилегий",
|
||||||
|
networkAllowReadAndWrite = "Доступ к файлам",
|
||||||
|
networkModemNotAvailable = "Подключите модем для использования сетевых функций",
|
||||||
|
networkState = "Включить сетевой режим",
|
||||||
|
networkComputers = "Параметры удаленных ПК",
|
||||||
|
networkName = "Имя данного ПК",
|
||||||
|
networkSearchRadius = "Радиус обнаружения",
|
||||||
|
openWith = "Открыть с помощью",
|
||||||
|
select = "Выбрать программу…",
|
||||||
|
keepInDock = "Оставить в Dock",
|
||||||
|
closeAllWindows = "Закрыть все окна",
|
||||||
|
closeWindow = "Закрыть",
|
||||||
|
newWindow = "Новое окно",
|
||||||
|
launch = "Запустить",
|
||||||
|
launchWithArguments = "Запустить с аргументами",
|
||||||
|
dontShowAnymore = "Больше не показывать",
|
||||||
|
newName = "Новое имя",
|
||||||
|
folderName = "Имя папки",
|
||||||
|
fileName = "Имя файла",
|
||||||
|
applicationName = "Имя приложения",
|
||||||
|
file = "Файл",
|
||||||
|
notExists = "не существует",
|
||||||
|
alreadyExists = "уже существует",
|
||||||
|
inDirectory = "в директории",
|
||||||
|
needReplace = "Заменить?",
|
||||||
|
yes = "Да",
|
||||||
|
no = "Нет",
|
||||||
|
cancel = "Отмена",
|
||||||
|
open = "Открыть",
|
||||||
|
save = "Сохранить",
|
||||||
|
applyToAll = "Применить ко всем",
|
||||||
|
toDirectory = "в директории",
|
||||||
|
copying = "Копирование",
|
||||||
|
faylaBlyad = "файла",
|
||||||
|
|
||||||
|
areYouSure = "Вы уверены?",
|
||||||
|
emptyTrash = "Очистить корзину",
|
||||||
|
type = "Тип",
|
||||||
|
size = "Размер",
|
||||||
|
date = "Дата",
|
||||||
|
name = "Имя",
|
||||||
|
path = "Путь",
|
||||||
|
folder = "Папка",
|
||||||
|
unknown = "Неизвестно",
|
||||||
|
calculatingSize = "идет подсчет…",
|
||||||
|
filesWillBeRemovedPermanently = "файл(ов) будет удалено безвозвратно",
|
||||||
|
fileDeletingFailure = "Ошибка при удалении файла",
|
||||||
|
|
||||||
|
properties = "Свойства",
|
||||||
|
newFolderFromChosen = "Новая папка из выбранного",
|
||||||
|
create = "Создать",
|
||||||
|
newFolder = "Папку",
|
||||||
|
newFile = "Файл",
|
||||||
|
newFileFromURL = "Файл по URL",
|
||||||
|
newImage = "Изображение",
|
||||||
|
newApplication = "Приложение MineOS",
|
||||||
|
paste = "Вставить",
|
||||||
|
copy = "Копировать",
|
||||||
|
cut = "Вырезать",
|
||||||
|
edit = "Редактировать",
|
||||||
|
editInPhotoshop = "Редактировать в Photoshop",
|
||||||
|
rename = "Переименовать",
|
||||||
|
editShortcut = "Редактировать ярлык",
|
||||||
|
createShortcut = "Создать ярлык",
|
||||||
|
deleteWithSource = "Удалить с источником",
|
||||||
|
addToDock = "Добавить в Dock",
|
||||||
|
removeFromDock = "Удалить из Dock",
|
||||||
|
moveRight = "Передвинуть правее",
|
||||||
|
moveLeft = "Передвинуть левее",
|
||||||
|
archive = "Добавить в архив",
|
||||||
|
delete = "Удалить",
|
||||||
|
addToFavourites = "Добавить в избранное",
|
||||||
|
removeFromFavourites = "Удалить из избранного",
|
||||||
|
setAsWallpaper = "Установить как обои",
|
||||||
|
showPackageContent = "Показать содержимое пакета",
|
||||||
|
showContainingFolder = "Открыть содержащую папку",
|
||||||
|
flashEEPROM = "Записать на EEPROM",
|
||||||
|
flashingEEPROM = "Идет запись на EEPROM. Не отключайте компьютер...",
|
||||||
|
print3D = "Распечатать модель",
|
||||||
|
|
||||||
|
sortBy = "Упорядочить",
|
||||||
|
sortByType = "По типу",
|
||||||
|
sortByName = "По имени",
|
||||||
|
sortByDate = "По дате",
|
||||||
|
|
||||||
|
aboutSystem = "О системе",
|
||||||
|
updates = "Обновления",
|
||||||
|
update = "Обновить",
|
||||||
|
shutdown = "Выключить",
|
||||||
|
logout = "Выйти",
|
||||||
|
reboot = "Перезагрузить",
|
||||||
|
takeScreenshot = "Сделать скриншот",
|
||||||
|
|
||||||
|
shortcutIsCorrupted = "Ярлык ссылается на несуществующий файл",
|
||||||
|
sortAutomatically = "Привязать к сетке",
|
||||||
|
onDesktop = "На рабочем столе",
|
||||||
|
inCurrentDirectory = "В текущей директории",
|
||||||
|
|
||||||
|
errorWhileRunningProgram = "Ошибка при выполнении ",
|
||||||
|
yourContacts = "Ваши контакты",
|
||||||
|
additionalInfo = "Дополнительная информация",
|
||||||
|
stackTraceback = "Стек ошибки",
|
||||||
|
|
||||||
|
favourite = "Избранное",
|
||||||
|
search = "Поиск",
|
||||||
|
mounts = "Устройства",
|
||||||
|
|
||||||
|
uploadToPastebin = "Загрузить на Pastebin",
|
||||||
|
pasteName = "Имя файла после загрузки",
|
||||||
|
uploading = "Идет загрузка файла...",
|
||||||
|
uploadingSuccess = "Загружено по ссылке ",
|
||||||
|
uploadingFailure = "Ошибка при загрузке: ",
|
||||||
|
}
|
||||||
@ -325,6 +325,133 @@ end
|
|||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
local function copyScreenToImage(x0, y0, width, height)
|
||||||
|
local screenWidth, screenHeight = screen.getResolution()
|
||||||
|
local img = {width, height}
|
||||||
|
|
||||||
|
local backgrounds, foregrounds, chars, i = screen.getCurrentFrameTables()
|
||||||
|
for y = y0, y0 + height - 1 do
|
||||||
|
for x = x0, x0 + width - 1 do
|
||||||
|
i = screen.getIndex(x, y)
|
||||||
|
|
||||||
|
table.insert(img, backgrounds[i])
|
||||||
|
table.insert(img, foregrounds[i])
|
||||||
|
table.insert(img, 0x0)
|
||||||
|
table.insert(img, chars[i])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return img
|
||||||
|
end
|
||||||
|
|
||||||
|
function system.takeScreenshot()
|
||||||
|
local selection = workspace:addChild(GUI.object(1, 1, workspace.width, workspace.height))
|
||||||
|
|
||||||
|
selection.updateSelection = function(selection, x1, y1)
|
||||||
|
local x0, y0 = selection.startX, selection.startY
|
||||||
|
|
||||||
|
if x0 > x1 then x0, x1 = x1, x0 end
|
||||||
|
if y0 > y1 then y0, y1 = y1, y0 end
|
||||||
|
|
||||||
|
selection.selX, selection.selY = x0, y0
|
||||||
|
selection.selWidth, selection.selHeight = x1 - x0 + 1, y1 - y0 + 1
|
||||||
|
end
|
||||||
|
|
||||||
|
selection.startX = math.floor(selection.width / 4)
|
||||||
|
selection.startY = math.floor(selection.height / 4)
|
||||||
|
selection:updateSelection(3 * selection.startX, 3 * selection.startY)
|
||||||
|
|
||||||
|
local screenFrameBackgrounds, screenFrameForegrounds, screenFrameChars = screen.getNewFrameTables()
|
||||||
|
local screenBufferWidth, screenBufferHeight = screen.getResolution()
|
||||||
|
|
||||||
|
local function drawBorder(x0, y0, width, height, char)
|
||||||
|
for x = x0, x0 + width - 1 do
|
||||||
|
for y = y0, y0 + height - 1 do
|
||||||
|
if x >= 1 and y >= 1 and x < screenBufferWidth and y < screenBufferHeight then
|
||||||
|
i = screen.getIndex(x, y)
|
||||||
|
screenFrameForegrounds[i], screenFrameChars[i] = 0xFFFFFF, char
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function drawTextCentered(x, y, text)
|
||||||
|
screen.drawText(math.floor(x - #text / 2), y, 0xFFFFFF, text)
|
||||||
|
end
|
||||||
|
|
||||||
|
local selectionOutsideTransparency = userSettings.interfaceTransparencyEnabled and 0.2 or nil
|
||||||
|
|
||||||
|
local function fill(x, y, width, height)
|
||||||
|
screen.drawRectangle(x, y, width, height, 0, 0, " ", selectionOutsideTransparency)
|
||||||
|
end
|
||||||
|
|
||||||
|
selection.draw = function(selection)
|
||||||
|
local
|
||||||
|
x, y, width, height, workspaceWidth, workspaceHeight =
|
||||||
|
selection.selX, selection.selY, selection.selWidth, selection.selHeight, selection.width, selection.height
|
||||||
|
|
||||||
|
-- Fill area outside selection
|
||||||
|
fill(1, 1, x - 1, workspaceHeight )
|
||||||
|
fill(x + width, 1, workspaceWidth - width - x + 1, workspaceHeight )
|
||||||
|
fill(x, 1, width, y - 1 )
|
||||||
|
fill(x, y + height, width, workspaceHeight - height - y + 2)
|
||||||
|
|
||||||
|
-- Border
|
||||||
|
drawBorder(x, y - 1, width, 1, '⣀')
|
||||||
|
drawBorder(x, y + height, width, 1, '⠉')
|
||||||
|
drawBorder(x - 1, y, 1, height, '⢸')
|
||||||
|
drawBorder(x + width, y, 1, height, '⡇')
|
||||||
|
|
||||||
|
drawTextCentered(x + width / 2, y + height + 1, ("%dx%d"):format(width, height))
|
||||||
|
end
|
||||||
|
|
||||||
|
selection.submit = function(selection)
|
||||||
|
selection:remove()
|
||||||
|
local img = copyScreenToImage(selection.selX, selection.selY, selection.selWidth, selection.selHeight)
|
||||||
|
|
||||||
|
local filesystemDialog = GUI.addFilesystemDialog(
|
||||||
|
workspace,
|
||||||
|
false,
|
||||||
|
50,
|
||||||
|
math.floor(workspace.height * 0.8),
|
||||||
|
localization.save,
|
||||||
|
localization.cancel,
|
||||||
|
localization.fileName,
|
||||||
|
"/"
|
||||||
|
)
|
||||||
|
|
||||||
|
filesystemDialog:setMode(GUI.IO_MODE_SAVE, GUI.IO_MODE_FILE)
|
||||||
|
filesystemDialog:addExtensionFilter(".pic")
|
||||||
|
filesystemDialog:expandPath(paths.user.desktop)
|
||||||
|
filesystemDialog.filesystemTree.selectedItem = paths.user.desktop
|
||||||
|
|
||||||
|
filesystemDialog.onSubmit = function(path)
|
||||||
|
image.save(path, img)
|
||||||
|
computer.pushSignal("system", "updateFileList")
|
||||||
|
end
|
||||||
|
|
||||||
|
filesystemDialog:show()
|
||||||
|
end
|
||||||
|
|
||||||
|
selection.eventHandler = function(workspace, selection, eventType, _, e1, e2)
|
||||||
|
if eventType == "touch" then
|
||||||
|
selection.startX, selection.startY = e1, e2
|
||||||
|
selection:updateSelection(e1, e2)
|
||||||
|
|
||||||
|
elseif eventType == "drag" then
|
||||||
|
selection:updateSelection(e1, e2)
|
||||||
|
|
||||||
|
elseif eventType == "key_down" then
|
||||||
|
if e2 == 28 then -- Enter
|
||||||
|
selection:submit()
|
||||||
|
elseif e2 == 15 then -- Tab
|
||||||
|
selection:remove()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
local function addMainDesktopMenuItem(menu)
|
local function addMainDesktopMenuItem(menu)
|
||||||
local item = menu:addContextMenuItem("💻", 0xF0F0F0)
|
local item = menu:addContextMenuItem("💻", 0xF0F0F0)
|
||||||
@ -380,6 +507,10 @@ local function addMainDesktopMenuItem(menu)
|
|||||||
system.execute(paths.system.applicationAppMarket, "updates")
|
system.execute(paths.system.applicationAppMarket, "updates")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
item:addItem("📸", localization.takeScreenshot).onTouch = function()
|
||||||
|
system.takeScreenshot()
|
||||||
|
end
|
||||||
|
|
||||||
item:addSeparator()
|
item:addSeparator()
|
||||||
|
|
||||||
local logoutItems = {"🥰", "😭", "😎", "🥺", "🤔", "🤓"}
|
local logoutItems = {"🥰", "😭", "😎", "🥺", "🤔", "🤓"}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user