diff --git a/.gitignore b/.gitignore index 6c54aea..674ec4b 100644 --- a/.gitignore +++ b/.gitignore @@ -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 diff --git a/ComConfigCopy.py b/ComConfigCopy.py index 96cacc8..e664b98 100644 --- a/ComConfigCopy.py +++ b/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", "", lambda event: event.widget.event_generate("<>")) + self.bind_class("Text", "", lambda event: event.widget.event_generate("<>")) + self.bind_class("Text", "", lambda event: event.widget.event_generate("<>")) + self.bind_class("Entry", "", lambda event: event.widget.event_generate("<>")) + self.bind_class("Entry", "", lambda event: event.widget.event_generate("<>")) + self.bind_class("Entry", "", lambda event: event.widget.event_generate("<>")) + 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] Некорректный выбор.") - # ========================== # Основной запуск приложения # ==========================