|
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), |
|
|
|
'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), |
|
|
|
'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), |
|
|
|
'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"] |
|
|