- Refactor UpdateChecker - Add support for parsing release details with improved formatting - Implement more robust version comparison and release type handling - Add logging for update checking process - Improve error handling and release information extraction - Update update checking logic to handle stable and pre-release versions
103 lines
3.2 KiB
Python
103 lines
3.2 KiB
Python
#!/usr/bin/env python3
|
||
# -*- coding: utf-8 -*-
|
||
|
||
import tkinter as tk
|
||
from tkinter import ttk, BOTH, X, BOTTOM, END
|
||
import webbrowser
|
||
|
||
class AboutWindow(tk.Toplevel):
|
||
def __init__(self, parent):
|
||
super().__init__(parent)
|
||
self.title("О программе")
|
||
self.geometry("600x500")
|
||
self.resizable(False, False)
|
||
|
||
# Сохраняем ссылку на родительское окно
|
||
self.parent = parent
|
||
|
||
# Создаем фрейм для содержимого
|
||
about_frame = ttk.Frame(self, padding="20")
|
||
about_frame.pack(fill=BOTH, expand=True, padx=10, pady=10)
|
||
|
||
# Заголовок
|
||
ttk.Label(
|
||
about_frame,
|
||
text="ComConfigCopy",
|
||
font=("Segoe UI", 16, "bold")
|
||
).pack(pady=(0, 10))
|
||
|
||
# Описание
|
||
ttk.Label(
|
||
about_frame,
|
||
text="Программа для копирования конфигураций на коммутаторы",
|
||
wraplength=350
|
||
).pack(pady=(0, 20))
|
||
|
||
# Версия
|
||
ttk.Label(
|
||
about_frame,
|
||
text=f"Версия {getattr(parent, 'VERSION', '1.0.0')}",
|
||
font=("Segoe UI", 10)
|
||
).pack(pady=(0, 20))
|
||
|
||
# Контактная информация
|
||
contact_frame = ttk.Frame(about_frame)
|
||
contact_frame.pack(fill=X, pady=(0, 20))
|
||
|
||
# Исходный код
|
||
ttk.Label(
|
||
contact_frame,
|
||
text="Исходный код:",
|
||
font=("Segoe UI", 10, "bold")
|
||
).pack(anchor="w")
|
||
|
||
source_link = ttk.Label(
|
||
contact_frame,
|
||
text="https://gitea.filow.ru/LowaSC/ComConfigCopy",
|
||
cursor="hand2",
|
||
foreground="blue"
|
||
)
|
||
source_link.pack(anchor="w")
|
||
source_link.bind("<Button-1>", lambda e: self.open_url("https://gitea.filow.ru/LowaSC/ComConfigCopy"))
|
||
|
||
# Контакты
|
||
ttk.Label(
|
||
contact_frame,
|
||
text="\nКонтакты:",
|
||
font=("Segoe UI", 10, "bold")
|
||
).pack(anchor="w")
|
||
|
||
ttk.Label(
|
||
contact_frame,
|
||
text="Email: SPRF555@gmail.com"
|
||
).pack(anchor="w")
|
||
|
||
telegram_link = ttk.Label(
|
||
contact_frame,
|
||
text="Telegram: @LowaSC",
|
||
cursor="hand2",
|
||
foreground="blue"
|
||
)
|
||
telegram_link.pack(anchor="w")
|
||
telegram_link.bind("<Button-1>", lambda e: self.open_url("https://t.me/LowaSC"))
|
||
|
||
# Кнопка закрытия
|
||
ttk.Button(
|
||
self,
|
||
text="Закрыть",
|
||
command=self.destroy
|
||
).pack(side=BOTTOM, pady=10)
|
||
|
||
# Центрируем окно
|
||
self.center_window()
|
||
|
||
def center_window(self):
|
||
self.update_idletasks()
|
||
width = self.winfo_width()
|
||
height = self.winfo_height()
|
||
x = (self.winfo_screenwidth() // 2) - (width // 2)
|
||
y = (self.winfo_screenheight() // 2) - (height // 2)
|
||
self.geometry(f"{width}x{height}+{x}+{y}")
|
||
|
||
def open_url(self, url):
|
||
webbrowser.open(url) |