Enhance update checking
- 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
This commit is contained in:
@@ -524,15 +524,16 @@ class SettingsWindow(tk.Toplevel):
|
||||
copy_mode_frame = ttk.Frame(settings_frame)
|
||||
copy_mode_frame.grid(row=3, column=1, sticky=W, pady=5)
|
||||
ttk.Radiobutton(copy_mode_frame, text="Построчно", value="line",
|
||||
variable=self.copy_mode_var).pack(side=LEFT)
|
||||
variable=self.copy_mode_var, command=self.toggle_block_size).pack(side=LEFT)
|
||||
ttk.Radiobutton(copy_mode_frame, text="Блоками", value="block",
|
||||
variable=self.copy_mode_var).pack(side=LEFT)
|
||||
variable=self.copy_mode_var, command=self.toggle_block_size).pack(side=LEFT)
|
||||
|
||||
# Размер блока
|
||||
ttk.Label(settings_frame, text="Размер блока:").grid(row=4, column=0, sticky=W, pady=5)
|
||||
self.block_size_label = ttk.Label(settings_frame, text="Размер блока:")
|
||||
self.block_size_label.grid(row=4, column=0, sticky=W, pady=5)
|
||||
self.block_size_var = StringVar(value=str(settings.get("block_size", 15)))
|
||||
block_size_entry = CustomEntry(settings_frame, textvariable=self.block_size_var)
|
||||
block_size_entry.grid(row=4, column=1, sticky=W, pady=5)
|
||||
self.block_size_entry = CustomEntry(settings_frame, textvariable=self.block_size_var)
|
||||
self.block_size_entry.grid(row=4, column=1, sticky=W, pady=5)
|
||||
|
||||
# Приглашение командной строки
|
||||
ttk.Label(settings_frame, text="Приглашение:").grid(row=5, column=0, sticky=W, pady=5)
|
||||
@@ -548,9 +549,21 @@ class SettingsWindow(tk.Toplevel):
|
||||
|
||||
self.update_ports()
|
||||
|
||||
# Инициализация видимости поля размера блока
|
||||
self.toggle_block_size()
|
||||
|
||||
# Центрируем окно
|
||||
self.center_window()
|
||||
|
||||
|
||||
# Переключение видимости поля размера блока
|
||||
def toggle_block_size(self):
|
||||
if self.copy_mode_var.get() == "line":
|
||||
self.block_size_label.grid_remove()
|
||||
self.block_size_entry.grid_remove()
|
||||
else:
|
||||
self.block_size_label.grid()
|
||||
self.block_size_entry.grid()
|
||||
|
||||
# Центрирование окна
|
||||
def center_window(self):
|
||||
self.update_idletasks()
|
||||
@@ -670,7 +683,8 @@ class SerialAppGUI(tk.Tk):
|
||||
# Инициализация проверки обновлений
|
||||
self.update_checker = UpdateChecker(
|
||||
VERSION,
|
||||
"https://gitea.filow.ru/LowaSC/ComConfigCopy"
|
||||
"https://gitea.filow.ru/LowaSC/ComConfigCopy",
|
||||
include_prereleases=False # Проверяем только стабильные версии
|
||||
)
|
||||
|
||||
# Настройка стиля
|
||||
@@ -719,14 +733,20 @@ class SerialAppGUI(tk.Tk):
|
||||
elif update_available:
|
||||
release_info = self.update_checker.get_release_notes()
|
||||
if release_info:
|
||||
# Форматируем сообщение
|
||||
message = (
|
||||
f"Доступна новая версия {release_info['version']}!\n\n"
|
||||
f"Тип релиза: {'Пре-релиз' if release_info['type'] == 'prerelease' else 'Стабильный'}\n\n"
|
||||
"Изменения:\n"
|
||||
f"{release_info['description']}\n\n"
|
||||
"Хотите перейти на страницу загрузки?"
|
||||
)
|
||||
response = messagebox.askyesno(
|
||||
"Доступно обновление",
|
||||
f"Доступна новая версия {release_info['version']}!\n\n"
|
||||
f"Изменения:\n{release_info['description']}\n\n"
|
||||
"Хотите перейти на страницу загрузки?",
|
||||
message,
|
||||
)
|
||||
if response:
|
||||
webbrowser.open(release_info["download_url"])
|
||||
webbrowser.open(release_info["link"])
|
||||
else:
|
||||
messagebox.showerror(
|
||||
"Ошибка",
|
||||
|
||||
Reference in New Issue
Block a user