diff --git a/TP4/src/model/Key.py b/TP4/src/model/Key.py index 7519fec550ffc7313e453ee63d5303388c92547d..885b980032215a3dc6c4e6d12cf22bdda1faf561 100644 --- a/TP4/src/model/Key.py +++ b/TP4/src/model/Key.py @@ -7,3 +7,7 @@ class Key: self.position = QPoint(self.x, self.y) self.symbol = symbol self.rect = QRect(self.x, self.y, width * (keyWidth + keySpacing) - keySpacing, keyHeight) + + + def isOver(self, point): + return self.rect.contains(point) \ No newline at end of file diff --git a/TP4/src/widgets/EditeurWindow.py b/TP4/src/widgets/EditeurWindow.py index 093d6dfd76d2d35c140b2a3baebf9345c5ba714d..4920168863ce39c582af563c37df603daa6adb88 100644 --- a/TP4/src/widgets/EditeurWindow.py +++ b/TP4/src/widgets/EditeurWindow.py @@ -1,5 +1,6 @@ from PyQt5.QtWidgets import QWidget, QLineEdit, QVBoxLayout from src.widgets.KeyboardWidget import KeyboardWidget +from PySide6.QtCore import Slot class EditeurWindow(QWidget): def __init__(self): @@ -14,4 +15,7 @@ class EditeurWindow(QWidget): layout = QVBoxLayout() layout.addWidget(line_edit) layout.addWidget(keyboard_widget) - self.setLayout(layout) \ No newline at end of file + self.setLayout(layout) + + # Connexion su dignal + keyboard_widget.newletter.connect(line_edit.insert) diff --git a/TP4/src/widgets/KeyboardWidget.py b/TP4/src/widgets/KeyboardWidget.py index 5c8d08125a7ed1973257e03aa2a4eae0866a9d4b..c89b24b23fa8c13f4b6bd48b984445830a197d69 100644 --- a/TP4/src/widgets/KeyboardWidget.py +++ b/TP4/src/widgets/KeyboardWidget.py @@ -1,13 +1,17 @@ import json -from PyQt5.QtCore import Qt, QSize -from PyQt5.QtGui import QPainter +from PyQt5.QtCore import Qt, QSize, QPoint, pyqtSignal +from PyQt5.QtGui import QPainter, QColor from PyQt5.QtWidgets import QWidget from documents.FileDefinition import LAYOUT_FILE from src.model.Key import Key +from PySide6.QtCore import Signal +DEFAULT_COLOR = QColor("white") +OVER_COLOR = QColor("gray") class KeyboardWidget(QWidget): + newletter = pyqtSignal(str) def __init__(self): super().__init__() self.keys = [] @@ -18,8 +22,12 @@ class KeyboardWidget(QWidget): self.keyboardWidth = 0 self.keyboardHeight = 0 + self.mousePos = QPoint(0,0) + self.pressedKey = None + # Initialiser le clavier self.loadLayoutJson() + self.setMouseTracking(True) self.update() def loadLayoutJson(self): @@ -52,11 +60,36 @@ class KeyboardWidget(QWidget): def paintEvent(self, event): self.sizeHint() - painter = QPainter(self) for key in self.keys: - painter.drawRect(key.rect) - painter.drawText(key.rect, Qt.AlignCenter, key.symbol) + if key.isOver(self.mousePos): + self.paintKey(key, OVER_COLOR) + else: + self.paintKey(key, DEFAULT_COLOR) def sizeHint(self): return QSize(self.keyboardWidth, self.keyboardHeight) + def mouseMoveEvent(self, event): + self.mousePos = event.pos() + self.update() + + def mousePressEvent(self, event): + for key in self.keys: + if key.isOver(self.mousePos): + self.pressedKey = key + return + def mouseReleaseEvent(self, event): + for key in self.keys: + if key.isOver(self.mousePos): + if key == self.pressedKey: + self.pressedKey = None + self.newletter.emit(key.symbol) + return + else: + return + + def paintKey(self, key, color): + painter = QPainter(self) + painter.setBrush(color) + painter.drawRect(key.rect) + painter.drawText(key.rect, Qt.AlignCenter, key.symbol)