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
|
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
|
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
|
test.py
|
||||||
|
__pycache__/TFTPServer.cpython-312.pyc
|
||||||
|
Firmware/1.jpg
|
||||||
|
Firmware/2
|
||||||
|
|||||||
120
ComConfigCopy.py
120
ComConfigCopy.py
@@ -43,13 +43,13 @@ from tkinter import ttk
|
|||||||
import serial
|
import serial
|
||||||
import serial.tools.list_ports
|
import serial.tools.list_ports
|
||||||
from serial.serialutil import SerialException
|
from serial.serialutil import SerialException
|
||||||
from TFTPServer import TFTPServerThread
|
# from TFTPServer import TFTPServerThread
|
||||||
|
|
||||||
# Создаем необходимые папки
|
# Создаем необходимые папки
|
||||||
os.makedirs("Logs", exist_ok=True)
|
os.makedirs("Logs", exist_ok=True)
|
||||||
os.makedirs("Configs", exist_ok=True)
|
os.makedirs("Configs", exist_ok=True)
|
||||||
os.makedirs("Settings", exist_ok=True)
|
os.makedirs("Settings", exist_ok=True)
|
||||||
os.makedirs("Firmware", exist_ok=True)
|
# os.makedirs("Firmware", exist_ok=True)
|
||||||
|
|
||||||
# Файл настроек находится в папке Settings
|
# Файл настроек находится в папке Settings
|
||||||
SETTINGS_FILE = os.path.join("Settings", "settings.json")
|
SETTINGS_FILE = os.path.join("Settings", "settings.json")
|
||||||
@@ -423,7 +423,16 @@ class SerialAppGUI(tk.Tk):
|
|||||||
self.option_add("*Font", default_font)
|
self.option_add("*Font", default_font)
|
||||||
self.settings = settings
|
self.settings = settings
|
||||||
self.connection = None
|
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_menu()
|
||||||
self.create_tabs()
|
self.create_tabs()
|
||||||
|
|
||||||
@@ -458,10 +467,10 @@ class SerialAppGUI(tk.Tk):
|
|||||||
notebook.add(self.config_editor_frame, text="Редактор конфигурационного файла")
|
notebook.add(self.config_editor_frame, text="Редактор конфигурационного файла")
|
||||||
self.create_config_editor_tab(self.config_editor_frame)
|
self.create_config_editor_tab(self.config_editor_frame)
|
||||||
|
|
||||||
# Вкладка "TFTP Сервер"
|
# # Вкладка "TFTP Сервер" (отключено)
|
||||||
self.tftp_frame = ttk.Frame(notebook, padding=10)
|
# self.tftp_frame = ttk.Frame(notebook, padding=10)
|
||||||
notebook.add(self.tftp_frame, text="TFTP Сервер")
|
# notebook.add(self.tftp_frame, text="TFTP Сервер")
|
||||||
self.create_tftp_tab(self.tftp_frame)
|
# self.create_tftp_tab(self.tftp_frame)
|
||||||
|
|
||||||
# -------------- Вкладка "Настройки" --------------
|
# -------------- Вкладка "Настройки" --------------
|
||||||
def create_settings_tab(self, frame):
|
def create_settings_tab(self, frame):
|
||||||
@@ -751,55 +760,55 @@ class SerialAppGUI(tk.Tk):
|
|||||||
logging.error(f"Ошибка сохранения файла: {e}", exc_info=True)
|
logging.error(f"Ошибка сохранения файла: {e}", exc_info=True)
|
||||||
messagebox.showerror("Ошибка", f"Не удалось сохранить файл:\n{e}")
|
messagebox.showerror("Ошибка", f"Не удалось сохранить файл:\n{e}")
|
||||||
|
|
||||||
# -------------- Вкладка "TFTP Сервер" --------------
|
# -------------- Вкладка "TFTP Сервер" (отключено) --------------
|
||||||
def create_tftp_tab(self, frame):
|
# def create_tftp_tab(self, frame):
|
||||||
ip_frame = ttk.Frame(frame)
|
# ip_frame = ttk.Frame(frame)
|
||||||
ip_frame.pack(fill=X, pady=2)
|
# ip_frame.pack(fill=X, pady=2)
|
||||||
ttk.Label(ip_frame, text="Слушать на IP:").pack(side=LEFT, padx=5)
|
# ttk.Label(ip_frame, text="Слушать на IP:").pack(side=LEFT, padx=5)
|
||||||
self.tftp_listen_ip_var = StringVar(value="0.0.0.0")
|
# 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)
|
# 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)
|
||||||
|
|
||||||
port_frame = ttk.Frame(frame)
|
# def start_tftp_server(self):
|
||||||
port_frame.pack(fill=X, pady=2)
|
# listen_ip = self.tftp_listen_ip_var.get()
|
||||||
ttk.Label(port_frame, text="Порт:").pack(side=LEFT, padx=5)
|
# try:
|
||||||
self.tftp_port_var = StringVar(value="6969")
|
# port = int(self.tftp_port_var.get())
|
||||||
ttk.Entry(port_frame, textvariable=self.tftp_port_var, width=10).pack(side=LEFT, padx=5)
|
# except ValueError:
|
||||||
|
# messagebox.showerror("Ошибка", "Некорректное значение порта.")
|
||||||
|
# return
|
||||||
|
# self.tftp_thread = TFTPServerThread(listen_ip, port, self.append_tftp_console)
|
||||||
|
# self.tftp_thread.start()
|
||||||
|
|
||||||
folder_frame = ttk.Frame(frame)
|
# def stop_tftp_server(self):
|
||||||
folder_frame.pack(fill=X, pady=2)
|
# if self.tftp_thread:
|
||||||
ttk.Label(folder_frame, text="Папка прошивок:").pack(side=LEFT, padx=5)
|
# self.tftp_thread.stop()
|
||||||
self.firmware_folder_var = StringVar(value="Firmware")
|
# self.tftp_thread.join()
|
||||||
ttk.Label(folder_frame, textvariable=self.firmware_folder_var).pack(side=LEFT, padx=5)
|
# self.tftp_thread = None
|
||||||
ttk.Button(folder_frame, text="Открыть папку", command=lambda: os.startfile(os.path.abspath("Firmware"))).pack(side=LEFT, padx=5)
|
# self.append_tftp_console("TFTP сервер остановлен.\n")
|
||||||
|
|
||||||
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")
|
|
||||||
|
|
||||||
# ==========================
|
# ==========================
|
||||||
# Парсер аргументов (не используется)
|
# Парсер аргументов (не используется)
|
||||||
@@ -811,8 +820,6 @@ class SerialAppGUI(tk.Tk):
|
|||||||
# parser.add_argument("--cli", action="store_true", help="Запустить в режиме командной строки (без графики)")
|
# parser.add_argument("--cli", action="store_true", help="Запустить в режиме командной строки (без графики)")
|
||||||
# return parser.parse_args()
|
# return parser.parse_args()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# ==========================
|
# ==========================
|
||||||
# Режим командной строки (не используется)
|
# Режим командной строки (не используется)
|
||||||
# ==========================
|
# ==========================
|
||||||
@@ -879,7 +886,6 @@ class SerialAppGUI(tk.Tk):
|
|||||||
# else:
|
# else:
|
||||||
# print("[ERROR] Некорректный выбор.")
|
# print("[ERROR] Некорректный выбор.")
|
||||||
|
|
||||||
|
|
||||||
# ==========================
|
# ==========================
|
||||||
# Основной запуск приложения
|
# Основной запуск приложения
|
||||||
# ==========================
|
# ==========================
|
||||||
|
|||||||
Reference in New Issue
Block a user