This commit is contained in:
unknown
2026-02-09 14:28:39 +05:00
parent 5fd5de3baf
commit be7aadf218
10 changed files with 754 additions and 16 deletions

92
ui.py
View File

@@ -7,6 +7,7 @@ import threading
import logging
from pathlib import Path
from services.processor import FileProcessorService
from services.browser_service import BrowserService
class UIManager:
@@ -16,7 +17,7 @@ class UIManager:
"""Инициализирует интерфейс."""
self.root = root
self.root.title("🔄 Автоматизация загрузки файлов")
self.root.geometry("700x600")
self.root.geometry("700x800")
self.root.configure(bg="#2C3E50")
self.root.minsize(500, 400)
@@ -92,9 +93,23 @@ class UIManager:
)
url_label.pack(anchor="w", pady=(10, 5))
self.url_entry = tk.Entry(main_frame, font=self.font_label)
self.url_entry.pack(anchor="w", fill=tk.X, pady=(0, 15))
self.url_entry.insert(0, "https://")
# Кнопка Вставить рядом с полем URL
url_frame = tk.Frame(main_frame, bg="#2C3E50")
url_frame.pack(fill=tk.X, pady=(0, 15))
self.url_entry = tk.Entry(url_frame, font=self.font_label)
self.url_entry.pack(side="left", fill=tk.X, expand=True)
insert_button = tk.Button(
url_frame,
text="Вставить",
command=self._insert_from_clipboard,
font=self.font_button,
bg="#27AE60",
fg="white",
padx=10
)
insert_button.pack(side="left", padx=(10, 0))
# ===== ПОЛЕ 3: ВАРИАНТЫ КНОПОК =====
buttons_label = tk.Label(
@@ -190,6 +205,19 @@ class UIManager:
# Перенаправление логов в текстовое поле
self._setup_log_handler()
# ===== ВЫБОР ВКЛАДКИ =====
tabs_label = tk.Label(
main_frame,
text="📑 Выбор вкладки браузера:",
font=self.font_label,
bg="#2C3E50",
fg="#ECF0F1"
)
tabs_label.pack(anchor="w", pady=(10, 5))
self.tab_selector = TabSelectorApp(main_frame, BrowserService(download_dir="./downloads"))
self.tab_selector.pack(fill=tk.X, pady=(0, 15))
def _setup_log_handler(self):
"""Настраивает обработчик логов в текстовое поле."""
@@ -273,6 +301,15 @@ class UIManager:
# Создаем процессор
processor = FileProcessorService(directory, url, download_dir)
# Проверка вкладок перед началом загрузки
browser_service = BrowserService(download_dir="./downloads")
browser_service.set_tabs(["Вкладка 1", "Вкладка 2", "Вкладка 3"])
# Пример: выбор вкладки по индексу
if not browser_service.select_tab_from_list(0):
logging.error("Не удалось выбрать вкладку. Проверьте массив вкладок.")
return
# Запускаем обработку
results = processor.start_processing(upload_texts, process_texts)
@@ -310,6 +347,53 @@ class UIManager:
messagebox.showinfo("Результаты", result_text)
def _insert_from_clipboard(self):
"""Обработчик для вставки текста из буфера обмена."""
try:
clipboard_text = self.root.clipboard_get()
self.url_entry.delete(0, tk.END) # Очистить поле
self.url_entry.insert(0, clipboard_text) # Вставить текст из буфера
except tk.TclError:
messagebox.showerror("Ошибка", "Буфер обмена пуст или недоступен.")
class TabSelectorApp:
def __init__(self, parent, browser_service):
self.browser_service = browser_service
self.frame = tk.Frame(parent, bg="#2C3E50")
# Выпадающий список
self.combo = ttk.Combobox(self.frame, state="readonly")
self.combo.pack(pady=10)
# Кнопка для выбора вкладки
self.select_button = tk.Button(self.frame, text="Выбрать вкладку", command=self.select_tab)
self.select_button.pack(pady=10)
def pack(self, **kwargs):
"""Упрощает упаковку фрейма."""
self.frame.pack(**kwargs)
def set_tabs(self, tabs):
"""Устанавливает массив вкладок и обновляет выпадающий список."""
self.tabs = tabs
self.combo["values"] = self.tabs
if self.tabs:
self.combo.current(0) # Устанавливаем первый элемент по умолчанию
def select_tab(self):
"""Выбирает вкладку из выпадающего списка."""
selected_index = self.combo.current()
if selected_index == -1:
print("❌ Вкладка не выбрана.")
return
success = self.browser_service.select_tab_from_list(selected_index)
if success:
print(f"✅ Вкладка '{self.tabs[selected_index]}' выбрана.")
else:
print(f"Не удалось выбрать вкладку '{self.tabs[selected_index]}'." )
def main():
"""Главная функция."""