From d72474c7cd9123df64acf895a0c91beae06bcb43 Mon Sep 17 00:00:00 2001 From: Mirvis <108653332+Kexi8BiT@users.noreply.github.com> Date: Tue, 26 Mar 2024 18:37:46 +0500 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=D0=B5?= =?UTF-8?q?=D1=82=20=D0=BD=D0=B5=D0=BA=D0=BE=D1=82=D0=BE=D1=80=D1=8B=D0=B5?= =?UTF-8?q?=20=D0=BD=D0=B0=D1=81=D1=82=D1=80=D0=BE=D0=B9=D0=BA=D0=B8=20(?= =?UTF-8?q?=D0=B7=D0=B2=D1=83=D0=BA=20=D0=B8=20=D0=BF=D0=BE=D0=BC=D0=B5?= =?UTF-8?q?=D0=BD=D1=8F=D1=82=D1=8C=20=D0=B1=D1=83=D0=BA=D0=B2=D1=83=20?= =?UTF-8?q?=D0=B4=D0=B8=D1=81=D0=BA=D0=B0=20=D0=BD=D0=B0=20=D0=BA=D0=BE?= =?UTF-8?q?=D1=82=D0=BE=D1=80=D0=BE=D0=BC=20=D0=B1=D1=83=D0=B4=D0=B5=D1=82?= =?UTF-8?q?=20=D1=85=D1=80=D0=B0=D0=BD=D0=B8=D1=82=D1=81=D1=8F=20=D0=BF?= =?UTF-8?q?=D0=B0=D0=BF=D0=BA=D0=B0=20=D1=81=20=D1=84=D0=B0=D0=B9=D0=BB?= =?UTF-8?q?=D0=B0=D0=BC=D0=B8)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 8 +++++ expert.py | 82 +++++++++++++++++++++++++++++++++++++++++++++++ main.py | 3 +- requirements.txt | Bin 94 -> 110 bytes settings_page.py | 15 +++++++-- sound_effect.py | 7 ++-- 6 files changed, 108 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 6a58e72..0ecd62c 100644 --- a/README.md +++ b/README.md @@ -42,4 +42,12 @@ llamareq.py - лол я сам хз что это также для настройки интерфейса используется ui.py в нем прописаны ввсе стили кнопок и слайдеров в лаунчере +client_storage: +```python +on_sound: bool # Настройка - обозначает проигрывается ли звуки в лаунчере +``` + + + + дальше ебитесь сами, мой лс всегда открыт а также есть issues или как там их \ No newline at end of file diff --git a/expert.py b/expert.py index e69de29..67e304b 100644 --- a/expert.py +++ b/expert.py @@ -0,0 +1,82 @@ +import flet as ft +import string +import os +import psutil +from sound_effect import BoopSound +def get_available_drives(): + return [drive for drive in string.ascii_uppercase if os.path.exists(drive + ':\\')] + +def get_disk_usage(drive_letter): + disk_usage = psutil.disk_usage(drive_letter + ':\\') + percent_used = disk_usage.percent / 100 + gb_free = disk_usage.free / (2**30) # конвертируем байты в гигабайты + return percent_used, gb_free + + +def disk_select(page: ft.Page): + boop = BoopSound(page) + boop.play() + catalog = page.client_storage.get("catalog_games") + if catalog is None: + catalog = "C" + page.client_storage.set("catalog_games", catalog) + + + def change_disk(disk): + boop.play() + catalog = disk + page.client_storage.set("catalog_games", catalog) + page.overlay.remove(message) + page.update() + def prew_change_disk(e): + boop.play() + disk = e.control.value + percent_used, gb_free = get_disk_usage(disk) + progress.value = percent_used + progress.update() + progress_right.value = f"{gb_free:.2f} GB" + progress_right.update() + if gb_free < 1: + btn.disabled = True + btn.update() + else: + btn.disabled = False + btn.update() + + catalogs = get_available_drives() + dd = ft.Dropdown(width=380, value=page.client_storage.get("catalog_games"), + options=[ft.dropdown.Option(catalog) for catalog in catalogs], + border_color=ft.colors.with_opacity(0.1, ft.colors.BLACK), border_radius=30, + prefix_icon=ft.icons.STORAGE_ROUNDED, on_change=prew_change_disk) + + percent_used, gb_free = get_disk_usage(page.client_storage.get("catalog_games")) + progress = ft.ProgressBar(width=295, bgcolor=ft.colors.BLACK12, color=ft.colors.WHITE, value=percent_used) + progress_right = ft.Text(f"{gb_free:.2f} GB") + + btn = ft.ElevatedButton("Применить", width=380, on_click=lambda _: change_disk(dd.value), disabled=True if gb_free < 1 else False, bgcolor=ft.colors.BLACK12, style=ft.ButtonStyle(bgcolor=ft.colors.TRANSPARENT, shadow_color=ft.colors.TRANSPARENT, overlay_color=ft.colors.TRANSPARENT, surface_tint_color=ft.colors.TRANSPARENT, ),color=ft.colors.WHITE) + message = ft.Stack( + [ft.Container( + ft.Container( + width=400, + height=200, + bgcolor="#2e2e2e", + border_radius=20, + border=ft.border.all(1, ft.colors.BLACK12), + padding=20, + content=ft.Column([ + ft.Text("Выберите каталог", size=20, color=ft.colors.WHITE), + dd, + ft.Row([progress, progress_right]), + btn + ]) + ), + bgcolor=ft.colors.with_opacity(0.5, ft.colors.BLACK), alignment=ft.alignment.center) + + ], + + ) + page.overlay.append(message) + + page.update() + + diff --git a/main.py b/main.py index 71e8136..3102cd9 100644 --- a/main.py +++ b/main.py @@ -54,5 +54,4 @@ def go_to_home(e): page.add(drag_area) page.add(ft.Row([nav_left, content])) - -ft.app(main) +ft.app(main) \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index c2cc3d353816c6617933a5a35fbc4ce187c3f169..d2188dc2e3d7f778ba558d49ab53de5a7ee1efad 100644 GIT binary patch delta 21 ccma#cn-C|!%fQ7@z);Lk%22|P$&kYU05-J*g8%>k delta 4 Lcmd0cn-B*81XKaL diff --git a/settings_page.py b/settings_page.py index 99f0792..fe7e061 100644 --- a/settings_page.py +++ b/settings_page.py @@ -2,6 +2,7 @@ from sound_effect import BoopSound from ui import interface_button, interface_switch, interface_input from internets import check_api +from expert import disk_select def go_to_settings(content, page: ft.Page): boop = BoopSound(page) @@ -56,11 +57,19 @@ def one_change(e): dialog.open = True page.update() boop = BoopSound(page) + def on_off_sound(e): + page.client_storage.set("on_sound", e.control.value) + print("Звуки отключены" if e.control.value == False else "Звуки включены") + boop.play() + on_sound = page.client_storage.get("on_sound") + if on_sound == None: + page.client_storage.set("on_sound", True) + settings = ft.Container( ft.Column([ ft.Row([ - ft.ElevatedButton("Поменять путь установки", **interface_button, - icon=ft.icons.DRIVE_FILE_RENAME_OUTLINE_ROUNDED, on_click=boop.play_e), + ft.ElevatedButton("Поменять диск установки", **interface_button, + icon=ft.icons.DRIVE_FILE_RENAME_OUTLINE_ROUNDED, on_click=lambda _: disk_select(page)), ft.ElevatedButton("Управление установками", **interface_button, icon=ft.icons.MEMORY, on_click=boop.play_e), ft.ElevatedButton("Отчистить кэш", **interface_button, icon=ft.icons.CLEAR, on_click=boop.play_e)]), @@ -71,7 +80,7 @@ def one_change(e): border_radius=10), ft.Container(content=ft.Row( [ft.Icon(ft.icons.AUDIOTRACK_SHARP, color="white", size=20), ft.Text("Звуки"), - ft.Switch(**interface_switch, value=True, on_change=boop.play_e)]), bgcolor="#1c2024", padding=10, + ft.Switch(**interface_switch, value=page.client_storage.get("on_sound"), on_change=on_off_sound)]), bgcolor="#1c2024", padding=10, border_radius=10), ]), ft.Row([ diff --git a/sound_effect.py b/sound_effect.py index 219f471..3a1a255 100644 --- a/sound_effect.py +++ b/sound_effect.py @@ -4,11 +4,14 @@ class BoopSound: def __init__(self, page: ft.Page): self.boop = ft.Audio("assets/audio/boop.mp3", autoplay=False, volume=0.2) + self.page = page page.overlay.append(self.boop) page.update() def play(self): - self.boop.play() + is_sound = self.page.client_storage.get("on_sound") + if is_sound != False: + self.boop.play() def play_e(self, e): - self.boop.play() \ No newline at end of file + self.play() \ No newline at end of file