From 15b58472556594db950a786d55c167cb69b72520 Mon Sep 17 00:00:00 2001 From: mx57 <38256814+mx57@users.noreply.github.com> Date: Wed, 26 Aug 2026 05:18:52 +0000 Subject: [PATCH] feat: add pet size adjustment and fix tray skin persistence Added customizable pet size (50-250px) slider to SettingsDialog, implemented dynamic window resizing in PetWindow, scaled mouse netting radius in InputManager, and fixed tray skin selection persistence in ConfigManager. --- src/core/input_manager.py | 8 ++- src/ui/main_window.py | 12 ++++- src/ui/settings_dialog.py | 16 ++++++ src/ui/tray_menu.py | 10 +++- src/utils/config_manager.py | 3 +- tests/test_utils.py | 54 +++++++++++++++++++++ verification/screenshots/stats_history.png | Bin 22831 -> 22443 bytes 7 files changed, 97 insertions(+), 6 deletions(-) diff --git a/src/core/input_manager.py b/src/core/input_manager.py index 9ca9d10..c66944d 100644 --- a/src/core/input_manager.py +++ b/src/core/input_manager.py @@ -410,8 +410,12 @@ def handle_mouse(self, x, y): dy_pet = y - center_y dist_sq_pet = dx_pet * dx_pet + dy_pet * dy_pet - # Оптимизация: сравнение квадрата расстояния (порог 60px -> 3600) - if dist_sq_pet < 3600: + # Динамический порог радиуса поглаживания на основе текущего размера окна (по умолчанию ~60px при 100px окне) + pet_radius = max(30, int(max(self.window.width(), self.window.height()) * 0.6)) + threshold_sq = pet_radius * pet_radius + + # Оптимизация: сравнение квадрата расстояния с динамическим порогом + if dist_sq_pet < threshold_sq: # Исключаем пассивный фарм (требуем активное поглаживание: активное движение мыши и кулдаун) if self.last_pet_time == 0: self.last_pet_mouse_pos = (x, y) diff --git a/src/ui/main_window.py b/src/ui/main_window.py index e619905..042b1b2 100644 --- a/src/ui/main_window.py +++ b/src/ui/main_window.py @@ -55,7 +55,9 @@ def __init__(self, config_manager=None): self.is_dragging = False self.shake_count = 0 self.last_shake_time = 0 - self.original_size = QSize(100, 100) + + pet_size = self.config.get("pet_size") if self.config else 100 + self.original_size = QSize(pet_size, pet_size) # Начальный размер self.resize(self.original_size) @@ -91,6 +93,14 @@ def set_opacity(self, value): """Устанавливает прозрачность окна (0-100)""" self.setWindowOpacity(value / 100.0) + def set_pet_size(self, size): + """Устанавливает базовый размер питомца в пикселях (50-250)""" + if self.config: + self.config.set("pet_size", size) + self.original_size = QSize(size, size) + self.resize(self.original_size) + self.animation_manager.update_size(self.size()) + def set_always_on_top(self, enabled): """Включает или выключает режим 'Поверх всех окон' динамически""" if self.config: diff --git a/src/ui/settings_dialog.py b/src/ui/settings_dialog.py index 5339824..f1d9378 100644 --- a/src/ui/settings_dialog.py +++ b/src/ui/settings_dialog.py @@ -52,6 +52,21 @@ def __init__(self, config, parent=None): self.opacity_slider.valueChanged.connect(lambda v: self.opacity_val_label.setText(f"{v}%")) layout.addWidget(self.opacity_slider) + # Размер питомца + size_header_layout = QHBoxLayout() + size_header_layout.addWidget(QLabel("Размер питомца:")) + self.size_val_label = QLabel(f"{self.config.get('pet_size')}px") + self.size_val_label.setStyleSheet("font-weight: bold; color: #555;") + size_header_layout.addStretch() + size_header_layout.addWidget(self.size_val_label) + layout.addLayout(size_header_layout) + + self.size_slider = QSlider(Qt.Horizontal) + self.size_slider.setRange(50, 250) + self.size_slider.setValue(self.config.get("pet_size")) + self.size_slider.valueChanged.connect(lambda v: self.size_val_label.setText(f"{v}px")) + layout.addWidget(self.size_slider) + # Интервал растяжки layout.addWidget(QLabel("Интервал растяжки (мин):")) self.stretch_spin = QSpinBox() @@ -168,6 +183,7 @@ def save_settings(self): self.config.set("always_on_top", self.always_on_top_check.isChecked()) self.config.set("volume", self.volume_slider.value()) self.config.set("opacity", self.opacity_slider.value()) + self.config.set("pet_size", self.size_slider.value()) self.config.set("stretch_interval", self.stretch_spin.value()) self.config.set("pomodoro_work", self.pomodoro_work_spin.value()) self.config.set("pomodoro_break", self.pomodoro_break_spin.value()) diff --git a/src/ui/tray_menu.py b/src/ui/tray_menu.py index b3d0392..8bcea4a 100644 --- a/src/ui/tray_menu.py +++ b/src/ui/tray_menu.py @@ -183,9 +183,10 @@ def start_break_timer(self, checked=False): def show_settings(self, checked=False): dialog = SettingsDialog(self.window.config, self.window) if dialog.exec(): - # Обновляем скин и прозрачность в реальном времени + # Обновляем скин, прозрачность и размер в реальном времени self.window.animation_manager.set_skin(self.window.config.get("skin")) self.window.set_opacity(self.window.config.get("opacity")) + self.window.set_pet_size(self.window.config.get("pet_size")) # Обновляем меню скинов self.update_skin_menu() # Обновляем режим "Поверх всех окон" в реальном времени @@ -242,5 +243,10 @@ def update_skin_menu(self): self.skin_menu.clear() for skin_id, name in CAT_SKINS.items(): action = QAction(name, self) - action.triggered.connect(lambda checked=False, sid=skin_id: self.window.animation_manager.set_skin(sid)) + action.triggered.connect(lambda checked=False, sid=skin_id: self.select_skin(sid)) self.skin_menu.addAction(action) + + def select_skin(self, skin_id): + self.window.animation_manager.set_skin(skin_id) + if self.window.config: + self.window.config.set("skin", skin_id) diff --git a/src/utils/config_manager.py b/src/utils/config_manager.py index e6ad878..fb39511 100644 --- a/src/utils/config_manager.py +++ b/src/utils/config_manager.py @@ -12,7 +12,8 @@ class ConfigManager: "volume": 70, "language": "ru", "skin": "default", - "opacity": 100 + "opacity": 100, + "pet_size": 100 } def __init__(self, config_path="settings.json"): diff --git a/tests/test_utils.py b/tests/test_utils.py index 1a72e44..1f52d0b 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -58,6 +58,53 @@ def test_always_on_top_logic(self): self.assertFalse(bool(flags & Qt.WindowStaysOnTopHint)) self.assertFalse(config.get("always_on_top")) + window.close() + + def test_pet_size_configuration_and_window(self): + os.environ["QT_QPA_PLATFORM"] = "offscreen" + from PySide6.QtWidgets import QApplication + app = QApplication.instance() or QApplication([]) + + config = ConfigManager(self.config_path) + + # 1. Проверяем дефолтное значение pet_size в ConfigManager + self.assertEqual(config.get("pet_size"), 100) + + # 2. Установка нового размера в ConfigManager + config.set("pet_size", 150) + self.assertEqual(config.get("pet_size"), 150) + + # 3. Проверяем геометрию PetWindow + window = PetWindow(config) + self.assertEqual(window.original_size.width(), 150) + self.assertEqual(window.original_size.height(), 150) + + # 4. Динамическое изменение размера окна через set_pet_size + window.set_pet_size(200) + self.assertEqual(window.original_size.width(), 200) + self.assertEqual(window.original_size.height(), 200) + self.assertEqual(config.get("pet_size"), 200) + + window.close() + + def test_tray_menu_select_skin_saves_config(self): + os.environ["QT_QPA_PLATFORM"] = "offscreen" + from PySide6.QtWidgets import QApplication + from src.ui.tray_menu import TrayMenu + + app = QApplication.instance() or QApplication([]) + + config = ConfigManager(self.config_path) + window = PetWindow(config) + tray = TrayMenu(window) + + # Выбор скина через трей должен немедленно записать его в конфиг + tray.select_skin("orange") + self.assertEqual(window.animation_manager.skin, "orange") + self.assertEqual(config.get("skin"), "orange") + + window.close() + def test_config_manager(self): config = ConfigManager(self.config_path) config.set("username", "TestUser") @@ -306,6 +353,8 @@ def test_custom_skins_integration(self): self.assertEqual(anim_mgr.skin, "custom_test_skin") self.assertTrue(anim_mgr.current_anim_path.endswith("cat_custom_test_skin.svg")) + label.close() + # Очистка if os.path.exists(test_svg_path): os.remove(test_svg_path) @@ -356,6 +405,8 @@ def test_delete_custom_skin(self): self.assertNotIn("custom_todel_skin", CAT_SKINS) self.assertEqual(config.get("skin"), "default") self.assertNotIn("custom_todel_skin", config.get("custom_skins") or {}) + + dialog.close() finally: # Восстанавливаем моки гарантированно QMessageBox.question = original_question @@ -412,6 +463,8 @@ def test_animation_manager_current_fps(self): am.current_fps = 15 self.assertEqual(am.current_fps, 15) + label.close() + def test_sound_manager_fallback(self): from src.utils.sound_manager import SoundManager from PySide6.QtMultimedia import QSoundEffect @@ -514,6 +567,7 @@ def test_stats_dialog_reset_ui_flow(self): finally: QMessageBox.question = original_question QMessageBox.information = original_information + dialog.close() db.close() if __name__ == '__main__': diff --git a/verification/screenshots/stats_history.png b/verification/screenshots/stats_history.png index 1fa59b4d5793668869a36bebd63e723b22c6927b..4e0baad6694e2b63e6d6501a198603f850c02431 100644 GIT binary patch literal 22443 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ⅈSJ+-iz1iu>2bWTnZFcfBOd-iy?VbYfGBKnh!k@Qa8ux->6!*!dVx$ zf_mnd`N?_bmb#*9O3*_)Ve0ApHEV0%#e84Tg&S29A0bT)fPIi)qeTw^^L<2*VfXwx zPA9J$+sxFsfxL%v-nfkr!##ks7$K_l{Sp}yKLEZzm3u_{vp>=>8hzVL!(Z(%Hu~q* zf+U6gPF0*IC~Vgf`i=LvOs9Qr4c=NGSm>N$ZjCl(`undspjmic;R$pPdf&-!;)RnJ zmxW|n z%+5M?HXNfF%U>5Rrk{bpmXJ|l&wzh~aDn{BOQ@3_H;noI^|-qwY(Eo z^x{*_ZLPQfBX62g@wR@}Bd>gIDeZC#D1r>nc*-2jA-l#YSqyL2y<*G7yr&7wng>jdT&dk^fQVo8R@Lw#QQTPA= literal 22831 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
    ~#Z^ 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