Disable TFTP server functionality and add global copy-paste keybindings
- Comment out TFTP server-related code and imports - Remove TFTP server tab from the application - Add global copy, paste, and cut keybindings for Text and Entry widgets - Remove Firmware directory creation
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -4,3 +4,6 @@ Configs/Eltex MES2424 AC - Сеть FTTB 2G, доп.txt
|
||||
Configs/конфиг доп 3750-52 с айпи 172.17.141.133 .txt
|
||||
DALL·E 2024-12-29 01.01.02 - Square vector logo_ A clean and minimalistic app icon for serial port management software. The design prominently features a simplified rectangular CO.ico
|
||||
test.py
|
||||
__pycache__/TFTPServer.cpython-312.pyc
|
||||
Firmware/1.jpg
|
||||
Firmware/2
|
||||
|
||||
122
ComConfigCopy.py
122
ComConfigCopy.py
@@ -43,13 +43,13 @@ from tkinter import ttk
|
||||
import serial
|
||||
import serial.tools.list_ports
|
||||
from serial.serialutil import SerialException
|
||||
from TFTPServer import TFTPServerThread
|
||||
# from TFTPServer import TFTPServerThread
|
||||
|
||||
# Создаем необходимые папки
|
||||
os.makedirs("Logs", exist_ok=True)
|
||||
os.makedirs("Configs", exist_ok=True)
|
||||
os.makedirs("Settings", exist_ok=True)
|
||||
os.makedirs("Firmware", exist_ok=True)
|
||||
# os.makedirs("Firmware", exist_ok=True)
|
||||
|
||||
# Файл настроек находится в папке Settings
|
||||
SETTINGS_FILE = os.path.join("Settings", "settings.json")
|
||||
@@ -423,7 +423,16 @@ class SerialAppGUI(tk.Tk):
|
||||
self.option_add("*Font", default_font)
|
||||
self.settings = settings
|
||||
self.connection = None
|
||||
self.tftp_thread = None
|
||||
# self.tftp_thread = None # TFTP сервер отключен
|
||||
|
||||
# Глобальные биндинги для копирования, вставки и вырезания
|
||||
self.bind_class("Text", "<Control-c>", lambda event: event.widget.event_generate("<<Copy>>"))
|
||||
self.bind_class("Text", "<Control-v>", lambda event: event.widget.event_generate("<<Paste>>"))
|
||||
self.bind_class("Text", "<Control-x>", lambda event: event.widget.event_generate("<<Cut>>"))
|
||||
self.bind_class("Entry", "<Control-c>", lambda event: event.widget.event_generate("<<Copy>>"))
|
||||
self.bind_class("Entry", "<Control-v>", lambda event: event.widget.event_generate("<<Paste>>"))
|
||||
self.bind_class("Entry", "<Control-x>", lambda event: event.widget.event_generate("<<Cut>>"))
|
||||
|
||||
self.create_menu()
|
||||
self.create_tabs()
|
||||
|
||||
@@ -458,10 +467,10 @@ class SerialAppGUI(tk.Tk):
|
||||
notebook.add(self.config_editor_frame, text="Редактор конфигурационного файла")
|
||||
self.create_config_editor_tab(self.config_editor_frame)
|
||||
|
||||
# Вкладка "TFTP Сервер"
|
||||
self.tftp_frame = ttk.Frame(notebook, padding=10)
|
||||
notebook.add(self.tftp_frame, text="TFTP Сервер")
|
||||
self.create_tftp_tab(self.tftp_frame)
|
||||
# # Вкладка "TFTP Сервер" (отключено)
|
||||
# self.tftp_frame = ttk.Frame(notebook, padding=10)
|
||||
# notebook.add(self.tftp_frame, text="TFTP Сервер")
|
||||
# self.create_tftp_tab(self.tftp_frame)
|
||||
|
||||
# -------------- Вкладка "Настройки" --------------
|
||||
def create_settings_tab(self, frame):
|
||||
@@ -751,55 +760,55 @@ class SerialAppGUI(tk.Tk):
|
||||
logging.error(f"Ошибка сохранения файла: {e}", exc_info=True)
|
||||
messagebox.showerror("Ошибка", f"Не удалось сохранить файл:\n{e}")
|
||||
|
||||
# -------------- Вкладка "TFTP Сервер" --------------
|
||||
def create_tftp_tab(self, frame):
|
||||
ip_frame = ttk.Frame(frame)
|
||||
ip_frame.pack(fill=X, pady=2)
|
||||
ttk.Label(ip_frame, text="Слушать на IP:").pack(side=LEFT, padx=5)
|
||||
self.tftp_listen_ip_var = StringVar(value="0.0.0.0")
|
||||
ttk.Entry(ip_frame, textvariable=self.tftp_listen_ip_var, width=15).pack(side=LEFT, padx=5)
|
||||
|
||||
port_frame = ttk.Frame(frame)
|
||||
port_frame.pack(fill=X, pady=2)
|
||||
ttk.Label(port_frame, text="Порт:").pack(side=LEFT, padx=5)
|
||||
self.tftp_port_var = StringVar(value="6969")
|
||||
ttk.Entry(port_frame, textvariable=self.tftp_port_var, width=10).pack(side=LEFT, padx=5)
|
||||
|
||||
folder_frame = ttk.Frame(frame)
|
||||
folder_frame.pack(fill=X, pady=2)
|
||||
ttk.Label(folder_frame, text="Папка прошивок:").pack(side=LEFT, padx=5)
|
||||
self.firmware_folder_var = StringVar(value="Firmware")
|
||||
ttk.Label(folder_frame, textvariable=self.firmware_folder_var).pack(side=LEFT, padx=5)
|
||||
ttk.Button(folder_frame, text="Открыть папку", command=lambda: os.startfile(os.path.abspath("Firmware"))).pack(side=LEFT, padx=5)
|
||||
|
||||
button_frame = ttk.Frame(frame)
|
||||
button_frame.pack(fill=X, pady=2)
|
||||
ttk.Button(button_frame, text="Запустить TFTP сервер", command=self.start_tftp_server).pack(side=LEFT, padx=5)
|
||||
ttk.Button(button_frame, text="Остановить TFTP сервер", command=self.stop_tftp_server).pack(side=LEFT, padx=5)
|
||||
|
||||
self.tftp_console = tk.Text(frame, wrap="word", height=15)
|
||||
self.tftp_console.pack(fill=BOTH, expand=True, padx=5, pady=5)
|
||||
|
||||
def append_tftp_console(self, text):
|
||||
self.tftp_console.insert(END, text)
|
||||
self.tftp_console.see(END)
|
||||
# -------------- Вкладка "TFTP Сервер" (отключено) --------------
|
||||
# def create_tftp_tab(self, frame):
|
||||
# ip_frame = ttk.Frame(frame)
|
||||
# ip_frame.pack(fill=X, pady=2)
|
||||
# ttk.Label(ip_frame, text="Слушать на IP:").pack(side=LEFT, padx=5)
|
||||
# self.tftp_listen_ip_var = StringVar(value="0.0.0.0")
|
||||
# ttk.Entry(ip_frame, textvariable=self.tftp_listen_ip_var, width=15).pack(side=LEFT, padx=5)
|
||||
#
|
||||
# port_frame = ttk.Frame(frame)
|
||||
# port_frame.pack(fill=X, pady=2)
|
||||
# ttk.Label(port_frame, text="Порт:").pack(side=LEFT, padx=5)
|
||||
# self.tftp_port_var = StringVar(value="6969")
|
||||
# ttk.Entry(port_frame, textvariable=self.tftp_port_var, width=10).pack(side=LEFT, padx=5)
|
||||
#
|
||||
# folder_frame = ttk.Frame(frame)
|
||||
# folder_frame.pack(fill=X, pady=2)
|
||||
# ttk.Label(folder_frame, text="Папка прошивок:").pack(side=LEFT, padx=5)
|
||||
# self.firmware_folder_var = StringVar(value="Firmware")
|
||||
# ttk.Label(folder_frame, textvariable=self.firmware_folder_var).pack(side=LEFT, padx=5)
|
||||
# ttk.Button(folder_frame, text="Открыть папку", command=lambda: os.startfile(os.path.abspath("Firmware"))).pack(side=LEFT, padx=5)
|
||||
#
|
||||
# button_frame = ttk.Frame(frame)
|
||||
# button_frame.pack(fill=X, pady=2)
|
||||
# ttk.Button(button_frame, text="Запустить TFTP сервер", command=self.start_tftp_server).pack(side=LEFT, padx=5)
|
||||
# ttk.Button(button_frame, text="Остановить TFTP сервер", command=self.stop_tftp_server).pack(side=LEFT, padx=5)
|
||||
#
|
||||
# self.tftp_console = tk.Text(frame, wrap="word", height=15)
|
||||
# self.tftp_console.pack(fill=BOTH, expand=True, padx=5, pady=5)
|
||||
#
|
||||
# def append_tftp_console(self, text):
|
||||
# self.tftp_console.insert(END, text)
|
||||
# self.tftp_console.see(END)
|
||||
|
||||
def start_tftp_server(self):
|
||||
listen_ip = self.tftp_listen_ip_var.get()
|
||||
try:
|
||||
port = int(self.tftp_port_var.get())
|
||||
except ValueError:
|
||||
messagebox.showerror("Ошибка", "Некорректное значение порта.")
|
||||
return
|
||||
self.tftp_thread = TFTPServerThread(listen_ip, port, self.append_tftp_console)
|
||||
self.tftp_thread.start()
|
||||
|
||||
def stop_tftp_server(self):
|
||||
if self.tftp_thread:
|
||||
self.tftp_thread.stop()
|
||||
self.tftp_thread.join()
|
||||
self.tftp_thread = None
|
||||
self.append_tftp_console("TFTP сервер остановлен.\n")
|
||||
# def start_tftp_server(self):
|
||||
# listen_ip = self.tftp_listen_ip_var.get()
|
||||
# try:
|
||||
# port = int(self.tftp_port_var.get())
|
||||
# except ValueError:
|
||||
# messagebox.showerror("Ошибка", "Некорректное значение порта.")
|
||||
# return
|
||||
# self.tftp_thread = TFTPServerThread(listen_ip, port, self.append_tftp_console)
|
||||
# self.tftp_thread.start()
|
||||
|
||||
# def stop_tftp_server(self):
|
||||
# if self.tftp_thread:
|
||||
# self.tftp_thread.stop()
|
||||
# self.tftp_thread.join()
|
||||
# self.tftp_thread = None
|
||||
# self.append_tftp_console("TFTP сервер остановлен.\n")
|
||||
|
||||
# ==========================
|
||||
# Парсер аргументов (не используется)
|
||||
@@ -811,8 +820,6 @@ class SerialAppGUI(tk.Tk):
|
||||
# parser.add_argument("--cli", action="store_true", help="Запустить в режиме командной строки (без графики)")
|
||||
# return parser.parse_args()
|
||||
|
||||
|
||||
|
||||
# ==========================
|
||||
# Режим командной строки (не используется)
|
||||
# ==========================
|
||||
@@ -879,7 +886,6 @@ class SerialAppGUI(tk.Tk):
|
||||
# else:
|
||||
# print("[ERROR] Некорректный выбор.")
|
||||
|
||||
|
||||
# ==========================
|
||||
# Основной запуск приложения
|
||||
# ==========================
|
||||
|
||||
Reference in New Issue
Block a user