From 0e8b8c5c7a1cd9cf970aab6fb143b17f4a3ae7c3 Mon Sep 17 00:00:00 2001 From: Pierre-Antoine Rouby <pierre-antoine.rouby@inrae.fr> Date: Mon, 6 Mar 2023 11:42:05 +0100 Subject: [PATCH] PamHyr: Add model scheme and set application icon. --- src/model/Serializable.py | 17 +++++++++++++++++ src/model/Study.py | 26 ++++++++++++++++++++++++++ src/pamhyr.py | 12 ++++++++---- src/view/MainWindow.py | 19 ++++++++++++++++++- src/view/ui/resources/M_icon.png | Bin 0 -> 16354 bytes 5 files changed, 69 insertions(+), 5 deletions(-) create mode 100644 src/model/Serializable.py create mode 100644 src/model/Study.py create mode 100644 src/view/ui/resources/M_icon.png diff --git a/src/model/Serializable.py b/src/model/Serializable.py new file mode 100644 index 00000000..e3b65cd7 --- /dev/null +++ b/src/model/Serializable.py @@ -0,0 +1,17 @@ +# -*- coding: utf-8 -*- + +import pickle + +class Serializable(): + def __init__(self, filename): + self.filename = filename + + @classmethod + def open(cls, filename): + with open(filename, 'rb') as in_file: + me = pickle.load(in_file) + return me + + def save(self): + with open(self.filename, 'wb') as out_file: + pickle.dump(self, out_file) diff --git a/src/model/Study.py b/src/model/Study.py new file mode 100644 index 00000000..5379ed96 --- /dev/null +++ b/src/model/Study.py @@ -0,0 +1,26 @@ +# -*- coding: utf-8 -*- + +import os +from datetime import datetime +from model.Serializable import Serializable + +class Study(Serializable): + def __init__(self, name, filename, data): + # Serialization information + super(Study, self).__init__(filename) + self.filename = filename + + # Study general information + self.name = name + self.comment = "" + + self.creation_date = datetime.now() + self.last_modification_date = datetime.now() + self.last_save_date = datetime.now() + + # Study data + self.data = data + + @classmethod + def new(cls, name, filename): + return cls(name, filename, {}) diff --git a/src/pamhyr.py b/src/pamhyr.py index 206755c7..7c755d88 100755 --- a/src/pamhyr.py +++ b/src/pamhyr.py @@ -3,14 +3,18 @@ import sys -from PyQt5.QtWidgets import ( - QMainWindow, QApplication, -) +from PyQt5.QtWidgets import QApplication from view.MainWindow import ApplicationWindow +from model.Study import Study + +class Application(ApplicationWindow): + def __init__(self): + super(Application, self).__init__() + self.study = Study.new("dummy", "dummy.pkl") def main(): app = QApplication(sys.argv) - application = ApplicationWindow() + application = Application() application.show() sys.exit(app.exec_()) diff --git a/src/view/MainWindow.py b/src/view/MainWindow.py index 0466c4e5..399d4d5e 100644 --- a/src/view/MainWindow.py +++ b/src/view/MainWindow.py @@ -1,3 +1,7 @@ +# -*- coding: utf-8 -*- + +import os + from PyQt5 import QtGui from PyQt5.QtWidgets import ( QMainWindow, QApplication, @@ -7,5 +11,18 @@ from PyQt5.uic import loadUi class ApplicationWindow(QMainWindow): def __init__(self): super(ApplicationWindow, self).__init__() - self.ui = loadUi("view/ui/MainWindow.ui", self) + self.ui = loadUi( + os.path.join(os.path.dirname(__file__), "ui", "MainWindow.ui"), + self + ) + self.set_icon() self.showMaximized() + + def set_icon(self): + """ + Returns: Add icon to application window + """ + icon = QtGui.QIcon() + _path= os.path.join(os.path.dirname(__file__), "ui", "resources", "M_icon.png") + icon.addPixmap(QtGui.QPixmap(f"{_path}"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.setWindowIcon(icon) diff --git a/src/view/ui/resources/M_icon.png b/src/view/ui/resources/M_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..9927c06efd799b96507e826240a908242cdaf98b GIT binary patch literal 16354 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 literal 0 HcmV?d00001 -- GitLab