diff --git a/TP4/documents/FileDefinition.py b/TP4/documents/FileDefinition.py new file mode 100644 index 0000000000000000000000000000000000000000..75e5ee69d746a94b936b728922e2d1122adc4110 --- /dev/null +++ b/TP4/documents/FileDefinition.py @@ -0,0 +1,5 @@ +import os + +DATA_DIR = os.path.dirname(os.path.abspath(__file__)) + +LAYOUT_FILE = os.path.join(DATA_DIR, 'layout.json') diff --git a/TP4/documents/__init__.py b/TP4/documents/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/TP4/documents/layout.json b/TP4/documents/layout.json new file mode 100644 index 0000000000000000000000000000000000000000..46a7693b44809694e8dc06a291e753ba120ce3b8 --- /dev/null +++ b/TP4/documents/layout.json @@ -0,0 +1,39 @@ +{ + "keyWidth": 50, + "keyHeight": 20, + "keySpacing": 3, + "nbReco": 4, + "keys" : [ + { "symbol": "a", "x" : 0, "y" : 1, "width": 1 }, + { "symbol": "z", "x" : 1, "y" : 1, "width": 1 }, + { "symbol": "e", "x" : 2, "y" : 1, "width": 1 }, + { "symbol": "r", "x" : 3, "y" : 1, "width": 1 }, + { "symbol": "t", "x" : 4, "y" : 1, "width": 1 }, + { "symbol": "y", "x" : 5, "y" : 1, "width": 1 }, + { "symbol": "u", "x" : 6, "y" : 1, "width": 1 }, + { "symbol": "i", "x" : 7, "y" : 1, "width": 1 }, + { "symbol": "o", "x" : 8, "y" : 1, "width": 1 }, + { "symbol": "p", "x" : 9, "y" : 1, "width": 1 }, + { "symbol": "q", "x" : 1, "y" : 2, "width": 1 }, + { "symbol": "s", "x" : 0, "y" : 2, "width": 1 }, + { "symbol": "d", "x" : 2, "y" : 2, "width": 1 }, + { "symbol": "f", "x" : 3, "y" : 2, "width": 1 }, + { "symbol": "g", "x" : 4, "y" : 2, "width": 1 }, + { "symbol": "h", "x" : 5, "y" : 2, "width": 1 }, + { "symbol": "j", "x" : 6, "y" : 2, "width": 1 }, + { "symbol": "k", "x" : 7, "y" : 2, "width": 1 }, + { "symbol": "l", "x" : 8, "y" : 2, "width": 1 }, + { "symbol": "m", "x" : 9, "y" : 2, "width": 1 }, + { "symbol": "q", "x" : 1, "y" : 2, "width": 1 }, + { "symbol": "⇧", "x" : 0, "y" : 3, "width": 2 }, + { "symbol": "w", "x" : 2, "y" : 3, "width": 1 }, + { "symbol": "x", "x" : 3, "y" : 3, "width": 1 }, + { "symbol": "c", "x" : 4, "y" : 3, "width": 1 }, + { "symbol": "v", "x" : 5, "y" : 3, "width": 1 }, + { "symbol": "b", "x" : 6, "y" : 3, "width": 1 }, + { "symbol": "n", "x" : 7, "y" : 3, "width": 1 }, + { "symbol": "⇦", "x" : 8, "y" : 3, "width": 2 }, + { "symbol": " ", "x" : 0, "y" : 4, "width": 8 }, + { "symbol": "↵", "x" : 8, "y" : 4, "width": 2 } + ] +} \ No newline at end of file diff --git a/TP4/src/Main.py b/TP4/src/Main.py new file mode 100644 index 0000000000000000000000000000000000000000..f574433eabee3cf07f922fd056ddf1d1e8d52440 --- /dev/null +++ b/TP4/src/Main.py @@ -0,0 +1,14 @@ +import sys +from PyQt5.QtWidgets import QApplication +from src.widgets.EditeurWindow import EditeurWindow + +def main(): + app = QApplication(sys.argv) + window = EditeurWindow() + window.resize(1024, 800) + window.show() + sys.exit(app.exec_()) + + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/TP4/src/__init__.py b/TP4/src/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/TP4/src/model/Key.py b/TP4/src/model/Key.py new file mode 100644 index 0000000000000000000000000000000000000000..7519fec550ffc7313e453ee63d5303388c92547d --- /dev/null +++ b/TP4/src/model/Key.py @@ -0,0 +1,9 @@ +from PyQt5.QtCore import QRect, QPoint, QSize + +class Key: + def __init__(self, x, y, keyWidth, keyHeight, keySpacing, width, symbol): + self.x = x * (keyWidth + keySpacing) + self.y = y * (keyHeight + keySpacing) + self.position = QPoint(self.x, self.y) + self.symbol = symbol + self.rect = QRect(self.x, self.y, width * (keyWidth + keySpacing) - keySpacing, keyHeight) diff --git a/TP4/src/model/__init__.py b/TP4/src/model/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/TP4/src/widgets/EditeurWindow.py b/TP4/src/widgets/EditeurWindow.py new file mode 100644 index 0000000000000000000000000000000000000000..093d6dfd76d2d35c140b2a3baebf9345c5ba714d --- /dev/null +++ b/TP4/src/widgets/EditeurWindow.py @@ -0,0 +1,17 @@ +from PyQt5.QtWidgets import QWidget, QLineEdit, QVBoxLayout +from src.widgets.KeyboardWidget import KeyboardWidget + +class EditeurWindow(QWidget): + def __init__(self): + super().__init__() + self.setWindowTitle('Editeur') + + # Création des widgets + line_edit = QLineEdit(self) + keyboard_widget = KeyboardWidget() + + # Création du layout et ajout des widgets + layout = QVBoxLayout() + layout.addWidget(line_edit) + layout.addWidget(keyboard_widget) + self.setLayout(layout) \ No newline at end of file diff --git a/TP4/src/widgets/KeyboardWidget.py b/TP4/src/widgets/KeyboardWidget.py new file mode 100644 index 0000000000000000000000000000000000000000..660ca765bdbc241131149dca40ea4cb10b121547 --- /dev/null +++ b/TP4/src/widgets/KeyboardWidget.py @@ -0,0 +1,38 @@ +import json + +from PyQt5.QtWidgets import QWidget +from documents.FileDefinition import LAYOUT_FILE +from src.model.Key import Key + + +class KeyboardWidget(QWidget): + def __init__(self): + super().__init__() + self.keys = [] + self.keyWidth = None + self.keyHeight = None + self.keySpacing = None + + # Initialiser le clavier + self.loadLayoutJson() + self.update() + + def loadLayoutJson(self): + # Chargement du fichier JSON contenant les paramètres du clavier + with open(LAYOUT_FILE, "r") as f: + layout_clavier = json.load(f) + + # Accéder aux paramètres + + self.keyWidth = layout_clavier['keyWidth'] + self.keyHeight = layout_clavier['keyHeight'] + self.keySpacing = layout_clavier['keySpacing'] + + # Créer la clé de chaque touche + for keyData in layout_clavier['keys']: + self.keys.append(self.createKey(keyData)) + + def createKey(self, keyData): + return Key(keyData['x'], keyData['y'], self.keyWidth, self.keyHeight, self.keySpacing, keyData['width'], keyData['symbol']) + + diff --git a/TP4/src/widgets/__init__.py b/TP4/src/widgets/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391