new
This commit is contained in:
92
ui.py
92
ui.py
@@ -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():
|
||||
"""Главная функция."""
|
||||
|
||||
Reference in New Issue
Block a user