mirror of
https://github.com/IgorTimofeev/MineOS.git
synced 2025-12-20 02:59:20 +01:00
Удаление иконок нажатием делита
Нажав делит, выеденные иконки отправятся в корзину Нажав shift+делит, выделенные иконки удалятся безвозвратно, если пользователь подтвердит удаление
This commit is contained in:
parent
9d3823d6d4
commit
02b782476b
@ -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)
|
||||||
|
|||||||
@ -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 = "جديد",
|
||||||
|
|||||||
@ -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 = "Новая тэчка з вылучанага",
|
||||||
|
|||||||
@ -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 = "নতুন",
|
||||||
|
|||||||
@ -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 = "Нова папка от избраните",
|
||||||
|
|||||||
@ -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 = "在所选文件夹里新建一个文件夹",
|
||||||
|
|||||||
@ -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",
|
||||||
|
|||||||
@ -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",
|
||||||
|
|||||||
@ -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",
|
||||||
|
|||||||
@ -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",
|
||||||
|
|||||||
@ -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.",
|
||||||
|
|||||||
@ -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 = "नया",
|
||||||
|
|||||||
@ -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",
|
||||||
|
|||||||
@ -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 = "選択したフォルダから新しいフォルダを作成",
|
||||||
|
|||||||
@ -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 = "선택된 파일이 포함된 새 폴더 만들기",
|
||||||
|
|||||||
@ -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",
|
||||||
|
|||||||
@ -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",
|
||||||
|
|||||||
@ -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",
|
||||||
|
|||||||
@ -57,6 +57,7 @@
|
|||||||
unknown = "Неизвестно",
|
unknown = "Неизвестно",
|
||||||
calculatingSize = "идет подсчет…",
|
calculatingSize = "идет подсчет…",
|
||||||
filesWillBeRemovedPermanently = "файл(ов) будет удалено безвозвратно",
|
filesWillBeRemovedPermanently = "файл(ов) будет удалено безвозвратно",
|
||||||
|
fileDeletingFailure = "Ошибка при удалении файла",
|
||||||
|
|
||||||
properties = "Свойства",
|
properties = "Свойства",
|
||||||
newFolderFromChosen = "Новая папка из выбранного",
|
newFolderFromChosen = "Новая папка из выбранного",
|
||||||
|
|||||||
@ -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",
|
||||||
|
|||||||
@ -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",
|
||||||
|
|||||||
@ -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 = "Нова папка з обраного",
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user