This commit is contained in:
Igor Timofeev
2017-01-09 23:22:08 +03:00
parent e376997bc9
commit a05c2c0dbe
9 changed files with 117 additions and 92 deletions

BIN
.DS_Store vendored

Binary file not shown.

View File

@@ -8,7 +8,7 @@
about="IgorTimofeev/OpenComputers/master/MineOS/About/",
type="Script",
forceDownload=true,
version=3.39,
version=3.40,
},
{
name="MineOS/Pictures/Raspberry.pic",
@@ -69,14 +69,14 @@
url="IgorTimofeev/OpenComputers/master/MineOS/Languages/Russian.lang",
type="Script",
forceDownload=true,
version=1.16,
version=1.17,
},
{
name="MineOS/System/OS/Languages/English.lang",
url="IgorTimofeev/OpenComputers/master/MineOS/Languages/English.lang",
type="Script",
forceDownload=true,
version=1.16,
version=1.17,
},
----------------------------------------------------- Системные иконки --------------------------------------------------------------------------
@@ -240,6 +240,12 @@
type="Icon",
version=1.0,
},
{
name="MineOS/System/OS/Icons/Trash.pic",
url="IgorTimofeev/OpenComputers/master/MineOS/Icons/Trash.pic",
type="Icon",
version=1.0,
},
----------------------------------------------------- Библиотеки --------------------------------------------------------------------------
@@ -247,7 +253,7 @@
name="lib/MineOSCore.lua",
url="IgorTimofeev/OpenComputers/master/lib/MineOSCore.lua",
type="Library",
version=1.34,
version=1.35,
},
{
name="lib/advancedLua.lua",
@@ -697,9 +703,8 @@
about="IgorTimofeev/OpenComputers/master/Applications/RayWalk/About/",
type="Application",
icon="IgorTimofeev/OpenComputers/master/Applications/RayWalk/Icon.pic",
createShortcut="dock",
forceDownload=true,
version=1.57,
createShortcut="desktop",
version=1.58,
resources={
{
name="Localization/Russian.lang",

View File

@@ -198,9 +198,8 @@ do
language = data[1],
dockShortcuts = {
{path = "/MineOS/Applications/AppMarket.app"},
{path = "/MineOS/Applications/RayWalk.app"},
{path = "/MineOS/Applications/Photoshop.app"},
{path = "/MineOS/Applications/VK.app"},
{path = "/MineOS/Applications/Photoshop.app"},
}
}

BIN
MineOS/.DS_Store vendored

Binary file not shown.

BIN
MineOS/Icons/Trash.pic Executable file

Binary file not shown.

View File

@@ -4,6 +4,8 @@
screensaverDelay = "Delay",
screensaverDisabled = "Disabled",
areYouSure = "Are you sure?",
emptyTrash = "Empty trash"
type = "Type",
size = "Size",
date = "Date",

View File

@@ -4,6 +4,8 @@
screensaverDelay = "Задрежка",
screensaverDisabled = "Отключена",
areYouSure = "Вы уверены?",
emptyTrash = "Очистить корзину",
type = "Тип",
size = "Размер",
date = "Дата",

View File

@@ -323,6 +323,97 @@ local function updateDesktopCounters()
workspace.desktopCounters.width = x - 3
workspace.desktopCounters.localPosition.x = math.floor(workspace.width / 2 - workspace.desktopCounters.width / 2)
workspace.desktopCounters.localPosition.y = workspace.height - sizes.heightOfDock - 2
end
local function updateDock()
local function moveDockShortcut(iconIndex, direction)
_G.OSSettings.dockShortcuts[iconIndex], _G.OSSettings.dockShortcuts[iconIndex + direction] = swap(_G.OSSettings.dockShortcuts[iconIndex], _G.OSSettings.dockShortcuts[iconIndex + direction])
MineOSCore.saveOSSettings()
updateDock()
workspace:draw()
buffer.draw()
end
workspace.dockContainer.width = (#_G.OSSettings.dockShortcuts + 1) * (MineOSCore.iconWidth + sizes.xSpaceBetweenIcons) - sizes.xSpaceBetweenIcons
workspace.dockContainer.localPosition.x = math.floor(workspace.width / 2 - workspace.dockContainer.width / 2)
workspace.dockContainer.localPosition.y = workspace.height - sizes.heightOfDock + 1
workspace.dockContainer:deleteChildren()
local xPos = 1
for iconIndex = 1, #_G.OSSettings.dockShortcuts do
local iconObject = MineOSCore.createIconObject(xPos, 1, _G.OSSettings.dockShortcuts[iconIndex].path, 0x000000, _G.OSSettings.showFileFormat)
iconObject.onRightClick = function(iconObject, eventData)
local menu = GUI.contextMenu(eventData[3], eventData[4])
menu:addItem(MineOSCore.localization.contextMenuShowContainingFolder, true).onTouch = function()
ecs.error("ТУТА БУДЕТ ОТКРЫВАТОР ПУТИ ИКОНКИ ДОКА")
end
menu:addSeparator()
menu:addItem(MineOSCore.localization.contextMenuMoveRight, iconIndex >= #_G.OSSettings.dockShortcuts).onTouch = function()
moveDockShortcut(iconIndex, 1)
end
menu:addItem(MineOSCore.localization.contextMenuMoveLeft, iconIndex <= 1).onTouch = function()
moveDockShortcut(iconIndex, -1)
end
menu:addSeparator()
menu:addItem(MineOSCore.localization.contextMenuRemoveFromDock, _G.OSSettings.dockShortcuts[iconIndex].canNotBeDeleted or #_G.OSSettings.dockShortcuts < 2).onTouch = function()
table.remove(_G.OSSettings.dockShortcuts, iconIndex)
MineOSCore.saveOSSettings()
updateDock()
workspace:draw()
buffer.draw()
end
menu:show()
end
workspace.dockContainer:addChild(iconObject, GUI.objectTypes.container)
xPos = xPos + MineOSCore.iconWidth + sizes.xSpaceBetweenIcons
end
local iconObject = MineOSCore.createIconObject(xPos, 1, MineOSCore.paths.trash, 0x000000, _G.OSSettings.showFileFormat)
iconObject.iconImage.image = MineOSCore.icons.trash
iconObject.onRightClick = function(iconObject, eventData)
local menu = GUI.contextMenu(eventData[3], eventData[4])
menu:addItem(MineOSCore.localization.emptyTrash).onTouch = function()
local data = ecs.universalWindow("auto", "auto", 36, 0xeeeeee, true,
{"EmptyLine"},
{"CenterText", 0x000000, MineOSCore.localization.areYouSure},
{"EmptyLine"},
{"Button", {0xAAAAAA, 0xffffff, "OK"}, {0x888888, 0xffffff, MineOSCore.localization.cancel}}
)
if data[1] == "OK" then
for file in fs.list(MineOSCore.paths.trash) do
fs.remove(MineOSCore.paths.trash .. file)
end
end
end
menu:show()
end
workspace.dockContainer:addChild(iconObject, GUI.objectTypes.container)
end
-- Отрисовка дока
local function createDock()
workspace.dockContainer = workspace:addContainer(1, 1, workspace.width, sizes.heightOfDock)
-- Отрисовка дока
local oldDraw = workspace.dockContainer.draw
workspace.dockContainer.draw = function(dockContainer)
local currentDockTransparency, currentDockWidth, xPos, yPos = colors.dockBaseTransparency, dockContainer.width, dockContainer.x, dockContainer.y + 2
local color = _G.OSSettings.interfaceColor or colors.interface
for i = 1, dockContainer.height do
buffer.text(xPos, yPos, color, "", currentDockTransparency)
buffer.square(xPos + 1, yPos, currentDockWidth - 2, 1, color, 0xFFFFFF, " ", currentDockTransparency)
buffer.text(xPos + currentDockWidth - 1, yPos, color, "", currentDockTransparency)
currentDockTransparency, currentDockWidth, xPos, yPos = currentDockTransparency - colors.dockTransparencyAdder, currentDockWidth + 2, xPos - 1, yPos + 1
end
oldDraw(dockContainer)
end
end
local function changeResolution()
@@ -336,88 +427,12 @@ local function changeResolution()
workspace.iconField.localPosition.x = math.floor(workspace.width / 2 - (workspace.iconField.iconCount.width * (MineOSCore.iconWidth + sizes.xSpaceBetweenIcons) - sizes.xSpaceBetweenIcons) / 2)
workspace.iconField.localPosition.y = 3
workspace.desktopCounters.localPosition.y = workspace.height - sizes.heightOfDock - 2
workspace.dockContainer.width = (#_G.OSSettings.dockShortcuts * (MineOSCore.iconWidth + sizes.xSpaceBetweenIcons) - sizes.xSpaceBetweenIcons) + 2
workspace.dockContainer.localPosition.x = math.floor(buffer.screen.width / 2 - workspace.dockContainer.width / 2)
workspace.dockContainer.localPosition.y = workspace.height - sizes.heightOfDock + 1
workspace.menu.width = workspace.width
workspace.background.width, workspace.background.height = workspace.width, workspace.height
workspace.updateFileList(true)
end
-- Отрисовка дока
local function createDock()
workspace.dockContainer = workspace:addContainer(1, 1, workspace.width, sizes.heightOfDock)
workspace.dockContainer.updateFileList = function(dockContainer)
local function moveDockShortcut(iconIndex, direction)
_G.OSSettings.dockShortcuts[iconIndex], _G.OSSettings.dockShortcuts[iconIndex + direction] = swap(_G.OSSettings.dockShortcuts[iconIndex], _G.OSSettings.dockShortcuts[iconIndex + direction])
MineOSCore.saveOSSettings()
dockContainer:updateFileList()
workspace:draw()
buffer.draw()
end
-- Создание иконок дока
dockContainer:deleteChildren()
local xPos, yPos = 2, 1
for iconIndex = 1, #_G.OSSettings.dockShortcuts do
local iconObject = MineOSCore.createIconObject(xPos, yPos, _G.OSSettings.dockShortcuts[iconIndex].path, 0x000000, showFileFormat)
iconObject.onRightClick = function(iconObject, eventData)
local menu = GUI.contextMenu(eventData[3], eventData[4])
menu:addItem(MineOSCore.localization.contextMenuShowContainingFolder, true).onTouch = function()
MineOSCore.safeLaunch(MineOSCore.paths.applications .. "Finder.app/Finder.lua", "open", fs.path(_G.OSSettings.dockShortcuts[iconIndex].path))
dockContainer:updateFileList()
workspace:draw()
buffer.draw()
end
menu:addSeparator()
menu:addItem(MineOSCore.localization.contextMenuMoveRight, iconIndex >= #_G.OSSettings.dockShortcuts).onTouch = function()
moveDockShortcut(iconIndex, 1)
end
menu:addItem(MineOSCore.localization.contextMenuMoveLeft, iconIndex <= 1).onTouch = function()
moveDockShortcut(iconIndex, -1)
end
menu:addSeparator()
menu:addItem(MineOSCore.localization.contextMenuRemoveFromDock, _G.OSSettings.dockShortcuts[iconIndex].canNotBeDeleted or #_G.OSSettings.dockShortcuts < 2).onTouch = function()
table.remove(_G.OSSettings.dockShortcuts, iconIndex)
MineOSCore.saveOSSettings()
dockContainer:updateFileList()
workspace:draw()
buffer.draw()
end
menu:show()
end
dockContainer:addChild(iconObject, GUI.objectTypes.container)
xPos = xPos + MineOSCore.iconWidth + sizes.xSpaceBetweenIcons
end
end
-- Отрисовка дока
local oldDraw = workspace.dockContainer.draw
workspace.dockContainer.draw = function(dockContainer)
if #_G.OSSettings.dockShortcuts > 0 then
local currentDockTransparency, currentDockWidth, xPos, yPos = colors.dockBaseTransparency, dockContainer.width - 2, dockContainer.x, dockContainer.y + 2
for i = 1, sizes.heightOfDock do
buffer.text(xPos, yPos, _G.OSSettings.interfaceColor or colors.interface, "", currentDockTransparency)
buffer.square(xPos + 1, yPos, currentDockWidth, 1, _G.OSSettings.interfaceColor or colors.interface, 0xFFFFFF, " ", currentDockTransparency)
buffer.text(xPos + currentDockWidth + 1, yPos, _G.OSSettings.interfaceColor or colors.interface, "", currentDockTransparency)
currentDockTransparency, currentDockWidth, xPos, yPos = currentDockTransparency - colors.dockTransparencyAdder, currentDockWidth + 2, xPos - 1, yPos + 1
end
end
oldDraw(dockContainer)
end
return dockContainer
end
local function createWorkspace()
workspace = windows.fullScreen()
workspace.background = workspace:addPanel(1, 1, workspace.width, workspace.height, _G.OSSettings.backgroundColor or colors.background)
@@ -482,35 +497,36 @@ local function createWorkspace()
workspace.iconField.showFileFormat = not workspace.iconField.showFileFormat
_G.OSSettings.showFileFormat = workspace.iconField.showFileFormat
MineOSCore.saveOSSettings()
workspace:updateFileList()
workspace.updateFileList()
end
menu:addItem(workspace.iconField.showHiddenFiles and MineOSCore.localization.hideHiddenFiles or MineOSCore.localization.showHiddenFiles).onTouch = function()
workspace.iconField.showHiddenFiles = not workspace.iconField.showHiddenFiles
_G.OSSettings.showHiddenFiles = workspace.iconField.showHiddenFiles
MineOSCore.saveOSSettings()
workspace:updateFileList()
workspace.updateFileList()
end
menu:addItem(MineOSCore.showApplicationIcons and MineOSCore.localization.hideApplicationIcons or MineOSCore.localization.showApplicationIcons).onTouch = function()
MineOSCore.showApplicationIcons = not MineOSCore.showApplicationIcons
workspace.updateFileList()
end
menu:addSeparator()
menu:addItem(MineOSCore.localization.sortByName).onTouch = function()
_G.OSSettings.sortingMethod = "name"
MineOSCore.saveOSSettings()
workspace.iconField.sortingMethod = MineOSCore.sortingMethods.name
workspace:updateFileList()
workspace.updateFileList()
end
menu:addItem(MineOSCore.localization.sortByDate).onTouch = function()
_G.OSSettings.sortingMethod = "date"
MineOSCore.saveOSSettings()
workspace.iconField.sortingMethod = MineOSCore.sortingMethods.date
workspace:updateFileList()
workspace.updateFileList()
end
menu:addItem(MineOSCore.localization.sortByType).onTouch = function()
_G.OSSettings.sortingMethod = "type"
MineOSCore.saveOSSettings()
workspace.iconField.sortingMethod = MineOSCore.sortingMethods.type
workspace:updateFileList()
workspace.updateFileList()
end
menu:addSeparator()
menu:addItem(MineOSCore.localization.screensaver).onTouch = function()
@@ -602,7 +618,7 @@ local function createWorkspace()
workspace.updateFileList = function(forceRedraw)
workspace.iconField.fromFile = (currentDesktop - 1) * workspace.iconField.iconCount.total + 1
workspace.iconField:updateFileList()
workspace.dockContainer:updateFileList()
updateDock()
updateDesktopCounters()
workspace:draw()
buffer.draw(forceRedraw)

View File

@@ -206,6 +206,7 @@ function MineOSCore.loadStandartIcons()
MineOSCore.loadIcon("archive", MineOSCore.paths.icons .. "Archive.pic")
MineOSCore.loadIcon("model3D", MineOSCore.paths.icons .. "3DModel.pic")
MineOSCore.loadIcon("application", MineOSCore.paths.icons .. "Application.pic")
MineOSCore.loadIcon("trash", MineOSCore.paths.icons .. "Trash.pic")
end
function MineOSCore.init()
@@ -742,7 +743,7 @@ function MineOSCore.iconRightClick(icon, eventData)
_G.clipboardCut = true
computer.pushSignal("MineOSCore", "updateFileList")
elseif action == MineOSCore.localization.contextMenuDelete then
fs.remove(icon.path)
fs.rename(icon.path, MineOSCore.paths.trash .. fs.name(icon.path))
computer.pushSignal("MineOSCore", "updateFileList")
elseif action == MineOSCore.localization.contextMenuRename then
ecs.rename(icon.path)