From 4a089ecd85d91404291af0b0762ab465ff6acb33 Mon Sep 17 00:00:00 2001 From: xAnavrins Date: Fri, 5 Jul 2019 02:14:28 -0400 Subject: [PATCH] Added icons to diskusage --- sys/apps/system/diskusage.lua | 222 +++++++++++++++++----------------- 1 file changed, 112 insertions(+), 110 deletions(-) diff --git a/sys/apps/system/diskusage.lua b/sys/apps/system/diskusage.lua index 3cec732..c07c485 100644 --- a/sys/apps/system/diskusage.lua +++ b/sys/apps/system/diskusage.lua @@ -8,146 +8,148 @@ local os = _G.os local peripheral = _G.peripheral local NftImages = { - blank = '\30\56\31\55\153\153\153\153\153\153\153\153\10\30\55\31\56\153\153\153\153\153\153\153\153\10\30\56\31\55\153\153\153\153\153\153\153\153\10\30\55\31\56\153\153\153\153\153\153\153\153\10\30\56\31\55\153\153\153\153\153\153\153\153', - drive = '', - rom = '', - hdd = '', + blank = '\30\56\31\55\153\153\153\153\153\153\153\153\10\30\55\31\56\153\153\153\153\153\153\153\153\10\30\56\31\55\153\153\153\153\153\153\153\153\10\30\55\31\56\153\153\153\153\153\153\153\153\10\30\56\31\55\153\153\153\153\153\153\153\153', + disk = '\30\32\31\32\32\30\98\31\98\128\30\56\31\56\128\128\30\102\149\30\98\149\31\57\139\10\30\32\31\32\32\30\98\31\98\128\128\128\128\128\128\10\30\32\31\32\32\30\98\31\98\128\30\48\31\55\95\95\95\95\30\98\31\98\128\10\30\32\31\32\32\30\98\31\98\128\30\48\31\55\95\95\95\95\30\98\31\98\128', + rom = '\30\57\31\57\128\31\56\144\144\144\144\144\31\57\128\10\30\56\31\57\157\30\55\31\55\128\128\128\128\128\30\57\31\56\145\10\30\57\31\56\136\30\55\31\55\128\30\55\31\48\82\79\77\30\55\128\30\57\31\56\132\10\30\56\31\57\157\30\55\31\55\128\128\128\128\128\30\57\31\56\145\10\30\57\31\57\128\31\56\129\129\129\129\129\31\57\128', + hdd = '\30\32\31\32\32\30\55\31\55\128\30\48\135\131\139\30\55\128\10\30\32\31\32\32\30\48\31\55\149\31\48\128\30\55\131\30\48\128\30\55\149\10\30\32\31\32\32\30\55\31\48\130\30\48\31\55\144\30\56\31\48\133\30\55\159\129\10\30\32\31\32\32\30\56\31\55\149\129\142\159\30\55\128\10\30\32\31\32\32\30\57\31\55\143\143\143\143\143', } local tab = UI.Tab { - tabTitle = 'Disks Usage', - description = 'Visualise HDD and disks usage', + tabTitle = 'Disks Usage', + description = 'Visualise HDD and disks usage', - drives = UI.ScrollingGrid { - x = 2, y = 1, - ex = '47%', ey = 8, - columns = { - { heading = 'Drive', key = 'name' }, - { heading = 'Side' ,key = 'side', textColor = colors.yellow } - }, - sortColumn = 'name', - }, - infos = UI.Grid { - x = '52%', y = 2, - ex = -2, ey = 8, - disableHeader = true, - unfocusedBackgroundSelectedColor = colors.black, - inactive = true, - backgroundSelectedColor = colors.black, - columns = { - { key = 'name' }, - { key = 'value', align = 'right', textColor = colors.yellow }, - } - }, + drives = UI.ScrollingGrid { + x = 2, y = 1, + ex = '47%', ey = 8, + columns = { + { heading = 'Drive', key = 'name' }, + { heading = 'Side' ,key = 'side', textColor = colors.yellow } + }, + sortColumn = 'name', + }, + infos = UI.Grid { + x = '52%', y = 2, + ex = -2, ey = 8, + disableHeader = true, + unfocusedBackgroundSelectedColor = colors.black, + inactive = true, + backgroundSelectedColor = colors.black, + columns = { + { key = 'name' }, + { key = 'value', align = 'right', textColor = colors.yellow }, + } + }, - progress = UI.ProgressBar { - x = 11, y = 10, - ex = -2, - }, - percentage = UI.Text { - x = 11, y = 11, - ex = -2, - align = 'center', - }, - icon = UI.NftImage { - x = 2, y = 10, - image = NFT.parse(NftImages.blank) - }, + progress = UI.ProgressBar { + x = 11, y = 10, + ex = -2, + }, + percentage = UI.Text { + x = 11, y = 11, + ex = -2, + align = 'center', + }, + icon = UI.NftImage { + x = 2, y = 10, + image = NFT.parse(NftImages.blank) + }, } local function getDrives() - local unique = { ['hdd'] = true, ['virt'] = true } - local exclude = {} - local drives = { - {name = 'hdd', side = ''}, - } - for _, drive in pairs(fs.list('/')) do - local side = fs.getDrive(drive) - if side and not unique[side] then - unique[side] = true - exclude[drive] = true - table.insert(drives, {name=drive, side=side}) - end - end - return drives, exclude + local unique = { ['hdd'] = true, ['virt'] = true } + local exclude = {} + local drives = { + {name = 'hdd', side = ''}, + } + for _, drive in pairs(fs.list('/')) do + local side = fs.getDrive(drive) + if side and not unique[side] then + unique[side] = true + exclude[drive] = true + table.insert(drives, {name=drive, side=side}) + end + end + return drives, exclude end local function getDriveInfo(p) - local files, dirs, total = 0, 0, 0 + local files, dirs, total = 0, 0, 0 - if p == "hdd" then p = "/" end - p = fs.combine(p, '') - local drive = fs.getDrive(p) + if p == "hdd" then p = "/" end + p = fs.combine(p, '') + local drive = fs.getDrive(p) - local function recurse(path) - if fs.getDrive(path) == drive then - if fs.isDir(path) then - if path ~= p then - total = total + 500 - dirs = dirs + 1 - end - for _, v in pairs(fs.list(path)) do - recurse(fs.combine(path, v)) - end - else - local sz = fs.getSize(path) + local function recurse(path) + if fs.getDrive(path) == drive then + if fs.isDir(path) then + if path ~= p then + total = total + 500 + dirs = dirs + 1 + end + for _, v in pairs(fs.list(path)) do + recurse(fs.combine(path, v)) + end + else + local sz = fs.getSize(path) + files = files + 1 + if drive == 'rom' then + total = total + sz + else + total = total + math.max(500, sz) + end + end + end + end - files = files + 1 - if drive == 'rom' then - total = total + sz - else - total = total + math.max(500, sz) - end - end - end - end + recurse(p) - recurse(p) - - local info = {} - table.insert(info, { name = 'Type', value = peripheral.getType(drive) or drive }) - table.insert(info, { name = 'Used', value = total }) - table.insert(info, { name = 'Total', value = total + fs.getFreeSpace(p) }) - table.insert(info, { name = 'Free', value = fs.getFreeSpace(p) }) - table.insert(info, { }) - table.insert(info, { name = 'Files', value = files }) - table.insert(info, { name = 'Dirs', value = dirs }) - return info, math.floor((total / (total + fs.getFreeSpace(p))) * 100) + local info = {} + table.insert(info, { name = 'Type', value = peripheral.getType(drive) or drive }) + table.insert(info, { name = 'Used', value = total }) + table.insert(info, { name = 'Total', value = total + fs.getFreeSpace(p) }) + table.insert(info, { name = 'Free', value = fs.getFreeSpace(p) }) + table.insert(info, { }) + table.insert(info, { name = 'Files', value = files }) + table.insert(info, { name = 'Dirs', value = dirs }) + return info, math.floor((total / (total + fs.getFreeSpace(p))) * 100) end function tab:updateInfo() - local selected = self.drives:getSelected() - local info, percent = getDriveInfo(selected and selected.name or self.drives.values[1].name) - self.infos:setValues(info) - self.progress.value = percent - self.percentage.value = ('%#3d%%'):format(percent) - self:draw() + local selected = self.drives:getSelected() + _syslog(selected) + local info, percent = getDriveInfo(selected and selected.name or self.drives.values[1].name) + self.infos:setValues(info) + self.progress.value = percent + self.percentage.value = ('%#3d%%'):format(percent) + self.icon.image = NFT.parse(NftImages[selected.name] or NftImages.blank) + self:draw() end function tab:updateDrives() - local drives, exclude = getDrives() - self.exclude = exclude - self.drives:setValues(drives) + local drives, exclude = getDrives() + self.exclude = exclude + self.drives:setValues(drives) end function tab:enable() - self:updateDrives() - self:updateInfo() - UI.Tab.enable(self) + self:updateDrives() + self:updateInfo() + UI.Tab.enable(self) end function tab:eventHandler(event) - if event.type == 'grid_focus_row' then - self:updateInfo() - end - return UI.Tab.eventHandler(self, event) + if event.type == 'grid_focus_row' then + self:updateInfo() + else return UI.Tab.eventHandler(self, event) + end + return true end Event.on({ 'disk', 'disk_eject' }, function() - os.sleep(1) - tab:updateDrives() - tab:updateInfo() - tab:sync() + os.sleep(1) + tab:updateDrives() + tab:updateInfo() + tab:sync() end) return tab