dev: 支持回车加载等

This commit is contained in:
Julian Freeman
2024-07-19 14:42:38 -04:00
parent 85b6456f87
commit 24e2184659
4 changed files with 64 additions and 31 deletions

View File

@@ -1,11 +1,18 @@
# coding: utf8
from pathlib import Path
from PySide6 import QtWidgets, QtGui, QtCore
from pykeepass.exceptions import CredentialsError
from lib.Sqlite3Helper import Sqlite3Worker
from lib.kps_operations import read_kps_to_db
class GbxKpsLogin(QtWidgets.QGroupBox):
def __init__(self, path: str, parent=None):
def __init__(self, path: str, sqh: Sqlite3Worker, config: dict, parent=None):
super().__init__(parent)
self.is_loaded = False
self.sqh = sqh
self.config = config
self.path = path
self.icon_eye = QtGui.QIcon(":/asset/img/eye.svg")
self.icon_eye_off = QtGui.QIcon(":/asset/img/eye-off.svg")
@@ -41,12 +48,21 @@ class GbxKpsLogin(QtWidgets.QGroupBox):
self.lb_loaded.setVisible(False)
self.hly_bottom.addStretch(1)
self.pbn_load = PushButtonWithItem(self, self, "加载")
self.pbn_load = QtWidgets.QPushButton("加载", self)
self.hly_bottom.addWidget(self.pbn_load)
self.pbn_remove = PushButtonWithItem(self, self, "移除")
self.hly_bottom.addWidget(self.pbn_remove)
self.pbn_eye.clicked.connect(self.on_pbn_eye_clicked)
self.pbn_load.clicked.connect(self.on_pbn_load_clicked)
# 回车加载
self.lne_password.returnPressed.connect(self.on_pbn_load_clicked)
def set_loaded(self, loaded: bool):
self.lb_loaded.setVisible(loaded)
self.pbn_load.setDisabled(loaded)
# 防止回车键触发加载
self.lne_password.setDisabled(loaded)
def on_pbn_eye_clicked(self):
is_pass_mode = self.lne_password.echoMode() == QtWidgets.QLineEdit.EchoMode.Password
@@ -57,10 +73,24 @@ class GbxKpsLogin(QtWidgets.QGroupBox):
self.lne_password.setEchoMode(QtWidgets.QLineEdit.EchoMode.Password)
self.pbn_eye.setIcon(self.icon_eye_off)
def set_loaded(self, loaded: bool):
self.is_loaded = loaded
self.lb_loaded.setVisible(loaded)
self.pbn_load.setDisabled(loaded)
def on_pbn_load_clicked(self):
try:
read_kps_to_db(kps_file=self.lne_path.text(),
password=self.lne_password.text(),
table_name=self.config["table_name"],
sqh=self.sqh)
except CredentialsError:
QtWidgets.QMessageBox.critical(self, "密码错误",
f"{self.lne_path.text()}\n密码错误")
return
self.lne_password.clear()
self.set_loaded(True)
loaded_mem = self.config["loaded_memory"]
db_name = Path(self.sqh.db_name).name
if db_name not in loaded_mem:
loaded_mem[db_name] = []
loaded_mem[db_name].append(self.lne_path.text())
class PushButtonWithItem(QtWidgets.QPushButton):