47 lines
1.4 KiB
Python
47 lines
1.4 KiB
Python
import string
|
|
from array import array
|
|
from datetime import timedelta
|
|
|
|
from Display import Display
|
|
from Utils import find_storage_usage
|
|
|
|
|
|
class SingleDisplay(Display):
|
|
SWITCH_INTERVAL: timedelta = timedelta(seconds=10)
|
|
drives: array
|
|
|
|
maxLabelWidth: int
|
|
currentTime: float
|
|
currentIndex: int
|
|
|
|
def __init__(self, drives):
|
|
self.drives = drives
|
|
self.maxLabelWidth = self.getMaxLabelWidth()
|
|
self.currentIndex = 0
|
|
self.currentTime = 0
|
|
|
|
def render(self, displayInterval: timedelta) -> string:
|
|
self.currentTime = self.currentTime + displayInterval.total_seconds()
|
|
if self.currentTime < self.SWITCH_INTERVAL.total_seconds():
|
|
return self.renderCurrentDrive()
|
|
|
|
self.currentTime = 0
|
|
self.currentIndex = (self.currentIndex + 1) % len(self.drives)
|
|
|
|
return self.renderCurrentDrive()
|
|
|
|
def renderCurrentDrive(self):
|
|
currentDrive = self.drives[self.currentIndex]
|
|
label = currentDrive['label']
|
|
path = currentDrive['path']
|
|
|
|
usage = find_storage_usage(path)
|
|
|
|
formatString = "{:>"+ self.maxLabelWidth.__str__() +"} {}"
|
|
return formatString.format(label, usage)
|
|
|
|
def getMaxLabelWidth(self):
|
|
maxLabelWidth = 0
|
|
for i, drive in enumerate(self.drives):
|
|
maxLabelWidth = max(maxLabelWidth, len(drive['label']))
|
|
return maxLabelWidth
|