diff --git a/Applications/Finder/Main.lua b/Applications/Finder/Main.lua index f89a1807..f96e8019 100644 --- a/Applications/Finder/Main.lua +++ b/Applications/Finder/Main.lua @@ -50,12 +50,16 @@ FTPButton.colors.disabled = prevButton.colors.disabled FTPButton.disabled = not MineOSNetwork.internetProxy local sidebarContainer = window:addChild(GUI.container(1, 4, 20, 1)) -sidebarContainer.panel = sidebarContainer:addChild(GUI.panel(1, 1, sidebarContainer.width, 1, 0xFFFFFF, MineOSCore.properties.transparencyEnabled and 0.3)) +local sidebarPanel = sidebarContainer:addChild(GUI.object(1, 1, sidebarContainer.width, 1, 0xFFFFFF)) +sidebarPanel.draw = function(object) + buffer.drawRectangle(object.x, object.y, object.width, object.height, 0xFFFFFF, 0x0, " ", MineOSCore.properties.transparencyEnabled and 0.3) +end + sidebarContainer.itemsContainer = sidebarContainer:addChild(GUI.container(1, 1, sidebarContainer.width, 1)) local searchInput = window:addChild(GUI.input(1, 2, 36, 1, 0xFFFFFF, 0x4B4B4B, 0xA5A5A5, 0xFFFFFF, 0x2D2D2D, nil, MineOSCore.localization.search, true)) -local iconField = window:addChild(MineOSInterface.iconField(1, 4, 1, 1, 2, 2, 0x3C3C3C, 0x3C3C3C, MineOSPaths.desktop)) +local iconField = window:addChild(MineOSInterface.iconField(1, 4, 1, 1, 2, 2, 0x3C3C3C, 0x969696, MineOSPaths.desktop)) local scrollBar = window:addChild(GUI.scrollBar(1, 4, 1, 1, 0xC3C3C3, 0x4B4B4B, iconFieldYOffset, 1, 1, 1, 1, true)) scrollBar.eventHandler = nil @@ -433,8 +437,8 @@ end local function calculateSizes(width, height) sidebarContainer.height = height - 3 - sidebarContainer.panel.width = sidebarContainer.width - sidebarContainer.panel.height = sidebarContainer.height + sidebarPanel.width = sidebarContainer.width + sidebarPanel.height = sidebarContainer.height sidebarContainer.itemsContainer.width = sidebarContainer.width sidebarContainer.itemsContainer.height = sidebarContainer.height diff --git a/OS.lua b/OS.lua index e80c09e3..67f6e87c 100755 --- a/OS.lua +++ b/OS.lua @@ -375,7 +375,7 @@ local function createOSWidgets() icon.onRightClick = function(icon, e1, e2, e3, e4, ...) local indexOf = icon:indexOf() - local menu = MineOSInterface.addContextMenu(MineOSInterface.mainContainer, e3, e4) + local menu = GUI.addContextMenu(MineOSInterface.mainContainer, e3, e4) menu.onMenuClosed = function() icon.selected = false @@ -456,7 +456,7 @@ local function createOSWidgets() end icon.onRightClick = function(icon, e1, e2, e3, e4) - local menu = MineOSInterface.addContextMenu(MineOSInterface.mainContainer, e3, e4) + local menu = GUI.addContextMenu(MineOSInterface.mainContainer, e3, e4) menu.onMenuClosed = function() icon.selected = false diff --git a/lib/MineOSCore.lua b/lib/MineOSCore.lua index cb81fac6..ae436110 100755 --- a/lib/MineOSCore.lua +++ b/lib/MineOSCore.lua @@ -306,9 +306,4 @@ MineOSCore.setPackageUnloading(MineOSCore.properties.packageUnloading) ----------------------------------------------------------------------------------------------------------------------------------- -return MineOSCore - - - - - +return MineOSCore \ No newline at end of file diff --git a/lib/MineOSInterface.lua b/lib/MineOSInterface.lua index df157979..dd2c3695 100755 --- a/lib/MineOSInterface.lua +++ b/lib/MineOSInterface.lua @@ -81,35 +81,37 @@ function MineOSInterface.cacheIconSource(name, path) return MineOSInterface.iconsCache[name] end -local function iconDrawNameLine(x, y, line, icon) - local lineLength = unicode.len(line) - local x = math.floor(x - lineLength / 2) - if icon.selected then - buffer.drawRectangle(x, y, lineLength, 1, icon.colors.selection, 0x0, " ", icon.colors.selectionTransparency) - end - buffer.drawText(x, y, icon.colors.text, line) -end - local function iconDraw(icon) + local selectionTransparency = MineOSCore.properties.transparencyEnabled and 0.6 local text = MineOSCore.properties.showExtension and icon.name or icon.nameWithoutExtension local xCenter, yText = icon.x + MineOSInterface.iconHalfWidth, icon.y + MineOSInterface.iconImageHeight + 1 + local function iconDrawNameLine(y, line) + local lineLength = unicode.len(line) + local x = math.floor(xCenter - lineLength / 2) + + if icon.selected then + buffer.drawRectangle(x, y, lineLength, 1, icon.colors.selection, 0x0, " ", selectionTransparency) + end + buffer.drawText(x, y, icon.colors.text, line) + end + local charIndex = 1 for lineIndex = 1, MineOSInterface.iconTextHeight do if lineIndex < MineOSInterface.iconTextHeight then - iconDrawNameLine(xCenter, yText, unicode.sub(text, charIndex, charIndex + icon.width - 1), icon) + iconDrawNameLine(yText, unicode.sub(text, charIndex, charIndex + icon.width - 1)) charIndex, yText = charIndex + icon.width, yText + 1 else - iconDrawNameLine(xCenter, yText, string.limit(unicode.sub(text, charIndex, -1), icon.width, "center"), icon) + iconDrawNameLine(yText, string.limit(unicode.sub(text, charIndex, -1), icon.width, "center")) end end local xImage = icon.x + MineOSInterface.iconImageHorizontalOffset if icon.selected then local xSelection = xImage - 1 - buffer.drawText(xSelection, icon.y - 1, icon.colors.selection, string.rep("▄", MineOSInterface.iconImageWidth + 2), icon.colors.selectionTransparency) - buffer.drawText(xSelection, icon.y + MineOSInterface.iconImageHeight, icon.colors.selection, string.rep("▀", MineOSInterface.iconImageWidth + 2), icon.colors.selectionTransparency) - buffer.drawRectangle(xSelection, icon.y, MineOSInterface.iconImageWidth + 2, MineOSInterface.iconImageHeight, icon.colors.selection, 0x0, " ", icon.colors.selectionTransparency) + buffer.drawText(xSelection, icon.y - 1, icon.colors.selection, string.rep("▄", MineOSInterface.iconImageWidth + 2), selectionTransparency) + buffer.drawText(xSelection, icon.y + MineOSInterface.iconImageHeight, icon.colors.selection, string.rep("▀", MineOSInterface.iconImageWidth + 2), selectionTransparency) + buffer.drawRectangle(xSelection, icon.y, MineOSInterface.iconImageWidth + 2, MineOSInterface.iconImageHeight, icon.colors.selection, 0x0, " ", selectionTransparency) end if icon.image then @@ -278,8 +280,7 @@ function MineOSInterface.icon(x, y, path, textColor, selectionColor) icon.colors = { text = textColor, - selection = selectionColor, - selectionTransparency = 0.6 + selection = selectionColor } icon.path = path @@ -480,7 +481,7 @@ local function iconFieldBackgroundObjectEventHandler(mainContainer, object, e1, mainContainer:drawOnScreen() else - local menu = MineOSInterface.addContextMenu(MineOSInterface.mainContainer, e3, e4) + local menu = GUI.addContextMenu(MineOSInterface.mainContainer, e3, e4) local subMenu = menu:addSubMenu(MineOSCore.localization.create) @@ -592,7 +593,11 @@ local function iconFieldBackgroundObjectDraw(object) y1, y2 = y2, y1 end - buffer.drawRectangle(x1, y1, x2 - x1 + 1, y2 - y1 + 1, object.parent.colors.selection, 0x0, " ", 0.6) + if MineOSCore.properties.transparencyEnabled then + buffer.drawRectangle(x1, y1, x2 - x1 + 1, y2 - y1 + 1, object.parent.colors.selection, 0x0, " ", 0.6) + else + buffer.drawFrame(x1, y1, x2 - x1 + 1, y2 - y1 + 1, object.parent.colors.selection) + end for i = 1, #object.parent.iconsContainer.children do local xCenter, yCenter = object.parent.iconsContainer.children[i].x + MineOSCore.properties.iconWidth / 2, object.parent.iconsContainer.children[i].y + MineOSCore.properties.iconHeight / 2 @@ -675,9 +680,9 @@ end ---------------------------------------------------------------------------------------------------------------- -function MineOSInterface.addContextMenu(...) - local menu = GUI.addContextMenu(...) - +local overrideGUIDropDownMenu = GUI.dropDownMenu +GUI.dropDownMenu = function(...) + local menu = overrideGUIDropDownMenu(...) menu.colors.transparency.background = MineOSCore.properties.transparencyEnabled and GUI.CONTEXT_MENU_BACKGROUND_TRANSPARENCY menu.colors.transparency.shadow = MineOSCore.properties.transparencyEnabled and GUI.CONTEXT_MENU_SHADOW_TRANSPARENCY @@ -705,7 +710,7 @@ function MineOSInterface.iconRightClick(icon, e1, e2, e3, e4) local selectedIcons = icon.parent.parent:getSelectedIcons() - local menu = MineOSInterface.addContextMenu(MineOSInterface.mainContainer, e3, e4) + local menu = GUI.addContextMenu(MineOSInterface.mainContainer, e3, e4) menu.onMenuClosed = function() icon.parent.parent:deselectAll()