Мелкие фиксы настроек и пара багов (#805)

This commit is contained in:
Konukhov Yaroslav
2026-05-08 08:54:30 +03:00
committed by GitHub
parent 1cbc7dee7d
commit e3d2229f7f
4 changed files with 68 additions and 15 deletions

View File

@@ -436,7 +436,11 @@ def _on_edit_config(icon=None, item=None) -> None:
def _on_open_logs(icon=None, item=None) -> None:
log.info("Opening log file: %s", LOG_FILE)
if LOG_FILE.exists():
os.startfile(str(LOG_FILE))
try:
os.startfile(str(LOG_FILE))
except Exception as exc:
log.error("Failed to open log file: %s", exc)
_show_error(f"Не удалось открыть файл логов:\n{exc}")
else:
_show_info("Файл логов ещё не создан.")
@@ -485,16 +489,31 @@ def _edit_config_dialog() -> None:
autostart_value=cfg.get("autostart", False),
)
_original_appearance = ctk.get_appearance_mode()
def _finish() -> None:
root.destroy()
done.set()
def _cancel() -> None:
ctk.set_appearance_mode(_original_appearance)
_finish()
def on_save() -> None:
from tkinter import messagebox
merged = validate_config_form(widgets, DEFAULT_CONFIG, include_autostart=_supports_autostart())
if isinstance(merged, str):
messagebox.showerror("TG WS Proxy — Ошибка", merged, parent=root)
return
_ui_only_keys = {"appearance", "autostart", "check_updates"}
config_changed = any(merged.get(k) != cfg.get(k) for k in merged)
proxy_changed = any(merged.get(k) != cfg.get(k) for k in merged if k not in _ui_only_keys)
if not config_changed:
_finish()
return
save_config(merged)
_config.update(merged)
log.info("Config saved: %s", merged)
@@ -502,6 +521,10 @@ def _edit_config_dialog() -> None:
set_autostart_enabled(bool(merged.get("autostart", False)))
_tray_icon.menu = _build_menu()
if not proxy_changed:
_finish()
return
do_restart = messagebox.askyesno(
"Перезапустить?",
"Настройки сохранены.\n\nПерезапустить прокси сейчас?",
@@ -511,8 +534,8 @@ def _edit_config_dialog() -> None:
if do_restart:
threading.Thread(target=lambda: restart_proxy(_config, _show_error), daemon=True).start()
root.protocol("WM_DELETE_WINDOW", _finish)
install_tray_config_buttons(ctk, footer, theme, on_save=on_save, on_cancel=_finish)
root.protocol("WM_DELETE_WINDOW", _cancel)
install_tray_config_buttons(ctk, footer, theme, on_save=on_save, on_cancel=_cancel)
ctk_run_dialog(_build)
@@ -578,7 +601,7 @@ def run_tray() -> None:
_config = load_config()
if is_windows_dark_theme:
if is_windows_dark_theme():
apply_windows_dark_theme()
bootstrap(_config)