fix input enterPressed event

This commit is contained in:
yedpodtrzitko
2024-05-05 14:22:37 +08:00
parent 089c8dd50c
commit 3aa4fa214f
2 changed files with 16 additions and 5 deletions

View File

@@ -1,9 +1,9 @@
# Copyright (C) 2024 Travis Abendshien (CyanVoxel).
# Licensed under the GPL-3.0 License.
# Created for TagStudio: https://github.com/CyanVoxel/TagStudio
import logging
from types import FunctionType
from typing import Callable
from PySide6.QtCore import Signal, Qt
from PySide6.QtWidgets import QWidget, QVBoxLayout, QHBoxLayout, QLabel, QPushButton
@@ -70,12 +70,12 @@ class PanelModal(QWidget):
# self.cancel_button.clicked.connect(cancel_callback)
self.button_layout.addWidget(self.cancel_button)
if save_callback or has_save:
self.save_button = QPushButton()
self.save_button.setText("Save")
self.save_button.setAutoDefault(True)
self.save_button.clicked.connect(self.hide)
self.save_button.clicked.connect(self.saved.emit)
if done_callback:
self.save_button.clicked.connect(done_callback)
if save_callback:
@@ -84,6 +84,9 @@ class PanelModal(QWidget):
)
self.button_layout.addWidget(self.save_button)
# trigger save button actions when pressing enter in the widget
self.widget.add_callback(lambda: self.save_button.click())
widget.done.connect(lambda: save_callback(widget.get_content()))
self.root_layout.addWidget(self.title_widget)
@@ -107,3 +110,6 @@ class PanelWidget(QWidget):
def reset(self):
pass
def add_callback(self, callback: Callable, event: str = "returnPressed"):
logging.warning(f"add_callback not implemented for {self.__class__.__name__}")

View File

@@ -1,7 +1,7 @@
# Copyright (C) 2024 Travis Abendshien (CyanVoxel).
# Licensed under the GPL-3.0 License.
# Created for TagStudio: https://github.com/CyanVoxel/TagStudio
from typing import Callable
from PySide6.QtWidgets import QVBoxLayout, QLineEdit
@@ -18,7 +18,6 @@ class EditTextLine(PanelWidget):
self.text = text
self.text_edit = QLineEdit()
self.text_edit.setText(text)
self.text_edit.returnPressed.connect(self.done.emit)
self.root_layout.addWidget(self.text_edit)
def get_content(self) -> str:
@@ -26,3 +25,9 @@ class EditTextLine(PanelWidget):
def reset(self):
self.text_edit.setText(self.text)
def add_callback(self, callback: Callable, event: str = "returnPressed"):
if event == "returnPressed":
self.text_edit.returnPressed.connect(callback)
else:
raise ValueError(f"unknown event type: {event}")