Spaces:
Running
Running
import os | |
from screeninfo import get_monitors | |
from PIL import Image | |
from PIL import ImageTk | |
def get_screen_height(): | |
monitors = get_monitors() | |
if len(monitors) == 0: | |
raise Exception("Failed to get screen height") | |
return monitors[0].height | |
SCREEN_SIZE_VALUES = { | |
"normal": { | |
"credits_img":(100, 100), | |
## App Size | |
'IMAGE_HEIGHT': 140, | |
'FILEPATHS_HEIGHT': 75, | |
'OPTIONS_HEIGHT': 262, | |
'CONVERSIONBUTTON_HEIGHT': 30, | |
'COMMAND_HEIGHT': 141, | |
'PROGRESS_HEIGHT': 25, | |
'PADDING': 7, | |
}, | |
"small": { | |
"credits_img":(50, 50), | |
## App Size | |
'IMAGE_HEIGHT': 135, | |
'FILEPATHS_HEIGHT': 85, | |
'OPTIONS_HEIGHT': 274, | |
'CONVERSIONBUTTON_HEIGHT': 35, | |
'COMMAND_HEIGHT': 80, | |
'PROGRESS_HEIGHT': 6, | |
'PADDING': 5, | |
}, | |
"medium": { | |
"credits_img":(50, 50), | |
## App Size | |
'IMAGE_HEIGHT': 135, | |
'FILEPATHS_HEIGHT': 85, | |
'OPTIONS_HEIGHT': 274, | |
'CONVERSIONBUTTON_HEIGHT': 20, | |
'COMMAND_HEIGHT': 115, | |
'PROGRESS_HEIGHT': 9, | |
'PADDING': 7, | |
}, | |
} | |
try: | |
if get_screen_height() >= 900: | |
determined_size = SCREEN_SIZE_VALUES["normal"] | |
elif get_screen_height() <= 720: | |
determined_size = SCREEN_SIZE_VALUES["small"] | |
else: | |
determined_size = SCREEN_SIZE_VALUES["medium"] | |
except: | |
determined_size = SCREEN_SIZE_VALUES["normal"] | |
class ImagePath(): | |
def __init__(self, base_path): | |
img_path = os.path.join(base_path, 'gui_data', 'img') | |
credits_path = os.path.join(img_path, 'credits.png') | |
donate_path = os.path.join(img_path, 'donate.png') | |
download_path = os.path.join(img_path, 'download.png') | |
efile_path = os.path.join(img_path, 'File.png') | |
help_path = os.path.join(img_path, 'help.png') | |
key_path = os.path.join(img_path, 'key.png') | |
stop_path = os.path.join(img_path, 'stop.png') | |
play_path = os.path.join(img_path, 'play.png') | |
pause_path = os.path.join(img_path, 'pause.png') | |
self.banner_path = os.path.join(img_path, 'UVR-banner.png') | |
self.efile_img = self.open_image(path=efile_path,size=(20, 20)) | |
self.stop_img = self.open_image(path=stop_path, size=(20, 20)) | |
self.play_img = self.open_image(path=play_path, size=(20, 20)) | |
self.pause_img = self.open_image(path=pause_path, size=(20, 20)) | |
self.help_img = self.open_image(path=help_path, size=(20, 20)) | |
self.download_img = self.open_image(path=download_path, size=(30, 30)) | |
self.donate_img = self.open_image(path=donate_path, size=(30, 30)) | |
self.key_img = self.open_image(path=key_path, size=(30, 30)) | |
self.credits_img = self.open_image(path=credits_path, size=determined_size["credits_img"]) | |
def open_image(self, path: str, size: tuple = None, keep_aspect: bool = True, rotate: int = 0) -> ImageTk.PhotoImage: | |
""" | |
Open the image on the path and apply given settings\n | |
Paramaters: | |
path(str): | |
Absolute path of the image | |
size(tuple): | |
first value - width | |
second value - height | |
keep_aspect(bool): | |
keep aspect ratio of image and resize | |
to maximum possible width and height | |
(maxima are given by size) | |
rotate(int): | |
clockwise rotation of image | |
Returns(ImageTk.PhotoImage): | |
Image of path | |
""" | |
img = Image.open(path).convert(mode='RGBA') | |
ratio = img.height/img.width | |
img = img.rotate(angle=-rotate) | |
if size is not None: | |
size = (int(size[0]), int(size[1])) | |
if keep_aspect: | |
img = img.resize((size[0], int(size[0] * ratio)), Image.ANTIALIAS) | |
else: | |
img = img.resize(size, Image.ANTIALIAS) | |
return ImageTk.PhotoImage(img) | |
class AdjustedValues(): | |
IMAGE_HEIGHT = determined_size["IMAGE_HEIGHT"] | |
FILEPATHS_HEIGHT = determined_size["FILEPATHS_HEIGHT"] | |
OPTIONS_HEIGHT = determined_size["OPTIONS_HEIGHT"] | |
CONVERSIONBUTTON_HEIGHT = determined_size["CONVERSIONBUTTON_HEIGHT"] | |
COMMAND_HEIGHT = determined_size["COMMAND_HEIGHT"] | |
PROGRESS_HEIGHT = determined_size["PROGRESS_HEIGHT"] | |
PADDING = determined_size["PADDING"] | |