diff --git a/img/Screenshot_v2024_07_2.jpg b/img/Screenshot_v2024_07_2.jpg
deleted file mode 100644
index 2d69dd3..0000000
Binary files a/img/Screenshot_v2024_07_2.jpg and /dev/null differ
diff --git a/img/Screenshot_v2025_04.jpg b/img/Screenshot_v2025_04.jpg
new file mode 100644
index 0000000..61fd922
Binary files /dev/null and b/img/Screenshot_v2025_04.jpg differ
diff --git a/src/action_ui.py b/src/action_ui.py
new file mode 100644
index 0000000..e0d1af0
--- /dev/null
+++ b/src/action_ui.py
@@ -0,0 +1,137 @@
+# -*- coding: utf-8 -*-
+"""
+@file action_ui.py
+@brief Action UI for the application.
+@details This module provides the Action UI for the application, allowing users to interact with the system.
+"""
+try:
+ from PySide6.QtUiTools import QUiLoader
+ from PySide6.QtWidgets import QDialog, QFileDialog, QMessageBox
+ from PySide6.QtCore import QFile
+except ImportError:
+ print("PySide6 is not installed. Please install it to use this module.")
+
+
+def action_save_as(ui):
+ """
+ Save the current state of the application as a new file.
+ """
+ # Open the file dialog to select the save location and file name
+ file_name, _ = QFileDialog.getSaveFileName(
+ None, 'Save File', '', 'Text Files (*.txt)')
+ if file_name:
+ with open(file_name, 'w') as file:
+ text = ui.data_textEdit.toPlainText() # Access the textEdit element
+ file.write(text)
+
+def action_save(ui):
+ """
+ Save the current state of the application to the existing file.
+ """
+ # Check if a file is already open
+ if hasattr(ui, 'current_file'):
+ # Save the current state to the existing file
+ with open(ui.current_file, 'w') as file:
+ file.write(ui.data_textEdit.toPlainText())
+ else:
+ # If no file is open, call action_save_as to prompt for a file name
+ action_save_as(ui)
+
+def basic_view_enabled(ui):
+ """ Hide specific layouts in the UI for basic view """
+ # Hide all widgets in the verticalLayout_config
+ for i in range(ui.verticalLayout_config.count()):
+ widget = ui.verticalLayout_config.itemAt(i).widget()
+ if widget:
+ widget.setVisible(False)
+
+ # Optionally, hide all widgets in the formLayout_config
+ for i in range(ui.formLayout_config.count()):
+ widget = ui.formLayout_config.itemAt(i).widget()
+ if widget:
+ widget.setVisible(False)
+
+def advanced_view_enabled(ui):
+ """ Show specific layouts in the UI for advanced view """
+ # Show all widgets in the verticalLayout_config
+ for i in range(ui.verticalLayout_config.count()):
+ widget = ui.verticalLayout_config.itemAt(i).widget()
+ if widget:
+ widget.setVisible(True)
+
+ # Optionally, show all widgets in the formLayout_config
+ for i in range(ui.formLayout_config.count()):
+ widget = ui.formLayout_config.itemAt(i).widget()
+ if widget:
+ widget.setVisible(True)
+
+def clear_buffer(ui):
+ """ Clear the buffer """
+ ui.data_textEdit.clear()
+ ui.send_data_text.clear()
+
+def show_about_dialog(ui):
+ """ Show the about dialog """
+ # Crete a message box to display the about information
+ msg_box = QMessageBox()
+ msg_box.setWindowTitle("About")
+ msg_box.setText("AFCOM Client v1.4.0.0 (C) 2020 - 2025 \r\n\r\nAuthor: Mehmet Cagri Aksoy \r\ngithub.com/mcagriaksoy")
+ msg_box.setIcon(QMessageBox.Information)
+ msg_box.setStandardButtons(QMessageBox.Ok)
+ msg_box.setDefaultButton(QMessageBox.Ok)
+ msg_box.setModal(True)
+ msg_box.exec() # Show the message box modally
+
+
+def show_help_dialog(ui):
+ """ Show the help dialog """
+ # Load the help.ui file
+ file_path = "ui/help.ui" # Adjust the path if necessary
+ ui_file = QFile(file_path)
+ if not ui_file.exists():
+ QMessageBox.critical(None, "Error", f"Help UI file not found: {file_path}")
+ return
+
+ ui_file.open(QFile.ReadOnly)
+ loader = QUiLoader()
+ help_dialog = loader.load(ui_file)
+ ui_file.close()
+
+ if help_dialog:
+ # Show the help dialog as a modal dialog
+ help_dialog.setWindowTitle("Help")
+ help_dialog.setModal(True)
+ help_dialog.exec()
+ else:
+ QMessageBox.critical(None, "Error", "Failed to load the help UI.")
+
+def show_settings_dialog(ui):
+ """ Show the settings dialog """
+ # Load the settings.ui file
+ file_path = "ui/settings.ui" # Adjust the path if necessary
+ ui_file = QFile(file_path)
+ if not ui_file.exists():
+ QMessageBox.critical(None, "Error", f"Settings UI file not found: {file_path}")
+ return
+
+ ui_file.open(QFile.ReadOnly)
+ loader = QUiLoader()
+ settings_dialog = loader.load(ui_file)
+ ui_file.close()
+
+ if settings_dialog:
+ # Show the settings dialog as a modal dialog
+ settings_dialog.setWindowTitle("Settings")
+ settings_dialog.setModal(True)
+ settings_dialog.exec()
+ else:
+ QMessageBox.critical(None, "Error", "Failed to load the settings UI.")
+
+def check_for_updates(ui):
+ """ Check for updates """
+ # Placeholder function for checking updates
+ # You can implement the actual update check logic here
+ QMessageBox.information(ui, "Check for Updates", "No updates available at this time.")
+
+
+
diff --git a/src/help.py b/src/help.py
new file mode 100644
index 0000000..e69de29
diff --git a/src/ui_main.py b/src/ui_main.py
index 9f14f23..8b2c9e3 100644
--- a/src/ui_main.py
+++ b/src/ui_main.py
@@ -6,18 +6,19 @@
__author__ = 'Mehmet Cagri Aksoy - github.com/mcagriaksoy'
__annotations__ = 'AFCOM - Serial Communication GUI Program'
-__version__ = '2024.12'
+__version__ = '2025 - 1.4.0.0'
__license__ = 'JGPLv3'
-__status__ = 'Research'
+__status__ = 'Development'
# IMPORTS
from os import path, system
from sys import platform, exit, argv
from glob import glob
+from src import action_ui
# Runtime Type Checking
-PROGRAM_TYPE_DEBUG = False
-PROGRAM_TYPE_RELEASE = True
+PROGRAM_TYPE_DEBUG = True
+PROGRAM_TYPE_RELEASE = False
try:
import serial.tools.list_ports
@@ -27,11 +28,11 @@
#system("python -m pip install pyserial")
try:
- from PyQt6.QtCore import QObject, QThread, pyqtSignal
- from PyQt6.QtWidgets import QApplication, QMainWindow, QMessageBox, QInputDialog, QFileDialog
+ from PySide6.QtCore import QObject, QThread, Signal, QFile, Qt
+ from PySide6.QtWidgets import QApplication, QMainWindow, QMessageBox, QInputDialog
if (PROGRAM_TYPE_DEBUG):
- from PyQt6.uic import loadUi
+ from PySide6.QtUiTools import QUiLoader
else: # PROGRAM_TYPE_RELEASE
from ui.ui_main_window import Ui_main_window
except ImportError as e:
@@ -42,8 +43,20 @@
SERIAL_DEVICE = Serial()
PORTS = []
is_serial_port_established = False
-nightModeEnabled = False
-simpleViewEnabled = False
+
+from winreg import OpenKey, HKEY_CURRENT_USER, QueryValueEx, ConnectRegistry, KEY_READ, KEY_WOW64_64KEY
+
+def is_windows_dark_mode(self):
+ try:
+ registry = ConnectRegistry(None, HKEY_CURRENT_USER)
+ registry_key = OpenKey(registry, r'Software\Microsoft\Windows\CurrentVersion\Themes\Personalize')
+ value, _ = QueryValueEx(registry_key, 'AppsUseLightTheme')
+ return value == 0 # 0 means dark mode is enabled
+ except WindowsError:
+ return False
+
+# simpleViewEnabled = False
+
def get_serial_port():
""" Lists serial port names
@@ -75,8 +88,8 @@ def get_serial_port():
# MULTI-THREADING
class Worker(QObject):
""" Worker Thread """
- finished = pyqtSignal()
- serial_data = pyqtSignal(str)
+ finished = Signal()
+ serial_data = Signal(str)
def __init__(self):
super(Worker, self).__init__()
@@ -102,17 +115,26 @@ class MainWindow(QMainWindow):
def __init__(self):
""" Initialize Main Window """
super(MainWindow, self).__init__()
+
if PROGRAM_TYPE_DEBUG:
+
file_path = path.join("ui/main_window.ui")
if not path.exists(file_path):
print("UI File Not Found!")
exit(1)
- loadUi(file_path, self.ui) # Load the .ui file
- self.ui.show() # Show the GUI
+ ui_file = QFile(file_path)
+ ui_file.open(QFile.ReadOnly)
+ loader = QUiLoader()
+ self.ui = loader.load(ui_file)
+ self.ui.show()
else: # PROGRAM_TYPE_RELEASE
print("UI File Found!")
self.ui= Ui_main_window()
self.ui.setupUi(self)
+
+ if (is_windows_dark_mode(self)):
+ print("Windows Dark Mode is enabled!")
+ # todo add dark mode support for the UI
PORTS = get_serial_port()
@@ -121,7 +143,7 @@ def __init__(self):
self.ui.start_button.clicked.connect(self.start_loop)
self.ui.refresh_button.clicked.connect(self.refresh_port)
-
+ '''
self.ui.command_edit_1.clicked.connect(self.command1)
self.ui.command_edit_2.clicked.connect(self.command2)
self.ui.command_edit_3.clicked.connect(self.command3)
@@ -131,49 +153,26 @@ def __init__(self):
self.ui.saved_command_2.clicked.connect(self.move_command2_to_text)
self.ui.saved_command_3.clicked.connect(self.move_command3_to_text)
self.ui.saved_command_4.clicked.connect(self.move_command4_to_text)
+ '''
- self.ui.clear_buffer_button.clicked.connect(self.clear_buffer)
+ self.ui.actionClear_Cache.triggered.connect(action_ui.clear_buffer)
- self.ui.night_mode.clicked.connect(self.night_mode_clicked)
- self.ui.view_change.clicked.connect(self.view_changes)
+ self.ui.actionBasic_View.triggered.connect(lambda: action_ui.basic_view_enabled(self.ui))
+ self.ui.actionAdvanced_View.triggered.connect(lambda: action_ui.advanced_view_enabled(self.ui))
- self.ui.port_comboBox.addItems(PORTS)
+ self.ui.actionSave.triggered.connect(action_ui.action_save)
+ self.ui.actionSave_As.triggered.connect(action_ui.action_save_as)
+ self.ui.port_comboBox.addItems(PORTS)
self.ui.send_button.clicked.connect(self.on_send_data_button_clicked)
- self.ui.end_button.clicked.connect(self.on_end_button_clicked)
-
- def view_changes(self):
- """ Change the window size """
- global simpleViewEnabled
- # Change the window size
- if simpleViewEnabled == False:
- self.resize(726, 580)
- self.ui.view_change.setText(">>")
- simpleViewEnabled = True
- else:
- self.resize(929, 580)
- self.ui.view_change.setText("<<")
- simpleViewEnabled = False
-
- def night_mode_clicked(self):
- """ Night Mode """
- #define static variable
- global nightModeEnabled
-
- # Invert all colors
- if nightModeEnabled == False:
- self.setStyleSheet("background-color: #2C2F33; color: #FFFFFF;")
- self.ui.night_mode.setText("🌘 Day Mode")
- self.ui.tabWidget.setStyleSheet("QWidget { background-color: #2C2F33; color: #FFFFFF; } QTabBar::tab { background: #2C2F33; color: #FFFFFF; }")
- nightModeEnabled = True
- else:
- self.setStyleSheet("background-color: #FFFFFF; color: #000000;")
- self.ui.night_mode.setText("🌘 Night Mode")
- self.ui.tabWidget.setStyleSheet("QWidget { background-color: #FFFFFF; color: #000000; } QTabBar::tab { background: #FFFFFF; color: #000000; }")
- nightModeEnabled = False
-
+ self.ui.actionExit.triggered.connect(lambda: exit(0))
+ self.ui.actionAbout.triggered.connect(action_ui.show_about_dialog)
+ self.ui.actionCheck_for_updates.triggered.connect(action_ui.check_for_updates)
+ self.ui.actionHelp_2.triggered.connect(action_ui.show_help_dialog)
+ self.ui.actionPreferences.triggered.connect(action_ui.show_settings_dialog)
+ '''
def command1(self):
""" Open the text input popup to save command for button 1 """
self.command_edit(1)
@@ -224,7 +223,7 @@ def move_command4_to_text(self):
""" Move the saved command to the text box """
self.ui.send_data_text.setText(self.ui.saved_command_4.text())
self.on_send_data_button_clicked()
-
+ '''
def refresh_port(self):
""" Refresh the serial port list """
PORTS = get_serial_port()
@@ -314,10 +313,20 @@ def start_loop(self):
return
global is_serial_port_established
+
+ if (is_serial_port_established == True):
+ is_serial_port_established = False
+ self.on_end_button_clicked()
+ self.ui.start_button.setText("START")
+ return
+
is_serial_port_established = True
+ # change start_button to stop button
+ self.ui.start_button.setText("STOP")
+
try:
self.worker = Worker() # a new worker to perform those tasks
- self.thread = QThread() # a new thread to run our background tasks in
+ self.thread = QThread() # a new thread to run our background tasks in
# move the worker into the thread, do this first before connecting the signals
self.worker.moveToThread(self.thread)
# begin our worker object's loop when the thread starts running
@@ -333,6 +342,8 @@ def start_loop(self):
self.thread.finished.connect(self.thread.deleteLater)
# start the thread
self.thread.start()
+
+
except RuntimeError:
self.print_message_on_screen("Exception in Worker Thread!")
@@ -343,12 +354,6 @@ def stop_loop(self):
# Disconnect the serial port and close it
SERIAL_DEVICE.close()
-
- def clear_buffer(self):
- """ Clear the buffer """
- self.ui.data_textEdit.clear()
- self.ui.send_data_text.clear()
-
def read_data_from_thread(self, serial_data):
""" Write the result to the text edit box"""
# self.ui.data_textEdit.append("{}".format(i))
@@ -376,17 +381,6 @@ def read_data_from_thread(self, serial_data):
self.ui.data_textEdit.verticalScrollBar().setValue(
self.ui.data_textEdit.verticalScrollBar().maximum())
- def on_save_txt_button_clicked(self):
- """ Save the values to the TXT file"""
- # Open file dialog to create new .txt file
- file_name, _ = QFileDialog.getSaveFileName(
- self, 'Save File', '', 'Text Files (*.txt)')
- if file_name:
- with open(file_name, 'w') as file:
- text = self.ui.data_textEdit.toPlainText()
- file.write(text)
- file.close()
-
def on_end_button_clicked(self):
""" Stop the process """
global is_serial_port_established
@@ -419,5 +413,4 @@ def start_ui_design():
""" Start the UI Design """
app = QApplication(argv) # Create an instance
window_object = MainWindow() # Create an instance of our class
- window_object.show()
exit(app.exec())
diff --git a/ui/config.ui b/ui/config.ui
new file mode 100644
index 0000000..6a22fbe
--- /dev/null
+++ b/ui/config.ui
@@ -0,0 +1,310 @@
+
+
+ Form
+
+
+
+ 0
+ 0
+ 206
+ 280
+
+
+
+ Form
+
+
+
+
+ 18
+ 12
+ 151
+ 16
+
+
+
+ Settings: Refresh:
+
+
+
+
+
+ 168
+ 2
+ 31
+ 28
+
+
+
+ ↻
+
+
+
+
+
+ 10
+ 40
+ 191
+ 231
+
+
+
+ -
+
+
+ Selected Port:
+
+
+
+ -
+
+
+ -
+
+
+ Baud Rate:
+
+
+
+ -
+
+ -
+
+ 9600
+
+
+ -
+
+ 57600
+
+
+ -
+
+ 115200
+
+
+ -
+
+ 110
+
+
+ -
+
+ 300
+
+
+ -
+
+ 1200
+
+
+ -
+
+ 2400
+
+
+ -
+
+ 4800
+
+
+ -
+
+ 19200
+
+
+ -
+
+ 38400
+
+
+
+
+ -
+
+
+ Length (B):
+
+
+
+ -
+
+ -
+
+ 8
+
+
+ -
+
+ 7
+
+
+ -
+
+ 6
+
+
+ -
+
+ 5
+
+
+
+
+ -
+
+
+ Timeout:
+
+
+
+ -
+
+ -
+
+ 2
+
+
+ -
+
+ 3
+
+
+ -
+
+ 4
+
+
+ -
+
+ 5
+
+
+ -
+
+ 10
+
+
+ -
+
+ 30
+
+
+ -
+
+ 50
+
+
+ -
+
+ 100
+
+
+
+
+ -
+
+
+ Parity:
+
+
+
+ -
+
+ -
+
+ None
+
+
+ -
+
+ Even
+
+
+ -
+
+ Odd
+
+
+ -
+
+ Mark
+
+
+ -
+
+ Space
+
+
+
+
+ -
+
+
+ StopBits:
+
+
+
+ -
+
+ -
+
+ 1
+
+
+ -
+
+ 1.5
+
+
+ -
+
+ 2
+
+
+
+
+ -
+
+
+ Flow Control:
+
+
+
+ -
+
+ -
+
+ None
+
+
+ -
+
+ Xon/Xoff
+
+
+ -
+
+ RTS/CTS
+
+
+ -
+
+ DSR/DTR
+
+
+
+
+ -
+
+
+ Save All
+
+
+
+
+
+
+
+
+
diff --git a/ui/help.ui b/ui/help.ui
new file mode 100644
index 0000000..bf20954
--- /dev/null
+++ b/ui/help.ui
@@ -0,0 +1,64 @@
+
+
+ Dialog
+
+
+
+ 0
+ 0
+ 765
+ 397
+
+
+
+ Dialog
+
+
+
+
+ 10
+ 10
+ 751
+ 341
+
+
+
+ false
+
+
+ true
+
+
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Segoe UI'; font-size:12pt; font-weight:696;">Information</span></p>
+<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Segoe UI'; font-size:12pt;">The AFCOM (also known as Serial communication GUI program) tool is a software application that allows users to send and receive data via the serial port (COM port) of their computer. The tool can be used for various purposes, such as testing, debugging, or communicating with other devices that use the serial protocol. </span></p>
+<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Segoe UI'; font-size:12pt; font-weight:696;">Features</span><span style=" font-family:'Segoe UI'; font-size:12pt;"> </span></p>
+<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Segoe UI'; font-size:12pt;">The COM port tool has the following features: It supports multiple COM ports and can detect the available ports automatically. It allows users to configure the parameters of the serial communication, such as baud rate. It provides a user-friendly interface that shows the transmitted and received data in hexadecimal, decimal, ASCII, or binary formats. It allows users to save and load the data to and from files.</span></p>
+<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Segoe UI'; font-size:12pt; font-weight:696;">Legal Information</span></p>
+<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Segoe UI'; font-size:12pt;">This application incorporates Qt for Python (PySide), which is licensed under the GNU Lesser General Public License version 3 (LGPLv3). By using this software, you agree to comply with the terms of the LGPLv3 license. For more information about Qt for Python, visit https://www.qt.io/qt-for-python. A copy of the LGPLv3 license is included with this application.</span></p>
+<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Segoe UI'; font-size:9pt;"><br /></p></body></html>
+
+
+ false
+
+
+
+
+
+ 150
+ 360
+ 491
+ 16
+
+
+
+ AFCOM Client v1.4.0.0 (C) 2020 - 2025 Author: Mehmet Cagri Aksoy github.com/mcagriaksoy
+
+
+
+
+
+
diff --git a/ui/main_window.ui b/ui/main_window.ui
index ac3de7e..1b949fc 100644
--- a/ui/main_window.ui
+++ b/ui/main_window.ui
@@ -6,8 +6,8 @@
0
0
- 929
- 579
+ 1127
+ 633
@@ -18,14 +18,14 @@
- 600
- 579
+ 0
+ 0
- 929
- 579
+ 9290
+ 4095
@@ -35,8 +35,8 @@
AFCOM Client (A free COM port data transfer client)
-
- icon.ico icon.ico
+
+ :/res/icon.ico :/res/icon.ico
1.000000000000000
@@ -48,775 +48,569 @@
Serial Communication Program Mehmet Cagri Aksoy
-
-
-
- 0
- 0
- 931
- 581
-
+
+ -
+
+ -
+
+
+
+ 5
+ 5
+
+
+
+
+ 5000
+ 28
+
+
+
+ QFrame::Box
+
+
+ QFrame::Sunken
+
+
+ false
+
+
+ Please enter the data want to sent...
+
+
+
+ -
+
+
+ 1
+
+
+ QLayout::SetDefaultConstraint
+
+ -
+
+
+
+ 250
+ 16777215
+
+
+
+ Push Data
+
+
+
+
+
+ -
+
+
+ 6
+
+
+ QLayout::SetDefaultConstraint
+
+ -
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter
+
+
+ Qt::AlignJustify|Qt::AlignVCenter
+
+
+ 4
+
+
+ 2
+
+ -
+
+
+ Refresh Port(s):
+
+
+
+ -
+
+
+
+ 120
+ 16777215
+
+
+
+ ↻
+
+
+
+ -
+
+
+ Selected Port:
+
+
+
+ -
+
+
+
+ 120
+ 16777215
+
+
+
+
+ -
+
+
+ Baud Rate:
+
+
+
+ -
+
+
+
+ 120
+ 16777215
+
+
+ -
+
+ 9600
+
+
+ -
+
+ 57600
+
+
+ -
+
+ 115200
+
+
+ -
+
+ 110
+
+
+ -
+
+ 300
+
+
+ -
+
+ 1200
+
+
+ -
+
+ 2400
+
+
+ -
+
+ 4800
+
+
+ -
+
+ 19200
+
+
+ -
+
+ 38400
+
+
+
+
+ -
+
+
+ Length (B):
+
+
+
+ -
+
+
+
+ 120
+ 16777215
+
+
+ -
+
+ 8
+
+
+ -
+
+ 7
+
+
+ -
+
+ 6
+
+
+ -
+
+ 5
+
+
+
+
+ -
+
+
+ Timeout:
+
+
+
+ -
+
+
+
+ 120
+ 16777215
+
+
+ -
+
+ 2
+
+
+ -
+
+ 3
+
+
+ -
+
+ 4
+
+
+ -
+
+ 5
+
+
+ -
+
+ 10
+
+
+ -
+
+ 30
+
+
+ -
+
+ 50
+
+
+ -
+
+ 100
+
+
+
+
+ -
+
+
+ Parity:
+
+
+
+ -
+
+
+
+ 120
+ 16777215
+
+
+ -
+
+ None
+
+
+ -
+
+ Even
+
+
+ -
+
+ Odd
+
+
+ -
+
+ Mark
+
+
+ -
+
+ Space
+
+
+
+
+ -
+
+
+ StopBits:
+
+
+
+ -
+
+
+
+ 120
+ 16777215
+
+
+ -
+
+ 1
+
+
+ -
+
+ 1.5
+
+
+ -
+
+ 2
+
+
+
+
+ -
+
+
+ Flow Control:
+
+
+
+ -
+
+
+
+ 120
+ 16777215
+
+
+ -
+
+ None
+
+
+ -
+
+ Xon/Xoff
+
+
+ -
+
+ RTS/CTS
+
+
+ -
+
+ DSR/DTR
+
+
+
+
+
+
+ -
+
+
+ Connection Options:
+
+
+
+ -
+
+
+
+ 205
+ 16777215
+
+
+
+ QFrame::NoFrame
+
+
+
+ -
+
+ -
+
+
+
+ Arial
+ 9
+ 50
+ false
+
+
+
+ Status :
+
+
+
+ -
+
+
+
+ Arial
+ 9
+ 50
+ false
+
+
+
+
+
+
+ Not Connected
+
+
+
+
+
+ -
+
+
+ 4
+
+ -
+
+
+
+ 250
+ 16777215
+
+
+
+
+ 9
+ 75
+ true
+
+
+
+ false
+
+
+
+
+
+ CONNECT
+
+
+
+
+
+
+
+ -
+
+
+ false
+
+
+ QFrame::Box
+
+
+ QFrame::Sunken
+
+
+ QTextEdit::AutoNone
+
+
+ true
+
+
+
+
+
+
+
+
@@ -828,7 +622,79 @@ li.checked::marker { content: "\2612"; }
Help
+
+
+ About
+
+
+
+
+ Check for Updates
+
+
+
+
+ Reset terminal
+
+
+
+
+ Clear Cache
+
+
+
+
+ Exit
+
+
+
+
+ New..
+
+
+
+
+ Basic View
+
+
+
+
+ Advanced View
+
+
+
+
+ Preferences..
+
+
+
+
+ Minimize
+
+
+
+
+ Full Screen
+
+
+
+
+ Help
+
+
+
+
+ Save As..
+
+
+
+
+ Save
+
+
-
+
+
+
diff --git a/ui/resource/play.svg b/ui/resource/play.svg
new file mode 100644
index 0000000..f9e2f8b
--- /dev/null
+++ b/ui/resource/play.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/ui/resources.qrc b/ui/resources.qrc
new file mode 100644
index 0000000..b205054
--- /dev/null
+++ b/ui/resources.qrc
@@ -0,0 +1,5 @@
+
+
+ icon.ico
+
+
diff --git a/ui/settings.ui b/ui/settings.ui
new file mode 100644
index 0000000..3338a08
--- /dev/null
+++ b/ui/settings.ui
@@ -0,0 +1,496 @@
+
+
+ Dialog
+
+
+
+ 0
+ 0
+ 251
+ 386
+
+
+
+ Dialog
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+ QDialogButtonBox::Close|QDialogButtonBox::SaveAll
+
+
+
+ -
+
+
+ Settings
+
+
+
+
+ 10
+ 20
+ 221
+ 311
+
+
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter
+
+
+ Qt::AlignJustify|Qt::AlignVCenter
+
+
+ 4
+
+
+ 2
+
+ -
+
+
+ Refresh Port(s):
+
+
+
+ -
+
+
+
+ 120
+ 16777215
+
+
+
+ ↻
+
+
+
+ -
+
+
+ Selected Port:
+
+
+
+ -
+
+
+
+ 120
+ 16777215
+
+
+
+
+ -
+
+
+ Baud Rate:
+
+
+
+ -
+
+
+
+ 120
+ 16777215
+
+
+ -
+
+ 9600
+
+
+ -
+
+ 57600
+
+
+ -
+
+ 115200
+
+
+ -
+
+ 110
+
+
+ -
+
+ 300
+
+
+ -
+
+ 1200
+
+
+ -
+
+ 2400
+
+
+ -
+
+ 4800
+
+
+ -
+
+ 19200
+
+
+ -
+
+ 38400
+
+
+
+
+ -
+
+
+ Length (B):
+
+
+
+ -
+
+
+
+ 120
+ 16777215
+
+
+ -
+
+ 8
+
+
+ -
+
+ 7
+
+
+ -
+
+ 6
+
+
+ -
+
+ 5
+
+
+
+
+ -
+
+
+ Timeout:
+
+
+
+ -
+
+
+
+ 120
+ 16777215
+
+
+ -
+
+ 2
+
+
+ -
+
+ 3
+
+
+ -
+
+ 4
+
+
+ -
+
+ 5
+
+
+ -
+
+ 10
+
+
+ -
+
+ 30
+
+
+ -
+
+ 50
+
+
+ -
+
+ 100
+
+
+
+
+ -
+
+
+ Parity:
+
+
+
+ -
+
+
+
+ 120
+ 16777215
+
+
+ -
+
+ None
+
+
+ -
+
+ Even
+
+
+ -
+
+ Odd
+
+
+ -
+
+ Mark
+
+
+ -
+
+ Space
+
+
+
+
+ -
+
+
+ StopBits:
+
+
+
+ -
+
+
+
+ 120
+ 16777215
+
+
+ -
+
+ 1
+
+
+ -
+
+ 1.5
+
+
+ -
+
+ 2
+
+
+
+
+ -
+
+
+ Flow Control:
+
+
+
+ -
+
+
+
+ 120
+ 16777215
+
+
+ -
+
+ None
+
+
+ -
+
+ Xon/Xoff
+
+
+ -
+
+ RTS/CTS
+
+
+ -
+
+ DSR/DTR
+
+
+
+
+ -
+
+
+ UI Language:
+
+
+
+ -
+
+
+
+ 120
+ 16777215
+
+
+ -
+
+ English
+
+
+ -
+
+ Türkçe
+
+
+
+
+ -
+
+
+
+ 120
+ 16777215
+
+
+
+
+ -
+
+
+ Terminal Font:
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Fixed
+
+
+
+ 10
+ 20
+
+
+
+
+ -
+
+
+
+ 120
+ 16777215
+
+
+ -
+
+ Defult (System)
+
+
+ -
+
+ Dark
+
+
+ -
+
+ Light
+
+
+
+
+ -
+
+
+ Theme:
+
+
+
+
+
+
+
+
+
+
+
+
+ buttonBox
+ accepted()
+ Dialog
+ accept()
+
+
+ 248
+ 254
+
+
+ 157
+ 274
+
+
+
+
+ buttonBox
+ rejected()
+ Dialog
+ reject()
+
+
+ 316
+ 260
+
+
+ 286
+ 274
+
+
+
+
+
diff --git a/ui/ui_main_window.py b/ui/ui_main_window.py
index 6578bb8..0d8c927 100644
--- a/ui/ui_main_window.py
+++ b/ui/ui_main_window.py
@@ -1,183 +1,226 @@
-# Form implementation generated from reading ui file 'main_window.ui'
-#
-# Created by: PyQt6 UI code generator 6.4.2
-#
-# WARNING: Any manual changes made to this file will be lost when pyuic6 is
-# run again. Do not edit this file unless you know what you are doing.
+# -*- coding: utf-8 -*-
+################################################################################
+## Form generated from reading UI file 'main_window.ui'
+##
+## Created by: Qt User Interface Compiler version 6.7.2
+##
+## WARNING! All changes made in this file will be lost when recompiling UI file!
+################################################################################
-from PyQt6 import QtCore, QtGui, QtWidgets
-
+from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
+ QMetaObject, QObject, QPoint, QRect,
+ QSize, QTime, QUrl, Qt)
+from PySide6.QtGui import (QAction, QBrush, QColor, QConicalGradient,
+ QCursor, QFont, QFontDatabase, QGradient,
+ QIcon, QImage, QKeySequence, QLinearGradient,
+ QPainter, QPalette, QPixmap, QRadialGradient,
+ QTransform)
+from PySide6.QtWidgets import (QApplication, QComboBox, QFormLayout, QFrame,
+ QGridLayout, QHBoxLayout, QLabel, QLayout,
+ QMainWindow, QPushButton, QSizePolicy, QTabWidget,
+ QTextEdit, QVBoxLayout, QWidget)
class Ui_main_window(object):
def setupUi(self, main_window):
- main_window.setObjectName("main_window")
+ if not main_window.objectName():
+ main_window.setObjectName(u"main_window")
main_window.resize(929, 579)
- sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Fixed, QtWidgets.QSizePolicy.Policy.Fixed)
+ sizePolicy = QSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(main_window.sizePolicy().hasHeightForWidth())
main_window.setSizePolicy(sizePolicy)
- main_window.setMinimumSize(QtCore.QSize(600, 579))
- main_window.setMaximumSize(QtCore.QSize(929, 579))
- main_window.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor))
- icon = QtGui.QIcon()
- icon.addPixmap(QtGui.QPixmap("icon.ico"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)
+ main_window.setMinimumSize(QSize(600, 579))
+ main_window.setMaximumSize(QSize(929, 579))
+ main_window.setCursor(QCursor(Qt.CursorShape.ArrowCursor))
+ icon = QIcon()
+ icon.addFile(u"icon.ico", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
main_window.setWindowIcon(icon)
- main_window.setWindowOpacity(1.0)
- self.centralwidget = QtWidgets.QWidget(parent=main_window)
- self.centralwidget.setObjectName("centralwidget")
- self.tabWidget = QtWidgets.QTabWidget(parent=self.centralwidget)
- self.tabWidget.setGeometry(QtCore.QRect(0, 0, 931, 581))
- self.tabWidget.setTabPosition(QtWidgets.QTabWidget.TabPosition.North)
- self.tabWidget.setObjectName("tabWidget")
- self.tab = QtWidgets.QWidget()
- self.tab.setObjectName("tab")
- self.gridLayoutWidget_2 = QtWidgets.QWidget(parent=self.tab)
- self.gridLayoutWidget_2.setGeometry(QtCore.QRect(0, 0, 721, 511))
- self.gridLayoutWidget_2.setObjectName("gridLayoutWidget_2")
- self.gridLayout_2 = QtWidgets.QGridLayout(self.gridLayoutWidget_2)
+ main_window.setWindowOpacity(1.000000000000000)
+ self.actionAna_Ekran = QAction(main_window)
+ self.actionAna_Ekran.setObjectName(u"actionAna_Ekran")
+ self.actionHelp = QAction(main_window)
+ self.actionHelp.setObjectName(u"actionHelp")
+ self.centralwidget = QWidget(main_window)
+ self.centralwidget.setObjectName(u"centralwidget")
+ self.tabWidget = QTabWidget(self.centralwidget)
+ self.tabWidget.setObjectName(u"tabWidget")
+ self.tabWidget.setGeometry(QRect(0, 0, 931, 581))
+ self.tabWidget.setTabPosition(QTabWidget.TabPosition.North)
+ self.tab = QWidget()
+ self.tab.setObjectName(u"tab")
+ self.gridLayoutWidget_2 = QWidget(self.tab)
+ self.gridLayoutWidget_2.setObjectName(u"gridLayoutWidget_2")
+ self.gridLayoutWidget_2.setGeometry(QRect(0, 0, 721, 511))
+ self.gridLayout_2 = QGridLayout(self.gridLayoutWidget_2)
+ self.gridLayout_2.setObjectName(u"gridLayout_2")
self.gridLayout_2.setContentsMargins(0, 0, 0, 0)
- self.gridLayout_2.setObjectName("gridLayout_2")
- self.label_23 = QtWidgets.QLabel(parent=self.gridLayoutWidget_2)
- self.label_23.setObjectName("label_23")
+ self.label_23 = QLabel(self.gridLayoutWidget_2)
+ self.label_23.setObjectName(u"label_23")
+
self.gridLayout_2.addWidget(self.label_23, 1, 0, 1, 1)
- self.data_textEdit = QtWidgets.QTextEdit(parent=self.gridLayoutWidget_2)
+
+ self.data_textEdit = QTextEdit(self.gridLayoutWidget_2)
+ self.data_textEdit.setObjectName(u"data_textEdit")
self.data_textEdit.setAutoFillBackground(False)
- self.data_textEdit.setFrameShape(QtWidgets.QFrame.Shape.Box)
- self.data_textEdit.setFrameShadow(QtWidgets.QFrame.Shadow.Raised)
- self.data_textEdit.setAutoFormatting(QtWidgets.QTextEdit.AutoFormattingFlag.AutoAll)
+ self.data_textEdit.setFrameShape(QFrame.Shape.Box)
+ self.data_textEdit.setFrameShadow(QFrame.Shadow.Raised)
+ self.data_textEdit.setAutoFormatting(QTextEdit.AutoFormattingFlag.AutoAll)
self.data_textEdit.setReadOnly(True)
- self.data_textEdit.setObjectName("data_textEdit")
+
self.gridLayout_2.addWidget(self.data_textEdit, 2, 0, 1, 1)
- self.verticalLayoutWidget_5 = QtWidgets.QWidget(parent=self.tab)
- self.verticalLayoutWidget_5.setGeometry(QtCore.QRect(900, 390, 21, 132))
- self.verticalLayoutWidget_5.setObjectName("verticalLayoutWidget_5")
- self.verticalLayout_5 = QtWidgets.QVBoxLayout(self.verticalLayoutWidget_5)
- self.verticalLayout_5.setSizeConstraint(QtWidgets.QLayout.SizeConstraint.SetMaximumSize)
+
+ self.verticalLayoutWidget_5 = QWidget(self.tab)
+ self.verticalLayoutWidget_5.setObjectName(u"verticalLayoutWidget_5")
+ self.verticalLayoutWidget_5.setGeometry(QRect(900, 390, 21, 132))
+ self.verticalLayout_5 = QVBoxLayout(self.verticalLayoutWidget_5)
+ self.verticalLayout_5.setObjectName(u"verticalLayout_5")
+ self.verticalLayout_5.setSizeConstraint(QLayout.SizeConstraint.SetMaximumSize)
self.verticalLayout_5.setContentsMargins(0, 0, 0, 0)
- self.verticalLayout_5.setObjectName("verticalLayout_5")
- self.command_edit_1 = QtWidgets.QPushButton(parent=self.verticalLayoutWidget_5)
- self.command_edit_1.setMinimumSize(QtCore.QSize(19, 28))
- font = QtGui.QFont()
+ self.command_edit_1 = QPushButton(self.verticalLayoutWidget_5)
+ self.command_edit_1.setObjectName(u"command_edit_1")
+ self.command_edit_1.setMinimumSize(QSize(19, 28))
+ font = QFont()
font.setPointSize(8)
self.command_edit_1.setFont(font)
- self.command_edit_1.setObjectName("command_edit_1")
+
self.verticalLayout_5.addWidget(self.command_edit_1)
- self.command_edit_2 = QtWidgets.QPushButton(parent=self.verticalLayoutWidget_5)
- self.command_edit_2.setMinimumSize(QtCore.QSize(19, 28))
- font = QtGui.QFont()
- font.setPointSize(8)
+
+ self.command_edit_2 = QPushButton(self.verticalLayoutWidget_5)
+ self.command_edit_2.setObjectName(u"command_edit_2")
+ self.command_edit_2.setMinimumSize(QSize(19, 28))
self.command_edit_2.setFont(font)
- self.command_edit_2.setObjectName("command_edit_2")
+
self.verticalLayout_5.addWidget(self.command_edit_2)
- self.command_edit_3 = QtWidgets.QPushButton(parent=self.verticalLayoutWidget_5)
- self.command_edit_3.setMinimumSize(QtCore.QSize(19, 28))
- font = QtGui.QFont()
- font.setPointSize(8)
+
+ self.command_edit_3 = QPushButton(self.verticalLayoutWidget_5)
+ self.command_edit_3.setObjectName(u"command_edit_3")
+ self.command_edit_3.setMinimumSize(QSize(19, 28))
self.command_edit_3.setFont(font)
- self.command_edit_3.setObjectName("command_edit_3")
+
self.verticalLayout_5.addWidget(self.command_edit_3)
- self.command_edit_4 = QtWidgets.QPushButton(parent=self.verticalLayoutWidget_5)
- self.command_edit_4.setMinimumSize(QtCore.QSize(19, 28))
- font = QtGui.QFont()
- font.setPointSize(8)
+
+ self.command_edit_4 = QPushButton(self.verticalLayoutWidget_5)
+ self.command_edit_4.setObjectName(u"command_edit_4")
+ self.command_edit_4.setMinimumSize(QSize(19, 28))
self.command_edit_4.setFont(font)
- self.command_edit_4.setObjectName("command_edit_4")
+
self.verticalLayout_5.addWidget(self.command_edit_4)
- self.verticalLayoutWidget_6 = QtWidgets.QWidget(parent=self.tab)
- self.verticalLayoutWidget_6.setGeometry(QtCore.QRect(730, 390, 171, 121))
- self.verticalLayoutWidget_6.setObjectName("verticalLayoutWidget_6")
- self.verticalLayout_6 = QtWidgets.QVBoxLayout(self.verticalLayoutWidget_6)
+
+ self.verticalLayoutWidget_6 = QWidget(self.tab)
+ self.verticalLayoutWidget_6.setObjectName(u"verticalLayoutWidget_6")
+ self.verticalLayoutWidget_6.setGeometry(QRect(730, 390, 171, 121))
+ self.verticalLayout_6 = QVBoxLayout(self.verticalLayoutWidget_6)
+ self.verticalLayout_6.setObjectName(u"verticalLayout_6")
self.verticalLayout_6.setContentsMargins(0, 0, 0, 0)
- self.verticalLayout_6.setObjectName("verticalLayout_6")
- self.saved_command_1 = QtWidgets.QPushButton(parent=self.verticalLayoutWidget_6)
- self.saved_command_1.setObjectName("saved_command_1")
+ self.saved_command_1 = QPushButton(self.verticalLayoutWidget_6)
+ self.saved_command_1.setObjectName(u"saved_command_1")
+
self.verticalLayout_6.addWidget(self.saved_command_1)
- self.saved_command_2 = QtWidgets.QPushButton(parent=self.verticalLayoutWidget_6)
- self.saved_command_2.setObjectName("saved_command_2")
+
+ self.saved_command_2 = QPushButton(self.verticalLayoutWidget_6)
+ self.saved_command_2.setObjectName(u"saved_command_2")
+
self.verticalLayout_6.addWidget(self.saved_command_2)
- self.saved_command_3 = QtWidgets.QPushButton(parent=self.verticalLayoutWidget_6)
- self.saved_command_3.setObjectName("saved_command_3")
+
+ self.saved_command_3 = QPushButton(self.verticalLayoutWidget_6)
+ self.saved_command_3.setObjectName(u"saved_command_3")
+
self.verticalLayout_6.addWidget(self.saved_command_3)
- self.saved_command_4 = QtWidgets.QPushButton(parent=self.verticalLayoutWidget_6)
- self.saved_command_4.setObjectName("saved_command_4")
+
+ self.saved_command_4 = QPushButton(self.verticalLayoutWidget_6)
+ self.saved_command_4.setObjectName(u"saved_command_4")
+
self.verticalLayout_6.addWidget(self.saved_command_4)
- self.verticalLayoutWidget_4 = QtWidgets.QWidget(parent=self.tab)
- self.verticalLayoutWidget_4.setGeometry(QtCore.QRect(730, 260, 191, 131))
- self.verticalLayoutWidget_4.setObjectName("verticalLayoutWidget_4")
- self.verticalLayout_4 = QtWidgets.QVBoxLayout(self.verticalLayoutWidget_4)
+
+ self.verticalLayoutWidget_4 = QWidget(self.tab)
+ self.verticalLayoutWidget_4.setObjectName(u"verticalLayoutWidget_4")
+ self.verticalLayoutWidget_4.setGeometry(QRect(730, 260, 191, 131))
+ self.verticalLayout_4 = QVBoxLayout(self.verticalLayoutWidget_4)
+ self.verticalLayout_4.setObjectName(u"verticalLayout_4")
self.verticalLayout_4.setContentsMargins(0, 0, 0, 0)
- self.verticalLayout_4.setObjectName("verticalLayout_4")
- self.label_11 = QtWidgets.QLabel(parent=self.verticalLayoutWidget_4)
- self.label_11.setObjectName("label_11")
+ self.label_11 = QLabel(self.verticalLayoutWidget_4)
+ self.label_11.setObjectName(u"label_11")
+
self.verticalLayout_4.addWidget(self.label_11)
- self.options_textEdit = QtWidgets.QTextEdit(parent=self.verticalLayoutWidget_4)
- self.options_textEdit.setFrameShape(QtWidgets.QFrame.Shape.Box)
- self.options_textEdit.setObjectName("options_textEdit")
+
+ self.options_textEdit = QTextEdit(self.verticalLayoutWidget_4)
+ self.options_textEdit.setObjectName(u"options_textEdit")
+ self.options_textEdit.setFrameShape(QFrame.Shape.Box)
+
self.verticalLayout_4.addWidget(self.options_textEdit)
- self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
- self.horizontalLayout_3.setObjectName("horizontalLayout_3")
- self.end_button = QtWidgets.QPushButton(parent=self.verticalLayoutWidget_4)
- font = QtGui.QFont()
- font.setPointSize(9)
- font.setBold(True)
- self.end_button.setFont(font)
+
+ self.horizontalLayout_3 = QHBoxLayout()
+ self.horizontalLayout_3.setObjectName(u"horizontalLayout_3")
+ self.end_button = QPushButton(self.verticalLayoutWidget_4)
+ self.end_button.setObjectName(u"end_button")
+ font1 = QFont()
+ font1.setPointSize(9)
+ font1.setBold(True)
+ self.end_button.setFont(font1)
self.end_button.setAutoFillBackground(False)
- self.end_button.setStyleSheet("background-color:qlineargradient(spread:pad, x1:0.409, y1:0, x2:0.430448, y2:1, stop:0 rgba(255, 0, 0, 255), stop:1 rgba(255, 255, 255, 255))")
- self.end_button.setLocale(QtCore.QLocale(QtCore.QLocale.Language.English, QtCore.QLocale.Country.UnitedStates))
- self.end_button.setObjectName("end_button")
+ self.end_button.setStyleSheet(u"")
+ self.end_button.setLocale(QLocale(QLocale.English, QLocale.UnitedStates))
+
self.horizontalLayout_3.addWidget(self.end_button)
- self.start_button = QtWidgets.QPushButton(parent=self.verticalLayoutWidget_4)
- font = QtGui.QFont()
- font.setPointSize(9)
- font.setBold(True)
- self.start_button.setFont(font)
+
+ self.start_button = QPushButton(self.verticalLayoutWidget_4)
+ self.start_button.setObjectName(u"start_button")
+ self.start_button.setFont(font1)
self.start_button.setAutoFillBackground(False)
- self.start_button.setStyleSheet("background-color:qlineargradient(spread:pad, x1:0.556, y1:0, x2:0.550444, y2:1, stop:0 rgba(0, 146, 0, 255), stop:1 rgba(255, 255, 255, 255))")
- self.start_button.setObjectName("start_button")
+ self.start_button.setStyleSheet(u"")
+
self.horizontalLayout_3.addWidget(self.start_button)
+
+
self.verticalLayout_4.addLayout(self.horizontalLayout_3)
- self.formLayoutWidget_3 = QtWidgets.QWidget(parent=self.tab)
- self.formLayoutWidget_3.setGeometry(QtCore.QRect(730, 230, 191, 21))
- self.formLayoutWidget_3.setObjectName("formLayoutWidget_3")
- self.formLayout_3 = QtWidgets.QFormLayout(self.formLayoutWidget_3)
+
+ self.formLayoutWidget_3 = QWidget(self.tab)
+ self.formLayoutWidget_3.setObjectName(u"formLayoutWidget_3")
+ self.formLayoutWidget_3.setGeometry(QRect(730, 230, 191, 21))
+ self.formLayout_3 = QFormLayout(self.formLayoutWidget_3)
+ self.formLayout_3.setObjectName(u"formLayout_3")
self.formLayout_3.setContentsMargins(0, 0, 0, 0)
- self.formLayout_3.setObjectName("formLayout_3")
- self.label_8 = QtWidgets.QLabel(parent=self.formLayoutWidget_3)
- font = QtGui.QFont()
- font.setFamily("Arial")
- font.setPointSize(9)
- font.setBold(False)
- self.label_8.setFont(font)
- self.label_8.setObjectName("label_8")
- self.formLayout_3.setWidget(0, QtWidgets.QFormLayout.ItemRole.LabelRole, self.label_8)
- self.status_label = QtWidgets.QLabel(parent=self.formLayoutWidget_3)
- font = QtGui.QFont()
- font.setFamily("Arial")
- font.setPointSize(9)
- font.setBold(False)
- self.status_label.setFont(font)
- self.status_label.setStyleSheet("")
- self.status_label.setObjectName("status_label")
- self.formLayout_3.setWidget(0, QtWidgets.QFormLayout.ItemRole.FieldRole, self.status_label)
- self.formLayoutWidget_4 = QtWidgets.QWidget(parent=self.tab)
- self.formLayoutWidget_4.setGeometry(QtCore.QRect(732, 28, 191, 231))
- self.formLayoutWidget_4.setObjectName("formLayoutWidget_4")
- self.formLayout_4 = QtWidgets.QFormLayout(self.formLayoutWidget_4)
+ self.label_8 = QLabel(self.formLayoutWidget_3)
+ self.label_8.setObjectName(u"label_8")
+ font2 = QFont()
+ font2.setFamilies([u"Arial"])
+ font2.setPointSize(9)
+ font2.setBold(False)
+ self.label_8.setFont(font2)
+
+ self.formLayout_3.setWidget(0, QFormLayout.LabelRole, self.label_8)
+
+ self.status_label = QLabel(self.formLayoutWidget_3)
+ self.status_label.setObjectName(u"status_label")
+ self.status_label.setFont(font2)
+ self.status_label.setStyleSheet(u"")
+
+ self.formLayout_3.setWidget(0, QFormLayout.FieldRole, self.status_label)
+
+ self.formLayoutWidget_4 = QWidget(self.tab)
+ self.formLayoutWidget_4.setObjectName(u"formLayoutWidget_4")
+ self.formLayoutWidget_4.setGeometry(QRect(732, 28, 191, 231))
+ self.formLayout_4 = QFormLayout(self.formLayoutWidget_4)
+ self.formLayout_4.setObjectName(u"formLayout_4")
self.formLayout_4.setContentsMargins(0, 0, 0, 0)
- self.formLayout_4.setObjectName("formLayout_4")
- self.label_16 = QtWidgets.QLabel(parent=self.formLayoutWidget_4)
- self.label_16.setObjectName("label_16")
- self.formLayout_4.setWidget(0, QtWidgets.QFormLayout.ItemRole.LabelRole, self.label_16)
- self.port_comboBox = QtWidgets.QComboBox(parent=self.formLayoutWidget_4)
- self.port_comboBox.setObjectName("port_comboBox")
- self.formLayout_4.setWidget(0, QtWidgets.QFormLayout.ItemRole.FieldRole, self.port_comboBox)
- self.label_17 = QtWidgets.QLabel(parent=self.formLayoutWidget_4)
- self.label_17.setObjectName("label_17")
- self.formLayout_4.setWidget(1, QtWidgets.QFormLayout.ItemRole.LabelRole, self.label_17)
- self.baudrate_comboBox = QtWidgets.QComboBox(parent=self.formLayoutWidget_4)
- self.baudrate_comboBox.setObjectName("baudrate_comboBox")
+ self.label_16 = QLabel(self.formLayoutWidget_4)
+ self.label_16.setObjectName(u"label_16")
+
+ self.formLayout_4.setWidget(0, QFormLayout.LabelRole, self.label_16)
+
+ self.port_comboBox = QComboBox(self.formLayoutWidget_4)
+ self.port_comboBox.setObjectName(u"port_comboBox")
+
+ self.formLayout_4.setWidget(0, QFormLayout.FieldRole, self.port_comboBox)
+
+ self.label_17 = QLabel(self.formLayoutWidget_4)
+ self.label_17.setObjectName(u"label_17")
+
+ self.formLayout_4.setWidget(1, QFormLayout.LabelRole, self.label_17)
+
+ self.baudrate_comboBox = QComboBox(self.formLayoutWidget_4)
self.baudrate_comboBox.addItem("")
self.baudrate_comboBox.addItem("")
self.baudrate_comboBox.addItem("")
@@ -188,22 +231,30 @@ def setupUi(self, main_window):
self.baudrate_comboBox.addItem("")
self.baudrate_comboBox.addItem("")
self.baudrate_comboBox.addItem("")
- self.formLayout_4.setWidget(1, QtWidgets.QFormLayout.ItemRole.FieldRole, self.baudrate_comboBox)
- self.label_18 = QtWidgets.QLabel(parent=self.formLayoutWidget_4)
- self.label_18.setObjectName("label_18")
- self.formLayout_4.setWidget(2, QtWidgets.QFormLayout.ItemRole.LabelRole, self.label_18)
- self.len_comboBox = QtWidgets.QComboBox(parent=self.formLayoutWidget_4)
- self.len_comboBox.setObjectName("len_comboBox")
+ self.baudrate_comboBox.setObjectName(u"baudrate_comboBox")
+
+ self.formLayout_4.setWidget(1, QFormLayout.FieldRole, self.baudrate_comboBox)
+
+ self.label_18 = QLabel(self.formLayoutWidget_4)
+ self.label_18.setObjectName(u"label_18")
+
+ self.formLayout_4.setWidget(2, QFormLayout.LabelRole, self.label_18)
+
+ self.len_comboBox = QComboBox(self.formLayoutWidget_4)
self.len_comboBox.addItem("")
self.len_comboBox.addItem("")
self.len_comboBox.addItem("")
self.len_comboBox.addItem("")
- self.formLayout_4.setWidget(2, QtWidgets.QFormLayout.ItemRole.FieldRole, self.len_comboBox)
- self.label_19 = QtWidgets.QLabel(parent=self.formLayoutWidget_4)
- self.label_19.setObjectName("label_19")
- self.formLayout_4.setWidget(3, QtWidgets.QFormLayout.ItemRole.LabelRole, self.label_19)
- self.timeout_comboBox = QtWidgets.QComboBox(parent=self.formLayoutWidget_4)
- self.timeout_comboBox.setObjectName("timeout_comboBox")
+ self.len_comboBox.setObjectName(u"len_comboBox")
+
+ self.formLayout_4.setWidget(2, QFormLayout.FieldRole, self.len_comboBox)
+
+ self.label_19 = QLabel(self.formLayoutWidget_4)
+ self.label_19.setObjectName(u"label_19")
+
+ self.formLayout_4.setWidget(3, QFormLayout.LabelRole, self.label_19)
+
+ self.timeout_comboBox = QComboBox(self.formLayoutWidget_4)
self.timeout_comboBox.addItem("")
self.timeout_comboBox.addItem("")
self.timeout_comboBox.addItem("")
@@ -212,209 +263,262 @@ def setupUi(self, main_window):
self.timeout_comboBox.addItem("")
self.timeout_comboBox.addItem("")
self.timeout_comboBox.addItem("")
- self.formLayout_4.setWidget(3, QtWidgets.QFormLayout.ItemRole.FieldRole, self.timeout_comboBox)
- self.label_20 = QtWidgets.QLabel(parent=self.formLayoutWidget_4)
- self.label_20.setObjectName("label_20")
- self.formLayout_4.setWidget(4, QtWidgets.QFormLayout.ItemRole.LabelRole, self.label_20)
- self.parity_comboBox = QtWidgets.QComboBox(parent=self.formLayoutWidget_4)
- self.parity_comboBox.setObjectName("parity_comboBox")
+ self.timeout_comboBox.setObjectName(u"timeout_comboBox")
+
+ self.formLayout_4.setWidget(3, QFormLayout.FieldRole, self.timeout_comboBox)
+
+ self.label_20 = QLabel(self.formLayoutWidget_4)
+ self.label_20.setObjectName(u"label_20")
+
+ self.formLayout_4.setWidget(4, QFormLayout.LabelRole, self.label_20)
+
+ self.parity_comboBox = QComboBox(self.formLayoutWidget_4)
self.parity_comboBox.addItem("")
self.parity_comboBox.addItem("")
self.parity_comboBox.addItem("")
self.parity_comboBox.addItem("")
self.parity_comboBox.addItem("")
- self.formLayout_4.setWidget(4, QtWidgets.QFormLayout.ItemRole.FieldRole, self.parity_comboBox)
- self.label_21 = QtWidgets.QLabel(parent=self.formLayoutWidget_4)
- self.label_21.setObjectName("label_21")
- self.formLayout_4.setWidget(5, QtWidgets.QFormLayout.ItemRole.LabelRole, self.label_21)
- self.bit_comboBox = QtWidgets.QComboBox(parent=self.formLayoutWidget_4)
- self.bit_comboBox.setObjectName("bit_comboBox")
+ self.parity_comboBox.setObjectName(u"parity_comboBox")
+
+ self.formLayout_4.setWidget(4, QFormLayout.FieldRole, self.parity_comboBox)
+
+ self.label_21 = QLabel(self.formLayoutWidget_4)
+ self.label_21.setObjectName(u"label_21")
+
+ self.formLayout_4.setWidget(5, QFormLayout.LabelRole, self.label_21)
+
+ self.bit_comboBox = QComboBox(self.formLayoutWidget_4)
self.bit_comboBox.addItem("")
self.bit_comboBox.addItem("")
self.bit_comboBox.addItem("")
- self.formLayout_4.setWidget(5, QtWidgets.QFormLayout.ItemRole.FieldRole, self.bit_comboBox)
- self.label_24 = QtWidgets.QLabel(parent=self.formLayoutWidget_4)
- self.label_24.setObjectName("label_24")
- self.formLayout_4.setWidget(6, QtWidgets.QFormLayout.ItemRole.LabelRole, self.label_24)
- self.flow_comboBox = QtWidgets.QComboBox(parent=self.formLayoutWidget_4)
- self.flow_comboBox.setObjectName("flow_comboBox")
+ self.bit_comboBox.setObjectName(u"bit_comboBox")
+
+ self.formLayout_4.setWidget(5, QFormLayout.FieldRole, self.bit_comboBox)
+
+ self.label_24 = QLabel(self.formLayoutWidget_4)
+ self.label_24.setObjectName(u"label_24")
+
+ self.formLayout_4.setWidget(6, QFormLayout.LabelRole, self.label_24)
+
+ self.flow_comboBox = QComboBox(self.formLayoutWidget_4)
self.flow_comboBox.addItem("")
self.flow_comboBox.addItem("")
self.flow_comboBox.addItem("")
self.flow_comboBox.addItem("")
- self.formLayout_4.setWidget(6, QtWidgets.QFormLayout.ItemRole.FieldRole, self.flow_comboBox)
- self.label_46 = QtWidgets.QLabel(parent=self.tab)
- self.label_46.setGeometry(QtCore.QRect(740, 10, 151, 16))
- self.label_46.setObjectName("label_46")
- self.refresh_button = QtWidgets.QPushButton(parent=self.tab)
- self.refresh_button.setGeometry(QtCore.QRect(890, 0, 31, 28))
- self.refresh_button.setObjectName("refresh_button")
- self.horizontalLayoutWidget = QtWidgets.QWidget(parent=self.tab)
- self.horizontalLayoutWidget.setGeometry(QtCore.QRect(0, 520, 901, 31))
- self.horizontalLayoutWidget.setObjectName("horizontalLayoutWidget")
- self.horizontalLayout = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget)
- self.horizontalLayout.setSizeConstraint(QtWidgets.QLayout.SizeConstraint.SetNoConstraint)
- self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
+ self.flow_comboBox.setObjectName(u"flow_comboBox")
+
+ self.formLayout_4.setWidget(6, QFormLayout.FieldRole, self.flow_comboBox)
+
+ self.label_46 = QLabel(self.tab)
+ self.label_46.setObjectName(u"label_46")
+ self.label_46.setGeometry(QRect(740, 10, 151, 16))
+ self.refresh_button = QPushButton(self.tab)
+ self.refresh_button.setObjectName(u"refresh_button")
+ self.refresh_button.setGeometry(QRect(890, 0, 31, 28))
+ self.horizontalLayoutWidget = QWidget(self.tab)
+ self.horizontalLayoutWidget.setObjectName(u"horizontalLayoutWidget")
+ self.horizontalLayoutWidget.setGeometry(QRect(0, 520, 901, 31))
+ self.horizontalLayout = QHBoxLayout(self.horizontalLayoutWidget)
self.horizontalLayout.setSpacing(1)
- self.horizontalLayout.setObjectName("horizontalLayout")
- self.send_data_text = QtWidgets.QTextEdit(parent=self.horizontalLayoutWidget)
- sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Minimum)
- sizePolicy.setHorizontalStretch(5)
- sizePolicy.setVerticalStretch(5)
- sizePolicy.setHeightForWidth(self.send_data_text.sizePolicy().hasHeightForWidth())
- self.send_data_text.setSizePolicy(sizePolicy)
- self.send_data_text.setMaximumSize(QtCore.QSize(465, 28))
- self.send_data_text.setFrameShape(QtWidgets.QFrame.Shape.Box)
- self.send_data_text.setFrameShadow(QtWidgets.QFrame.Shadow.Plain)
+ self.horizontalLayout.setObjectName(u"horizontalLayout")
+ self.horizontalLayout.setSizeConstraint(QLayout.SizeConstraint.SetNoConstraint)
+ self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
+ self.send_data_text = QTextEdit(self.horizontalLayoutWidget)
+ self.send_data_text.setObjectName(u"send_data_text")
+ sizePolicy1 = QSizePolicy(QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Minimum)
+ sizePolicy1.setHorizontalStretch(5)
+ sizePolicy1.setVerticalStretch(5)
+ sizePolicy1.setHeightForWidth(self.send_data_text.sizePolicy().hasHeightForWidth())
+ self.send_data_text.setSizePolicy(sizePolicy1)
+ self.send_data_text.setMaximumSize(QSize(465, 28))
+ self.send_data_text.setFrameShape(QFrame.Shape.Box)
+ self.send_data_text.setFrameShadow(QFrame.Shadow.Plain)
self.send_data_text.setAcceptRichText(False)
- self.send_data_text.setObjectName("send_data_text")
+
self.horizontalLayout.addWidget(self.send_data_text)
- self.send_button = QtWidgets.QPushButton(parent=self.horizontalLayoutWidget)
- self.send_button.setObjectName("send_button")
+
+ self.send_button = QPushButton(self.horizontalLayoutWidget)
+ self.send_button.setObjectName(u"send_button")
+
self.horizontalLayout.addWidget(self.send_button)
- self.save_txt_button = QtWidgets.QPushButton(parent=self.horizontalLayoutWidget)
- self.save_txt_button.setObjectName("save_txt_button")
+
+ self.save_txt_button = QPushButton(self.horizontalLayoutWidget)
+ self.save_txt_button.setObjectName(u"save_txt_button")
+
self.horizontalLayout.addWidget(self.save_txt_button)
- self.view_change = QtWidgets.QPushButton(parent=self.horizontalLayoutWidget)
- font = QtGui.QFont()
- font.setPointSize(9)
- font.setBold(True)
- self.view_change.setFont(font)
- self.view_change.setObjectName("view_change")
+
+ self.view_change = QPushButton(self.horizontalLayoutWidget)
+ self.view_change.setObjectName(u"view_change")
+ self.view_change.setFont(font1)
+
self.horizontalLayout.addWidget(self.view_change)
- self.night_mode = QtWidgets.QPushButton(parent=self.horizontalLayoutWidget)
- self.night_mode.setObjectName("night_mode")
+
+ self.night_mode = QPushButton(self.horizontalLayoutWidget)
+ self.night_mode.setObjectName(u"night_mode")
+
self.horizontalLayout.addWidget(self.night_mode)
- self.clear_buffer_button = QtWidgets.QPushButton(parent=self.horizontalLayoutWidget)
- self.clear_buffer_button.setObjectName("clear_buffer_button")
+
+ self.clear_buffer_button = QPushButton(self.horizontalLayoutWidget)
+ self.clear_buffer_button.setObjectName(u"clear_buffer_button")
+
self.horizontalLayout.addWidget(self.clear_buffer_button)
+
self.tabWidget.addTab(self.tab, "")
- self.tab_2 = QtWidgets.QWidget()
- self.tab_2.setObjectName("tab_2")
- self.textEdit_3 = QtWidgets.QTextEdit(parent=self.tab_2)
- self.textEdit_3.setGeometry(QtCore.QRect(10, 10, 911, 491))
+ self.tab_2 = QWidget()
+ self.tab_2.setObjectName(u"tab_2")
+ self.textEdit_3 = QTextEdit(self.tab_2)
+ self.textEdit_3.setObjectName(u"textEdit_3")
+ self.textEdit_3.setGeometry(QRect(10, 10, 911, 491))
self.textEdit_3.setUndoRedoEnabled(False)
self.textEdit_3.setReadOnly(True)
self.textEdit_3.setAcceptRichText(False)
- self.textEdit_3.setObjectName("textEdit_3")
- self.label_3 = QtWidgets.QLabel(parent=self.tab_2)
- self.label_3.setGeometry(QtCore.QRect(590, 530, 101, 16))
- self.label_3.setObjectName("label_3")
- self.label_2 = QtWidgets.QLabel(parent=self.tab_2)
- self.label_2.setGeometry(QtCore.QRect(150, 530, 331, 16))
+ self.label_3 = QLabel(self.tab_2)
+ self.label_3.setObjectName(u"label_3")
+ self.label_3.setGeometry(QRect(590, 530, 101, 16))
+ self.label_2 = QLabel(self.tab_2)
+ self.label_2.setObjectName(u"label_2")
+ self.label_2.setGeometry(QRect(150, 530, 331, 16))
self.label_2.setOpenExternalLinks(True)
- self.label_2.setObjectName("label_2")
self.tabWidget.addTab(self.tab_2, "")
main_window.setCentralWidget(self.centralwidget)
- self.actionAna_Ekran = QtGui.QAction(parent=main_window)
- self.actionAna_Ekran.setObjectName("actionAna_Ekran")
- self.actionHelp = QtGui.QAction(parent=main_window)
- self.actionHelp.setObjectName("actionHelp")
self.retranslateUi(main_window)
+
self.tabWidget.setCurrentIndex(0)
- QtCore.QMetaObject.connectSlotsByName(main_window)
+
+
+ QMetaObject.connectSlotsByName(main_window)
+ # setupUi
def retranslateUi(self, main_window):
- _translate = QtCore.QCoreApplication.translate
- main_window.setWindowTitle(_translate("main_window", "AFCOM Client (A free COM port data transfer client)"))
- main_window.setStatusTip(_translate("main_window", "Mehmet Cagri Aksoy"))
- main_window.setWhatsThis(_translate("main_window", "Serial Communication Program Mehmet Cagri Aksoy"))
- self.label_23.setText(_translate("main_window", "Gathering Data (Rx)"))
- self.command_edit_1.setText(_translate("main_window", "..."))
- self.command_edit_2.setText(_translate("main_window", "..."))
- self.command_edit_3.setText(_translate("main_window", "..."))
- self.command_edit_4.setText(_translate("main_window", "..."))
- self.saved_command_1.setText(_translate("main_window", "Command 1"))
- self.saved_command_2.setText(_translate("main_window", "Command 2"))
- self.saved_command_3.setText(_translate("main_window", "Command 3"))
- self.saved_command_4.setText(_translate("main_window", "Command 4"))
- self.label_11.setText(_translate("main_window", "Connection Options:"))
- self.end_button.setText(_translate("main_window", "STOP"))
- self.start_button.setText(_translate("main_window", "START"))
- self.label_8.setText(_translate("main_window", "Port Status :"))
- self.status_label.setText(_translate("main_window", "Not Connected"))
- self.label_16.setText(_translate("main_window", "Selected Port:"))
- self.label_17.setText(_translate("main_window", "Baud Rate:"))
- self.baudrate_comboBox.setItemText(0, _translate("main_window", "9600"))
- self.baudrate_comboBox.setItemText(1, _translate("main_window", "57600"))
- self.baudrate_comboBox.setItemText(2, _translate("main_window", "115200"))
- self.baudrate_comboBox.setItemText(3, _translate("main_window", "110"))
- self.baudrate_comboBox.setItemText(4, _translate("main_window", "300"))
- self.baudrate_comboBox.setItemText(5, _translate("main_window", "1200"))
- self.baudrate_comboBox.setItemText(6, _translate("main_window", "2400"))
- self.baudrate_comboBox.setItemText(7, _translate("main_window", "4800"))
- self.baudrate_comboBox.setItemText(8, _translate("main_window", "19200"))
- self.baudrate_comboBox.setItemText(9, _translate("main_window", "38400"))
- self.label_18.setText(_translate("main_window", "Length (B):"))
- self.len_comboBox.setItemText(0, _translate("main_window", "8"))
- self.len_comboBox.setItemText(1, _translate("main_window", "7"))
- self.len_comboBox.setItemText(2, _translate("main_window", "6"))
- self.len_comboBox.setItemText(3, _translate("main_window", "5"))
- self.label_19.setText(_translate("main_window", "Timeout:"))
- self.timeout_comboBox.setItemText(0, _translate("main_window", "2"))
- self.timeout_comboBox.setItemText(1, _translate("main_window", "3"))
- self.timeout_comboBox.setItemText(2, _translate("main_window", "4"))
- self.timeout_comboBox.setItemText(3, _translate("main_window", "5"))
- self.timeout_comboBox.setItemText(4, _translate("main_window", "10"))
- self.timeout_comboBox.setItemText(5, _translate("main_window", "30"))
- self.timeout_comboBox.setItemText(6, _translate("main_window", "50"))
- self.timeout_comboBox.setItemText(7, _translate("main_window", "100"))
- self.label_20.setText(_translate("main_window", "Parity:"))
- self.parity_comboBox.setItemText(0, _translate("main_window", "None"))
- self.parity_comboBox.setItemText(1, _translate("main_window", "Even"))
- self.parity_comboBox.setItemText(2, _translate("main_window", "Odd"))
- self.parity_comboBox.setItemText(3, _translate("main_window", "Mark"))
- self.parity_comboBox.setItemText(4, _translate("main_window", "Space"))
- self.label_21.setText(_translate("main_window", "StopBits:"))
- self.bit_comboBox.setItemText(0, _translate("main_window", "1"))
- self.bit_comboBox.setItemText(1, _translate("main_window", "1.5"))
- self.bit_comboBox.setItemText(2, _translate("main_window", "2"))
- self.label_24.setText(_translate("main_window", "Flow Control:"))
- self.flow_comboBox.setItemText(0, _translate("main_window", "None"))
- self.flow_comboBox.setItemText(1, _translate("main_window", "Xon/Xoff"))
- self.flow_comboBox.setItemText(2, _translate("main_window", "RTS/CTS"))
- self.flow_comboBox.setItemText(3, _translate("main_window", "DSR/DTR"))
- self.label_46.setText(_translate("main_window", "Settings: Refresh:"))
- self.refresh_button.setText(_translate("main_window", "↻"))
- self.send_data_text.setPlaceholderText(_translate("main_window", "Please enter the data want to sent..."))
- self.send_button.setText(_translate("main_window", "SEND"))
- self.save_txt_button.setToolTip(_translate("main_window", "Save the output"))
- self.save_txt_button.setStatusTip(_translate("main_window", "Save the output"))
- self.save_txt_button.setWhatsThis(_translate("main_window", "Save the output"))
- self.save_txt_button.setText(_translate("main_window", "Save as .txt"))
- self.view_change.setToolTip(_translate("main_window", "Click Here to go to the Simple View"))
- self.view_change.setStatusTip(_translate("main_window", "Click Here to go to the Simple View"))
- self.view_change.setWhatsThis(_translate("main_window", "Click Here to go to the Simple View"))
- self.view_change.setText(_translate("main_window", "<<"))
- self.night_mode.setText(_translate("main_window", "🌘 Night Mode"))
- self.clear_buffer_button.setText(_translate("main_window", "Clear Buffer"))
- self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("main_window", "Main Page"))
- self.textEdit_3.setHtml(_translate("main_window", "\n"
+ main_window.setWindowTitle(QCoreApplication.translate("main_window", u"AFCOM Client (A free COM port data transfer client)", None))
+#if QT_CONFIG(statustip)
+ main_window.setStatusTip(QCoreApplication.translate("main_window", u"Mehmet Cagri Aksoy", None))
+#endif // QT_CONFIG(statustip)
+#if QT_CONFIG(whatsthis)
+ main_window.setWhatsThis(QCoreApplication.translate("main_window", u"Serial Communication Program Mehmet Cagri Aksoy", None))
+#endif // QT_CONFIG(whatsthis)
+ self.actionAna_Ekran.setText(QCoreApplication.translate("main_window", u"Ana Ekran", None))
+ self.actionHelp.setText(QCoreApplication.translate("main_window", u"Help", None))
+ self.label_23.setText(QCoreApplication.translate("main_window", u"Gathering Data (Rx)", None))
+ self.command_edit_1.setText(QCoreApplication.translate("main_window", u"...", None))
+ self.command_edit_2.setText(QCoreApplication.translate("main_window", u"...", None))
+ self.command_edit_3.setText(QCoreApplication.translate("main_window", u"...", None))
+ self.command_edit_4.setText(QCoreApplication.translate("main_window", u"...", None))
+ self.saved_command_1.setText(QCoreApplication.translate("main_window", u"Command 1", None))
+ self.saved_command_2.setText(QCoreApplication.translate("main_window", u"Command 2", None))
+ self.saved_command_3.setText(QCoreApplication.translate("main_window", u"Command 3", None))
+ self.saved_command_4.setText(QCoreApplication.translate("main_window", u"Command 4", None))
+ self.label_11.setText(QCoreApplication.translate("main_window", u"Connection Options:", None))
+ self.end_button.setText(QCoreApplication.translate("main_window", u"STOP", None))
+ self.start_button.setText(QCoreApplication.translate("main_window", u"START", None))
+ self.label_8.setText(QCoreApplication.translate("main_window", u"Port Status :", None))
+ self.status_label.setText(QCoreApplication.translate("main_window", u"Not Connected", None))
+ self.label_16.setText(QCoreApplication.translate("main_window", u"Selected Port:", None))
+ self.label_17.setText(QCoreApplication.translate("main_window", u"Baud Rate:", None))
+ self.baudrate_comboBox.setItemText(0, QCoreApplication.translate("main_window", u"9600", None))
+ self.baudrate_comboBox.setItemText(1, QCoreApplication.translate("main_window", u"57600", None))
+ self.baudrate_comboBox.setItemText(2, QCoreApplication.translate("main_window", u"115200", None))
+ self.baudrate_comboBox.setItemText(3, QCoreApplication.translate("main_window", u"110", None))
+ self.baudrate_comboBox.setItemText(4, QCoreApplication.translate("main_window", u"300", None))
+ self.baudrate_comboBox.setItemText(5, QCoreApplication.translate("main_window", u"1200", None))
+ self.baudrate_comboBox.setItemText(6, QCoreApplication.translate("main_window", u"2400", None))
+ self.baudrate_comboBox.setItemText(7, QCoreApplication.translate("main_window", u"4800", None))
+ self.baudrate_comboBox.setItemText(8, QCoreApplication.translate("main_window", u"19200", None))
+ self.baudrate_comboBox.setItemText(9, QCoreApplication.translate("main_window", u"38400", None))
+
+ self.label_18.setText(QCoreApplication.translate("main_window", u"Length (B):", None))
+ self.len_comboBox.setItemText(0, QCoreApplication.translate("main_window", u"8", None))
+ self.len_comboBox.setItemText(1, QCoreApplication.translate("main_window", u"7", None))
+ self.len_comboBox.setItemText(2, QCoreApplication.translate("main_window", u"6", None))
+ self.len_comboBox.setItemText(3, QCoreApplication.translate("main_window", u"5", None))
+
+ self.label_19.setText(QCoreApplication.translate("main_window", u"Timeout:", None))
+ self.timeout_comboBox.setItemText(0, QCoreApplication.translate("main_window", u"2", None))
+ self.timeout_comboBox.setItemText(1, QCoreApplication.translate("main_window", u"3", None))
+ self.timeout_comboBox.setItemText(2, QCoreApplication.translate("main_window", u"4", None))
+ self.timeout_comboBox.setItemText(3, QCoreApplication.translate("main_window", u"5", None))
+ self.timeout_comboBox.setItemText(4, QCoreApplication.translate("main_window", u"10", None))
+ self.timeout_comboBox.setItemText(5, QCoreApplication.translate("main_window", u"30", None))
+ self.timeout_comboBox.setItemText(6, QCoreApplication.translate("main_window", u"50", None))
+ self.timeout_comboBox.setItemText(7, QCoreApplication.translate("main_window", u"100", None))
+
+ self.label_20.setText(QCoreApplication.translate("main_window", u"Parity:", None))
+ self.parity_comboBox.setItemText(0, QCoreApplication.translate("main_window", u"None", None))
+ self.parity_comboBox.setItemText(1, QCoreApplication.translate("main_window", u"Even", None))
+ self.parity_comboBox.setItemText(2, QCoreApplication.translate("main_window", u"Odd", None))
+ self.parity_comboBox.setItemText(3, QCoreApplication.translate("main_window", u"Mark", None))
+ self.parity_comboBox.setItemText(4, QCoreApplication.translate("main_window", u"Space", None))
+
+ self.label_21.setText(QCoreApplication.translate("main_window", u"StopBits:", None))
+ self.bit_comboBox.setItemText(0, QCoreApplication.translate("main_window", u"1", None))
+ self.bit_comboBox.setItemText(1, QCoreApplication.translate("main_window", u"1.5", None))
+ self.bit_comboBox.setItemText(2, QCoreApplication.translate("main_window", u"2", None))
+
+ self.label_24.setText(QCoreApplication.translate("main_window", u"Flow Control:", None))
+ self.flow_comboBox.setItemText(0, QCoreApplication.translate("main_window", u"None", None))
+ self.flow_comboBox.setItemText(1, QCoreApplication.translate("main_window", u"Xon/Xoff", None))
+ self.flow_comboBox.setItemText(2, QCoreApplication.translate("main_window", u"RTS/CTS", None))
+ self.flow_comboBox.setItemText(3, QCoreApplication.translate("main_window", u"DSR/DTR", None))
+
+ self.label_46.setText(QCoreApplication.translate("main_window", u"Settings: Refresh:", None))
+ self.refresh_button.setText(QCoreApplication.translate("main_window", u"\u21bb", None))
+ self.send_data_text.setPlaceholderText(QCoreApplication.translate("main_window", u"Please enter the data want to sent...", None))
+ self.send_button.setText(QCoreApplication.translate("main_window", u"SEND", None))
+#if QT_CONFIG(tooltip)
+ self.save_txt_button.setToolTip(QCoreApplication.translate("main_window", u"Save the output", None))
+#endif // QT_CONFIG(tooltip)
+#if QT_CONFIG(statustip)
+ self.save_txt_button.setStatusTip(QCoreApplication.translate("main_window", u"Save the output", None))
+#endif // QT_CONFIG(statustip)
+#if QT_CONFIG(whatsthis)
+ self.save_txt_button.setWhatsThis(QCoreApplication.translate("main_window", u"Save the output", None))
+#endif // QT_CONFIG(whatsthis)
+ self.save_txt_button.setText(QCoreApplication.translate("main_window", u"Save as .txt", None))
+#if QT_CONFIG(tooltip)
+ self.view_change.setToolTip(QCoreApplication.translate("main_window", u"Click Here to go to the Simple View", None))
+#endif // QT_CONFIG(tooltip)
+#if QT_CONFIG(statustip)
+ self.view_change.setStatusTip(QCoreApplication.translate("main_window", u"Click Here to go to the Simple View", None))
+#endif // QT_CONFIG(statustip)
+#if QT_CONFIG(whatsthis)
+ self.view_change.setWhatsThis(QCoreApplication.translate("main_window", u"Click Here to go to the Simple View", None))
+#endif // QT_CONFIG(whatsthis)
+ self.view_change.setText(QCoreApplication.translate("main_window", u"<<", None))
+ self.night_mode.setText(QCoreApplication.translate("main_window", u"\ud83c\udf18 Night Mode", None))
+ self.clear_buffer_button.setText(QCoreApplication.translate("main_window", u"Clear Buffer", None))
+ self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), QCoreApplication.translate("main_window", u"Main Page", None))
+ self.textEdit_3.setHtml(QCoreApplication.translate("main_window", u"\n"
" \n"
+"\n"
"Information
\n"
"
\n"
-"The AFCOM (aka Serial communication GUI program) tool is a software application that allows users to send and receive data via the serial port (COM port) of their computer. The tool can be used for various purposes, such as testing, debugging, or communicating with other devices that use the serial protocol.
\n"
+"The AFCOM (aka Serial communication GUI program) tool is a software application that allows users to send and receive data via the serial port (COM port) of their computer. The tool can be used for various purposes, such as testing, debugging, or communicating with other devices that use the serial protocol.
\n"
"
\n"
"Features
\n"
"
\n"
-"The COM port tool has the following features: It supports multiple COM ports and can detect the available ports automatically. It allows users to configure the parameters of the serial communication, such as baud rate. It provides a user-friendly interface that shows the transmitted and received data in hexadecimal, decimal, ASCII, or binary formats. It allows users to save and load the data to and from files.
\n"
+"The COM port tool has the following features: It supports multiple COM ports and can detect the available ports automatically. It allows users to configure the parameters of the serial communication, such as baud rate. It provides a user-friendly interface that shows the transmitted and received data in hexadecimal, decimal, ASCII, or binary formats. It allows users to save and load the data to and from files.
\n"
"
\n"
"
\n"
-"
\n"
+"
\n"
"
\n"
"Legal Information
\n"
"This application incorporates Qt for Python (PySide), which is licensed under the GNU Lesser General Public License version 3 (LGPLv3). By using this software, you agree to comply with the terms of the LGPLv3 license. For more information about Qt for Python, visit https://www.qt.io/qt-for-python. A copy of the LGPLv3 license is included with this application.
\n"
-"
\n"
-"
"))
- self.label_3.setText(_translate("main_window", "Version 2024.12"))
- self.label_2.setToolTip(_translate("main_window", "