Удаление иконок нажатием делита

Нажав делит, выеденные иконки отправятся в корзину

Нажав shift+делит, выделенные иконки удалятся безвозвратно, если пользователь подтвердит удаление
This commit is contained in:
Smok1e 2022-05-19 14:49:07 +03:00
parent 9d3823d6d4
commit 02b782476b
22 changed files with 111 additions and 19 deletions

View File

@ -469,6 +469,17 @@ function system.updateIconProperties()
computer.pushSignal("system", "updateFileList") computer.pushSignal("system", "updateFileList")
end end
local function getSelectedIcons (iconField)
local selectedIcons = {}
for i = 2, #iconField.children do
if iconField.children[i].selected then
table.insert(selectedIcons, iconField.children[i])
end
end
return selectedIcons
end
local function drawSelection(x, y, width, height, color, transparency) local function drawSelection(x, y, width, height, color, transparency)
screen.drawText(x, y, color, string.rep("", width), transparency) screen.drawText(x, y, color, string.rep("", width), transparency)
screen.drawText(x, y + height - 1, color, string.rep("", width), transparency) screen.drawText(x, y + height - 1, color, string.rep("", width), transparency)
@ -866,12 +877,7 @@ local function gridIconFieldIconEventHandler(workspace, object, e1, e2, e3, e4,
if e5 == 0 then if e5 == 0 then
iconDeselectAndSelect(object) iconDeselectAndSelect(object)
else else
local selectedIcons = {} local selectedIcons = getSelectedIcons (object.parent)
for i = 2, #object.parent.children do
if object.parent.children[i].selected then
table.insert(selectedIcons, object.parent.children[i])
end
end
-- Right click on multiple selected icons -- Right click on multiple selected icons
if not object.selected then if not object.selected then
@ -1505,10 +1511,9 @@ local function gridIconFieldBackgroundObjectEventHandler(workspace, object, e1,
if e4 == 28 then if e4 == 28 then
-- Если при нажатии энтера была выделенна ровно одна иконка, она попытается открыться -- Если при нажатии энтера была выделенна ровно одна иконка, она попытается открыться
local selectedIcon local selectedIcon
for i = 2, #iconField.children do for i = 2, #iconField.children do
if object.parent.children[i].selected then if iconField.children[i].selected then
if not selectedIcon then if selectedIcon ~= nil then
-- Больше одной иконки выбрано -- Больше одной иконки выбрано
return return
end end
@ -1522,6 +1527,79 @@ local function gridIconFieldBackgroundObjectEventHandler(workspace, object, e1,
workspace:draw () workspace:draw ()
end end
end end
-- Delete
if e4 == 211 then
-- При нажатии делита, выделенные иконки кидаются в корзину
selectedIcons = getSelectedIcons (iconField)
if #selectedIcons < 1 then
return
end
-- Если шифт нажат, удаляем перманентно, спросив пидора о его уверенности
if keyboard.isKeyDown (42) then
local container = GUI.addBackgroundContainer (workspace, true, true, localization.areYouSure .. " " .. tostring (#selectedIcons) .. " " .. localization.filesWillBeRemovedPermanently)
local buttonYes = container.layout:addChild (GUI.button (1, 1, 30, 1, 0xE1E1E1, 0x2D2D2D, 0xA5A5A5, 0x2D2D2D, localization.yes))
local buttonNo = container.layout:addChild (GUI.button (1, 3, 30, 1, 0xE1E1E1, 0x2D2D2D, 0xA5A5A5, 0x2D2D2D, localization.no ))
buttonYes.onTouch = function ()
for i = 1, #selectedIcons do
result, reason = filesystem.remove (selectedIcons[i].path)
if not result then
GUI.alert (localization.fileDeletingFailure .. "'" .. selectedIcons[i].path .. "': " .. reason)
end
-- Отвыделяем иконку, шобы она случайно не открылась
selectedIcons[i].selected = false
end
computer.pushSignal ("system", "updateFileList")
container:remove ()
workspace:draw ()
end
buttonNo.onTouch = function ()
container:remove ()
workspace:draw ()
end
container.panel.onTouch = buttonNo.onTouch
container.eventHandler = function (workspace, object, e1, e2, e3, e4, e5, ...)
if e1 == "key_down" then
if e4 == 28 then
buttonYes.onTouch ()
elseif e4 == 15 then
buttonNo.onTouch ()
end
end
end
workspace:draw ()
else
-- Шифт никто не нажал, кидаем в корзинку
for i = 1, #selectedIcons do
if filesystem.path (selectedIcons[i].path) == paths.user.trash then
filesystem.remove (selectedIcons[i].path)
else
local newName = paths.user.trash .. selectedIcons[i].name
local clearName = filesystem.hideExtension(selectedIcons[i].name)
local repeats = 1
while filesystem.exists(newName) do
newName, repeats = paths.user.trash .. clearName .. string.rep("-copy", repeats) .. (selectedIcons[i].extension or ""), repeats + 1
end
filesystem.rename(selectedIcons[i].path, newName)
end
selectedIcons[i].selected = false
end
computer.pushSignal("system", "updateFileList")
end
end
end end
end end
@ -1637,14 +1715,7 @@ function system.listIconField(x, y, width, height, path, ...)
if e1 == "touch" then if e1 == "touch" then
if e5 == 1 then if e5 == 1 then
local selectedIcons = {} iconOnRightClick(getSelectedIcons (cell.parent), icon, e1, e2, e3, e4, e5, ...)
for i = 1, #cell.parent.children - 1, columnCount do
if cell.parent.children[i].selected then
table.insert(selectedIcons, cell.parent.children[i])
end
end
iconOnRightClick(selectedIcons, icon, e1, e2, e3, e4, e5, ...)
end end
elseif e1 == "double_touch" then elseif e1 == "double_touch" then
iconOnDoubleClick(icon) iconOnDoubleClick(icon)

View File

@ -56,6 +56,7 @@
unknown = "غير معروف", unknown = "غير معروف",
calculatingSize = "الحساب ... ", calculatingSize = "الحساب ... ",
filesWillBeRemovedPermanently = "file(s) will be removed permanently", filesWillBeRemovedPermanently = "file(s) will be removed permanently",
fileDeletingFailure = "Failed to delete file",
properties = "الخصائص", properties = "الخصائص",
newFolderFromChosen = "مجلد جديد من اختيار", newFolderFromChosen = "مجلد جديد من اختيار",
create = "جديد", create = "جديد",

View File

@ -57,6 +57,7 @@
unknown = "Невядома", unknown = "Невядома",
calculatingSize = "ідзе падлік…", calculatingSize = "ідзе падлік…",
filesWillBeRemovedPermanently = "file(s) will be removed permanently", filesWillBeRemovedPermanently = "file(s) will be removed permanently",
fileDeletingFailure = "Failed to delete file",
properties = "Уласцівасці", properties = "Уласцівасці",
newFolderFromChosen = "Новая тэчка з вылучанага", newFolderFromChosen = "Новая тэчка з вылучанага",

View File

@ -55,6 +55,7 @@
unknown = "অজানা", unknown = "অজানা",
calculatingSize = "গণনা করা হচ্ছে ...", calculatingSize = "গণনা করা হচ্ছে ...",
filesWillBeRemovedPermanently = "file(s) will be removed permanently", filesWillBeRemovedPermanently = "file(s) will be removed permanently",
fileDeletingFailure = "Failed to delete file",
properties = "বৈশিষ্ট্য", properties = "বৈশিষ্ট্য",
newFolderFromChosen = "নির্বাচিত", newFolderFromChosen = "নির্বাচিত",
create = "নতুন", create = "নতুন",

View File

@ -63,6 +63,7 @@
unknown = "Неизвестно", unknown = "Неизвестно",
calculatingSize = "изчисляване…", calculatingSize = "изчисляване…",
filesWillBeRemovedPermanently = "file(s) will be removed permanently", filesWillBeRemovedPermanently = "file(s) will be removed permanently",
fileDeletingFailure = "Failed to delete file",
properties = "Свойства", properties = "Свойства",
newFolderFromChosen = "Нова папка от избраните", newFolderFromChosen = "Нова папка от избраните",

View File

@ -57,6 +57,7 @@
unknown = "未知", unknown = "未知",
calculatingSize = "计算中...", calculatingSize = "计算中...",
filesWillBeRemovedPermanently = "file(s) will be removed permanently", filesWillBeRemovedPermanently = "file(s) will be removed permanently",
fileDeletingFailure = "Failed to delete file",
properties = "属性", properties = "属性",
newFolderFromChosen = "在所选文件夹里新建一个文件夹", newFolderFromChosen = "在所选文件夹里新建一个文件夹",

View File

@ -57,6 +57,7 @@
unknown = "Onbekent", unknown = "Onbekent",
calculatingSize = "Berekenen…", calculatingSize = "Berekenen…",
filesWillBeRemovedPermanently = "file(s) will be removed permanently", filesWillBeRemovedPermanently = "file(s) will be removed permanently",
fileDeletingFailure = "Failed to delete file",
properties = "Instellingen", properties = "Instellingen",
newFolderFromChosen = "Nieuwe map van gekozen", newFolderFromChosen = "Nieuwe map van gekozen",

View File

@ -57,6 +57,7 @@
unknown = "Unknown", unknown = "Unknown",
calculatingSize = "calculating…", calculatingSize = "calculating…",
filesWillBeRemovedPermanently = "file(s) will be removed permanently", filesWillBeRemovedPermanently = "file(s) will be removed permanently",
fileDeletingFailure = "Failed to delete file",
properties = "Properties", properties = "Properties",
newFolderFromChosen = "New folder from chosen", newFolderFromChosen = "New folder from chosen",

View File

@ -57,6 +57,7 @@
unknown = "Tuntematon", unknown = "Tuntematon",
calculatingSize = "lasketaan…", calculatingSize = "lasketaan…",
filesWillBeRemovedPermanently = "file(s) will be removed permanently", filesWillBeRemovedPermanently = "file(s) will be removed permanently",
fileDeletingFailure = "Failed to delete file",
properties = "Ominaisuudet", properties = "Ominaisuudet",
newFolderFromChosen = "Uusi kansio valinnasta", newFolderFromChosen = "Uusi kansio valinnasta",

View File

@ -57,6 +57,7 @@
unknown = "Inconnu", unknown = "Inconnu",
calculatingSize = "calcule en cours ...", calculatingSize = "calcule en cours ...",
filesWillBeRemovedPermanently = "file(s) will be removed permanently", filesWillBeRemovedPermanently = "file(s) will be removed permanently",
fileDeletingFailure = "Failed to delete file",
properties = "Propriétés", properties = "Propriétés",
newFolderFromChosen = "Nouveau dossier choisi", newFolderFromChosen = "Nouveau dossier choisi",

View File

@ -57,6 +57,7 @@
unknown = "Unbekannt", unknown = "Unbekannt",
calculatingSize = "Berechne Größe...", calculatingSize = "Berechne Größe...",
filesWillBeRemovedPermanently = "file(s) will be removed permanently", filesWillBeRemovedPermanently = "file(s) will be removed permanently",
fileDeletingFailure = "Failed to delete file",
properties = "Eigenschaften", properties = "Eigenschaften",
newFolderFromChosen = "Neuen Ordner wählen.", newFolderFromChosen = "Neuen Ordner wählen.",

View File

@ -56,6 +56,7 @@
unknown = "अज्ञात", unknown = "अज्ञात",
calculatingSize = "गणना…", calculatingSize = "गणना…",
filesWillBeRemovedPermanently = "file(s) will be removed permanently", filesWillBeRemovedPermanently = "file(s) will be removed permanently",
fileDeletingFailure = "Failed to delete file",
properties = "गुण", properties = "गुण",
newFolderFromChosen = "से नया फ़ोल्डर", newFolderFromChosen = "से नया फ़ोल्डर",
create = "नया", create = "नया",

View File

@ -57,6 +57,7 @@
unknown = "Sconosciuto", unknown = "Sconosciuto",
calculatingSize = "calcolo…", calculatingSize = "calcolo…",
filesWillBeRemovedPermanently = "file(s) will be removed permanently", filesWillBeRemovedPermanently = "file(s) will be removed permanently",
fileDeletingFailure = "Failed to delete file",
properties = "Proprieta", properties = "Proprieta",
newFolderFromChosen = "Nuova cartella selezionata", newFolderFromChosen = "Nuova cartella selezionata",

View File

@ -57,6 +57,7 @@
unknown = "不明", unknown = "不明",
calculatingSize = "計算中…", calculatingSize = "計算中…",
filesWillBeRemovedPermanently = "file(s) will be removed permanently", filesWillBeRemovedPermanently = "file(s) will be removed permanently",
fileDeletingFailure = "Failed to delete file",
properties = "プロパティ", properties = "プロパティ",
newFolderFromChosen = "選択したフォルダから新しいフォルダを作成", newFolderFromChosen = "選択したフォルダから新しいフォルダを作成",

View File

@ -57,6 +57,7 @@
unknown = "알 수 없음", unknown = "알 수 없음",
calculatingSize = "계산중…", calculatingSize = "계산중…",
filesWillBeRemovedPermanently = "file(s) will be removed permanently", filesWillBeRemovedPermanently = "file(s) will be removed permanently",
fileDeletingFailure = "Failed to delete file",
properties = "속성", properties = "속성",
newFolderFromChosen = "선택된 파일이 포함된 새 폴더 만들기", newFolderFromChosen = "선택된 파일이 포함된 새 폴더 만들기",

View File

@ -56,6 +56,7 @@
unknown = "Unknown", unknown = "Unknown",
calculatingSize = "calculating…", calculatingSize = "calculating…",
filesWillBeRemovedPermanently = "file(s) will be removed permanently", filesWillBeRemovedPermanently = "file(s) will be removed permanently",
fileDeletingFailure = "Failed to delete file",
properties = "propertiez", properties = "propertiez",
newFolderFromChosen = "nu foldr frum chosen", newFolderFromChosen = "nu foldr frum chosen",
create = "nu", create = "nu",

View File

@ -57,6 +57,7 @@
unknown = "Nieznany", unknown = "Nieznany",
calculatingSize = "obliczanie…", calculatingSize = "obliczanie…",
filesWillBeRemovedPermanently = "file(s) will be removed permanently", filesWillBeRemovedPermanently = "file(s) will be removed permanently",
fileDeletingFailure = "Failed to delete file",
properties = "Ustawienia", properties = "Ustawienia",
newFolderFromChosen = "Wybierz Nowy Folder z", newFolderFromChosen = "Wybierz Nowy Folder z",

View File

@ -56,6 +56,7 @@
unknown = "Desconhecido", unknown = "Desconhecido",
calculatingSize = "calculando…", calculatingSize = "calculando…",
filesWillBeRemovedPermanently = "file(s) will be removed permanently", filesWillBeRemovedPermanently = "file(s) will be removed permanently",
fileDeletingFailure = "Failed to delete file",
properties = "Propriedades", properties = "Propriedades",
newFolderFromChosen = "Nova pasta escolhida", newFolderFromChosen = "Nova pasta escolhida",
create = "Novo", create = "Novo",

View File

@ -57,6 +57,7 @@
unknown = "Неизвестно", unknown = "Неизвестно",
calculatingSize = "идет подсчет…", calculatingSize = "идет подсчет…",
filesWillBeRemovedPermanently = "файл(ов) будет удалено безвозвратно", filesWillBeRemovedPermanently = "файл(ов) будет удалено безвозвратно",
fileDeletingFailure = "Ошибка при удалении файла",
properties = "Свойства", properties = "Свойства",
newFolderFromChosen = "Новая папка из выбранного", newFolderFromChosen = "Новая папка из выбранного",

View File

@ -57,6 +57,7 @@
unknown = "Neznáme", unknown = "Neznáme",
calculatingSize = "počítanie…", calculatingSize = "počítanie…",
filesWillBeRemovedPermanently = "file(s) will be removed permanently", filesWillBeRemovedPermanently = "file(s) will be removed permanently",
fileDeletingFailure = "Failed to delete file",
properties = "Vlastnosti", properties = "Vlastnosti",
newFolderFromChosen = "Nový priečinok z vybraného", newFolderFromChosen = "Nový priečinok z vybraného",

View File

@ -57,6 +57,7 @@
unknown = "Desconocido", unknown = "Desconocido",
calculatingSize = "calculando…", calculatingSize = "calculando…",
filesWillBeRemovedPermanently = "file(s) will be removed permanently", filesWillBeRemovedPermanently = "file(s) will be removed permanently",
fileDeletingFailure = "Failed to delete file",
properties = "Propiedades", properties = "Propiedades",
newFolderFromChosen = "Nueva carpeta desde Directorio", newFolderFromChosen = "Nueva carpeta desde Directorio",

View File

@ -57,6 +57,7 @@
unknown = "Невідомо", unknown = "Невідомо",
calculatingSize = "йде підрахунок…", calculatingSize = "йде підрахунок…",
filesWillBeRemovedPermanently = "file(s) will be removed permanently", filesWillBeRemovedPermanently = "file(s) will be removed permanently",
fileDeletingFailure = "Failed to delete file",
properties = "Властивості", properties = "Властивості",
newFolderFromChosen = "Нова папка з обраного", newFolderFromChosen = "Нова папка з обраного",