add btn show/hide for wallet encryptpass
This commit is contained in:
parent
855de4ca61
commit
886b9fa87e
116
application.py
116
application.py
@ -72,6 +72,7 @@ from PySide6.QtPdf import QPdfDocument
|
|||||||
from PySide6.QtPdfWidgets import QPdfView
|
from PySide6.QtPdfWidgets import QPdfView
|
||||||
from PySide6.QtWebSockets import QWebSocket
|
from PySide6.QtWebSockets import QWebSocket
|
||||||
from PySide6.QtWidgets import (
|
from PySide6.QtWidgets import (
|
||||||
|
QAbstractItemView,
|
||||||
QApplication,
|
QApplication,
|
||||||
QDialog,
|
QDialog,
|
||||||
QDialogButtonBox,
|
QDialogButtonBox,
|
||||||
@ -80,8 +81,9 @@ from PySide6.QtWidgets import (
|
|||||||
QFrame,
|
QFrame,
|
||||||
QGraphicsOpacityEffect,
|
QGraphicsOpacityEffect,
|
||||||
QGridLayout,
|
QGridLayout,
|
||||||
# QHBoxLayout,
|
QHeaderView,
|
||||||
# QInputDialog,
|
QHBoxLayout,
|
||||||
|
# QInputDialog,
|
||||||
QLabel,
|
QLabel,
|
||||||
QLineEdit,
|
QLineEdit,
|
||||||
QMainWindow,
|
QMainWindow,
|
||||||
@ -93,11 +95,10 @@ from PySide6.QtWidgets import (
|
|||||||
QSystemTrayIcon,
|
QSystemTrayIcon,
|
||||||
QTableView,
|
QTableView,
|
||||||
QTabWidget,
|
QTabWidget,
|
||||||
|
QToolButton,
|
||||||
QToolBar,
|
QToolBar,
|
||||||
QVBoxLayout,
|
QVBoxLayout,
|
||||||
QWidget,
|
QWidget
|
||||||
QAbstractItemView,
|
|
||||||
QHeaderView
|
|
||||||
)
|
)
|
||||||
from queue import Queue
|
from queue import Queue
|
||||||
from solders.account_decoder import (
|
from solders.account_decoder import (
|
||||||
@ -228,7 +229,7 @@ APP_FULL_NAME: str = "Khadhroony Solana Raydium Liquidity Pool v4 Trading App"
|
|||||||
"""Application Full Name"""
|
"""Application Full Name"""
|
||||||
APP_DESC: str = "Khadhroony Solana Raydium Liquidity Pool v4 Trading Application"
|
APP_DESC: str = "Khadhroony Solana Raydium Liquidity Pool v4 Trading Application"
|
||||||
"""Application Version"""
|
"""Application Version"""
|
||||||
APP_VERSION_INFO = ('1', '0', '0')
|
APP_VERSION_INFO = ('1', '0', '1')
|
||||||
APP_VERSION = '.'.join(APP_VERSION_INFO)
|
APP_VERSION = '.'.join(APP_VERSION_INFO)
|
||||||
"""Application Name + Version"""
|
"""Application Name + Version"""
|
||||||
APP_NAME_VERSION = "Khadhroony Solana Raydium Liquidity Pool v4 Trading Application @ " + APP_VERSION
|
APP_NAME_VERSION = "Khadhroony Solana Raydium Liquidity Pool v4 Trading Application @ " + APP_VERSION
|
||||||
@ -1050,14 +1051,14 @@ class ConnectionPool(QObject):
|
|||||||
self.wsConnexionStatusSigs = [] # changement de status de connexion pour pour _wsClients[i]
|
self.wsConnexionStatusSigs = [] # changement de status de connexion pour pour _wsClients[i]
|
||||||
for _ in range(self._num_ws_clients):
|
for _ in range(self._num_ws_clients):
|
||||||
self.wsConnexionStatusSigs.append(SocketStateSignal())
|
self.wsConnexionStatusSigs.append(SocketStateSignal())
|
||||||
self.httpMsgSentSigs = [] # message envoyé via httpClient
|
self.httpPostSentSigs = [] # message envoyé via httpClient
|
||||||
self.httpMsgReceivedSigs = [] # nouveau message via httpClient
|
self.httpReplyReceivedSigs = [] # nouveau message via httpClient
|
||||||
for _ in range(self._num_async_http_clients):
|
for _ in range(self._num_async_http_clients):
|
||||||
self.httpMsgSentSigs.append(SimpleSignal())
|
self.httpPostSentSigs.append(SimpleSignal())
|
||||||
self.httpMsgReceivedSigs.append(SimpleSignal())
|
self.httpReplyReceivedSigs.append(SimpleSignal())
|
||||||
self.wsMainMessageReceivedSig = SimpleSignal() # nouveau message reçu et stocké pour _wsMainClient
|
self.wsMainReplyReceivedSig = SimpleSignal() # nouveau message reçu et stocké pour _wsMainClient
|
||||||
self.wsMessageReceivedSig = SimpleSignal() # nouveau ws message reçu et stocké pour _wsClients[i]
|
self.wsReplyReceivedSig = SimpleSignal() # nouveau ws message reçu et stocké pour _wsClients[i]
|
||||||
self.httpMessageReceivedSig = SimpleSignal() # nouveau ws message reçu et stocké pour _asyncHttpClients[i]
|
self.httpReplyReceivedSig = SimpleSignal() # nouveau ws message reçu et stocké pour _asyncHttpClients[i]
|
||||||
# connexion des signaux des clients
|
# connexion des signaux des clients
|
||||||
self._wsMainClient.socketStateSig.conn(self._handle_ws_main_connect_status)
|
self._wsMainClient.socketStateSig.conn(self._handle_ws_main_connect_status)
|
||||||
self._wsMainClient.socketErrorSig.conn(self._handle_ws_main_error)
|
self._wsMainClient.socketErrorSig.conn(self._handle_ws_main_error)
|
||||||
@ -1186,7 +1187,7 @@ class ConnectionPool(QObject):
|
|||||||
timestamp = datetime.now()
|
timestamp = datetime.now()
|
||||||
self._wsMainReceivedMessages.append((timestamp, resp))
|
self._wsMainReceivedMessages.append((timestamp, resp))
|
||||||
self._currentDataSize += len(resp.encode("utf-8"))
|
self._currentDataSize += len(resp.encode("utf-8"))
|
||||||
self.wsMainMessageReceivedSig.signal()
|
self.wsMainReplyReceivedSig.signal()
|
||||||
|
|
||||||
def _handle_ws_new_msg(self):
|
def _handle_ws_new_msg(self):
|
||||||
""" Handle _wsClients[index].responseOkSig """
|
""" Handle _wsClients[index].responseOkSig """
|
||||||
@ -1196,14 +1197,14 @@ class ConnectionPool(QObject):
|
|||||||
timestamp = datetime.now()
|
timestamp = datetime.now()
|
||||||
self._wsReceivedMessages.append((timestamp, resp))
|
self._wsReceivedMessages.append((timestamp, resp))
|
||||||
self._currentDataSize += len(resp.encode("utf-8"))
|
self._currentDataSize += len(resp.encode("utf-8"))
|
||||||
self.wsMessageReceivedSig.signal()
|
self.wsReplyReceivedSig.signal()
|
||||||
return handler
|
return handler
|
||||||
|
|
||||||
def _handle_async_http_msg_sent(self, index: int):
|
def _handle_async_http_msg_sent(self, index: int):
|
||||||
""" Handle _asyncHttpClients[index].requestSentSig """
|
""" Handle _asyncHttpClients[index].requestSentSig """
|
||||||
def handler():
|
def handler():
|
||||||
""" handler for Signal """
|
""" handler for Signal """
|
||||||
self.httpMsgSentSigs[index].signal()
|
self.httpPostSentSigs[index].signal()
|
||||||
|
|
||||||
return handler
|
return handler
|
||||||
|
|
||||||
@ -1234,8 +1235,8 @@ class ConnectionPool(QObject):
|
|||||||
timestamp = datetime.now()
|
timestamp = datetime.now()
|
||||||
self._httpReceivedMessages.append((timestamp, reply.body))
|
self._httpReceivedMessages.append((timestamp, reply.body))
|
||||||
self._currentDataSize += reply.size
|
self._currentDataSize += reply.size
|
||||||
self.httpMsgReceivedSigs[index].signal()
|
self.httpReplyReceivedSigs[index].signal()
|
||||||
self.httpMessageReceivedSig.signal()
|
self.httpReplyReceivedSig.signal()
|
||||||
return handler
|
return handler
|
||||||
|
|
||||||
def _start(self):
|
def _start(self):
|
||||||
@ -2471,7 +2472,20 @@ class NewWalletNameAndPassDialog(QDialog):
|
|||||||
self._walletEncyptPass_Qle = QLineEdit()
|
self._walletEncyptPass_Qle = QLineEdit()
|
||||||
self._walletEncyptPass_Qle.setEchoMode(QLineEdit.EchoMode.Password)
|
self._walletEncyptPass_Qle.setEchoMode(QLineEdit.EchoMode.Password)
|
||||||
main_qflo.addRow(self.tr("Wallet Name:"), self._walletName_Qle)
|
main_qflo.addRow(self.tr("Wallet Name:"), self._walletName_Qle)
|
||||||
main_qflo.addRow(self.tr("Wallet EncryptPass:"), self._walletEncyptPass_Qle)
|
# main_qflo.addRow(self.tr("Wallet EncryptPass:"), self._walletEncyptPass_Qle)
|
||||||
|
# Password toggle button
|
||||||
|
self._toggle_qtbtn = QToolButton()
|
||||||
|
self._toggle_qtbtn.setIcon(QIcon(":icoEyeShow")) # Replace with the actual eye icon path
|
||||||
|
self._toggle_qtbtn.setCheckable(True)
|
||||||
|
self._toggle_qtbtn.setToolTip(self.tr("Show/Hide Password"))
|
||||||
|
self._toggle_qtbtn.clicked.connect(self._toggle_password_visibility)
|
||||||
|
|
||||||
|
# Add Wallet EncryptPass field and toggle button to layout
|
||||||
|
pass_layout = QHBoxLayout()
|
||||||
|
pass_layout = QHBoxLayout()
|
||||||
|
pass_layout.addWidget(self._walletEncyptPass_Qle)
|
||||||
|
pass_layout.addWidget(self._toggle_qtbtn)
|
||||||
|
main_qflo.addRow(self.tr("Wallet EncryptPass:"), pass_layout)
|
||||||
|
|
||||||
validate_qpbtn = QPushButton(self.tr("Validate"))
|
validate_qpbtn = QPushButton(self.tr("Validate"))
|
||||||
cancel_qpbtn = QPushButton(self.tr("Cancel"))
|
cancel_qpbtn = QPushButton(self.tr("Cancel"))
|
||||||
@ -2489,6 +2503,18 @@ class NewWalletNameAndPassDialog(QDialog):
|
|||||||
self.walletName = None
|
self.walletName = None
|
||||||
self.walletEncyptPass = None
|
self.walletEncyptPass = None
|
||||||
|
|
||||||
|
def _toggle_password_visibility(self):
|
||||||
|
"""
|
||||||
|
Toggle the password visibility in the QLineEdit
|
||||||
|
"""
|
||||||
|
is_visible = self._walletEncyptPass_Qle.echoMode() == QLineEdit.EchoMode.Normal
|
||||||
|
if is_visible:
|
||||||
|
self._walletEncyptPass_Qle.setEchoMode(QLineEdit.EchoMode.Password)
|
||||||
|
self._toggle_qtbtn.setIcon(QIcon(":icoEyeShow"))
|
||||||
|
else:
|
||||||
|
self._walletEncyptPass_Qle.setEchoMode(QLineEdit.EchoMode.Normal)
|
||||||
|
self._toggle_qtbtn.setIcon(QIcon(":icoEyeHide"))
|
||||||
|
|
||||||
def _validate_and_accept(self):
|
def _validate_and_accept(self):
|
||||||
"""
|
"""
|
||||||
validation of the QLineEdit contents
|
validation of the QLineEdit contents
|
||||||
@ -2515,6 +2541,8 @@ class NewWalletNameAndPassDialog(QDialog):
|
|||||||
fired on show event
|
fired on show event
|
||||||
"""
|
"""
|
||||||
super().showEvent(event)
|
super().showEvent(event)
|
||||||
|
size = self.size()
|
||||||
|
self.setFixedSize(size)
|
||||||
center_on_screen(self)
|
center_on_screen(self)
|
||||||
|
|
||||||
|
|
||||||
@ -2545,6 +2573,8 @@ class NewWalletFileDialog(QFileDialog):
|
|||||||
fired on show event
|
fired on show event
|
||||||
"""
|
"""
|
||||||
super().showEvent(event)
|
super().showEvent(event)
|
||||||
|
size = self.size()
|
||||||
|
self.setMinimumSize(size)
|
||||||
center_on_screen(self)
|
center_on_screen(self)
|
||||||
|
|
||||||
|
|
||||||
@ -2562,7 +2592,19 @@ class LoadWalletPassDialog(QDialog):
|
|||||||
self.setLayout(main_qflo)
|
self.setLayout(main_qflo)
|
||||||
self._walletEncyptPass_Qle = QLineEdit()
|
self._walletEncyptPass_Qle = QLineEdit()
|
||||||
self._walletEncyptPass_Qle.setEchoMode(QLineEdit.EchoMode.Password)
|
self._walletEncyptPass_Qle.setEchoMode(QLineEdit.EchoMode.Password)
|
||||||
main_qflo.addRow(self.tr("Wallet EncryptPass:"), self._walletEncyptPass_Qle)
|
# main_qflo.addRow(self.tr("Wallet EncryptPass:"), self._walletEncyptPass_Qle)
|
||||||
|
# Password toggle button
|
||||||
|
self._toggle_qtbtn = QToolButton()
|
||||||
|
self._toggle_qtbtn.setIcon(QIcon(":icoEyeShow")) # Replace with the actual eye icon path
|
||||||
|
self._toggle_qtbtn.setCheckable(True)
|
||||||
|
self._toggle_qtbtn.setToolTip(self.tr("Show/Hide Password"))
|
||||||
|
self._toggle_qtbtn.clicked.connect(self._toggle_password_visibility)
|
||||||
|
|
||||||
|
# Add Wallet EncryptPass field and toggle button to layout
|
||||||
|
pass_layout = QHBoxLayout()
|
||||||
|
pass_layout.addWidget(self._walletEncyptPass_Qle)
|
||||||
|
pass_layout.addWidget(self._toggle_qtbtn)
|
||||||
|
main_qflo.addRow(self.tr("Wallet EncryptPass:"), pass_layout)
|
||||||
|
|
||||||
validate_qpbtn = QPushButton(self.tr("Validate"))
|
validate_qpbtn = QPushButton(self.tr("Validate"))
|
||||||
cancel_qpbtn = QPushButton(self.tr("Cancel"))
|
cancel_qpbtn = QPushButton(self.tr("Cancel"))
|
||||||
@ -2575,6 +2617,18 @@ class LoadWalletPassDialog(QDialog):
|
|||||||
main_qflo.addWidget(button_qdbbox)
|
main_qflo.addWidget(button_qdbbox)
|
||||||
self.walletEncyptPass = None
|
self.walletEncyptPass = None
|
||||||
|
|
||||||
|
def _toggle_password_visibility(self):
|
||||||
|
"""
|
||||||
|
Toggle the password visibility in the QLineEdit
|
||||||
|
"""
|
||||||
|
is_visible = self._walletEncyptPass_Qle.echoMode() == QLineEdit.EchoMode.Normal
|
||||||
|
if is_visible:
|
||||||
|
self._walletEncyptPass_Qle.setEchoMode(QLineEdit.EchoMode.Password)
|
||||||
|
self._toggle_qtbtn.setIcon(QIcon(":icoEyeShow"))
|
||||||
|
else:
|
||||||
|
self._walletEncyptPass_Qle.setEchoMode(QLineEdit.EchoMode.Normal)
|
||||||
|
self._toggle_qtbtn.setIcon(QIcon(":icoEyeHide"))
|
||||||
|
|
||||||
def _validate_and_accept(self):
|
def _validate_and_accept(self):
|
||||||
"""
|
"""
|
||||||
validation of the QLineEdit content
|
validation of the QLineEdit content
|
||||||
@ -2594,6 +2648,8 @@ class LoadWalletPassDialog(QDialog):
|
|||||||
fired on show event
|
fired on show event
|
||||||
"""
|
"""
|
||||||
super().showEvent(event)
|
super().showEvent(event)
|
||||||
|
size = self.size()
|
||||||
|
self.setFixedSize(size)
|
||||||
center_on_screen(self)
|
center_on_screen(self)
|
||||||
|
|
||||||
|
|
||||||
@ -2624,6 +2680,8 @@ class LoadWalletFileDialog(QFileDialog):
|
|||||||
fired on show event
|
fired on show event
|
||||||
"""
|
"""
|
||||||
super().showEvent(event)
|
super().showEvent(event)
|
||||||
|
size = self.size()
|
||||||
|
self.setMinimumSize(size)
|
||||||
center_on_screen(self)
|
center_on_screen(self)
|
||||||
|
|
||||||
|
|
||||||
@ -3360,8 +3418,8 @@ class MainWindow(QMainWindow):
|
|||||||
self.wsCnxImgs = []
|
self.wsCnxImgs = []
|
||||||
self.httpMsgImgs = []
|
self.httpMsgImgs = []
|
||||||
# self.main_Qstb.addPermanentWidget(self._get_vertical_separator())
|
# self.main_Qstb.addPermanentWidget(self._get_vertical_separator())
|
||||||
self.netReachabilityImg = QLabel()
|
# self.netReachabilityImg = QLabel()
|
||||||
self.netReachabilityImg.setPixmap(self.reachabilityUnknown_Qpxm.scaled(16, 16, Qt.AspectRatioMode.KeepAspectRatio))
|
# self.netReachabilityImg.setPixmap(self.reachabilityUnknown_Qpxm.scaled(16, 16, Qt.AspectRatioMode.KeepAspectRatio))
|
||||||
# if self.connPool.check_reachability() == QNetworkInformation.Reachability.Online:
|
# if self.connPool.check_reachability() == QNetworkInformation.Reachability.Online:
|
||||||
# self.netReachabilityImg.setPixmap(self.reachabilityOnline_Qpxm.scaled(16, 16, Qt.AspectRatioMode.KeepAspectRatio))
|
# self.netReachabilityImg.setPixmap(self.reachabilityOnline_Qpxm.scaled(16, 16, Qt.AspectRatioMode.KeepAspectRatio))
|
||||||
# elif self.connPool.check_reachability() == QNetworkInformation.Reachability.Site:
|
# elif self.connPool.check_reachability() == QNetworkInformation.Reachability.Site:
|
||||||
@ -3372,9 +3430,9 @@ class MainWindow(QMainWindow):
|
|||||||
# self.netReachabilityImg.setPixmap(self.reachabilityDisconnected_Qpxm.scaled(16, 16, Qt.AspectRatioMode.KeepAspectRatio))
|
# self.netReachabilityImg.setPixmap(self.reachabilityDisconnected_Qpxm.scaled(16, 16, Qt.AspectRatioMode.KeepAspectRatio))
|
||||||
# elif self.connPool.check_reachability() == QNetworkInformation.Reachability.Unknown:
|
# elif self.connPool.check_reachability() == QNetworkInformation.Reachability.Unknown:
|
||||||
# self.netReachabilityImg.setPixmap(self.reachabilityUnknown_Qpxm.scaled(16, 16, Qt.AspectRatioMode.KeepAspectRatio))
|
# self.netReachabilityImg.setPixmap(self.reachabilityUnknown_Qpxm.scaled(16, 16, Qt.AspectRatioMode.KeepAspectRatio))
|
||||||
self.main_Qstb.addWidget(self.netReachabilityImg)
|
# self.main_Qstb.addWidget(self.netReachabilityImg)
|
||||||
# self.connPool.reachabilitySig.conn(self._update_reachability_status)
|
# self.connPool.reachabilitySig.conn(self._update_reachability_status)
|
||||||
self.main_Qstb.addWidget(self._get_vertical_separator())
|
# self.main_Qstb.addWidget(self._get_vertical_separator())
|
||||||
self.wsMainCnxImg = QLabel()
|
self.wsMainCnxImg = QLabel()
|
||||||
self.wsMainCnxImg.setPixmap(self.wsDisconnected_Qpxm.scaled(16, 16, Qt.AspectRatioMode.KeepAspectRatio))
|
self.wsMainCnxImg.setPixmap(self.wsDisconnected_Qpxm.scaled(16, 16, Qt.AspectRatioMode.KeepAspectRatio))
|
||||||
self.main_Qstb.addWidget(self.wsMainCnxImg)
|
self.main_Qstb.addWidget(self.wsMainCnxImg)
|
||||||
@ -3394,8 +3452,8 @@ class MainWindow(QMainWindow):
|
|||||||
self.httpMsgImgs.append(lbl)
|
self.httpMsgImgs.append(lbl)
|
||||||
self.main_Qstb.addWidget(lbl)
|
self.main_Qstb.addWidget(lbl)
|
||||||
# Connecter le signal
|
# Connecter le signal
|
||||||
self.connPool.httpMsgSentSigs[idx].conn(lambda cid = idx: self.update_http_pxm_sent(cid))
|
self.connPool.httpPostSentSigs[idx].conn(lambda cid = idx: self.update_http_pxm_sent(cid))
|
||||||
self.connPool.httpMsgReceivedSigs[idx].conn(lambda cid = idx: self.update_http_pxm_received(cid))
|
self.connPool.httpReplyReceivedSigs[idx].conn(lambda cid = idx: self.update_http_pxm_received(cid))
|
||||||
|
|
||||||
self.main_Qstb.addPermanentWidget(self._get_vertical_separator())
|
self.main_Qstb.addPermanentWidget(self._get_vertical_separator())
|
||||||
|
|
||||||
@ -3412,9 +3470,9 @@ class MainWindow(QMainWindow):
|
|||||||
self.statusMsg_Qled.setText(self.tr("Ready"))
|
self.statusMsg_Qled.setText(self.tr("Ready"))
|
||||||
self.main_Qstb.addPermanentWidget(self.statusMsg_Qled)
|
self.main_Qstb.addPermanentWidget(self.statusMsg_Qled)
|
||||||
|
|
||||||
self.connPool.wsMainMessageReceivedSig.conn(self.read_ws_main_sol_msg)
|
self.connPool.wsMainReplyReceivedSig.conn(self.read_ws_main_sol_msg)
|
||||||
self.connPool.wsMessageReceivedSig.conn(self.read_ws_sol_msg)
|
self.connPool.wsReplyReceivedSig.conn(self.read_ws_sol_msg)
|
||||||
self.connPool.httpMessageReceivedSig.conn(self.read_http_sol_msg)
|
self.connPool.httpReplyReceivedSig.conn(self.read_http_sol_msg)
|
||||||
|
|
||||||
self.update_display()
|
self.update_display()
|
||||||
logger.success(self.tr("Init of {appName}").format(appName = APP_ABOUT_NAME))
|
logger.success(self.tr("Init of {appName}").format(appName = APP_ABOUT_NAME))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user