Skip to content
Snippets Groups Projects
Commit 7f50e7e7 authored by Thomas Holene Løkkeborg's avatar Thomas Holene Løkkeborg
Browse files

#54 la til wrapper for Qt dialoger i egen modul. blir brukt to steder

parent a6b42218
No related branches found
No related tags found
1 merge request!28#54 Rectpack for reorganisering av moduler + litt black
Pipeline #74127 passed
"""Includes methods that wrap Qt dialogs to reduce code duplication."""
from PySide2.QtWidgets import QMessageBox
def exec_qmessagebox_dialog(window_title, text, informative_text, icon):
"""Execute QMessageBox dialog with feedback to user.
Just a wrapper around QMessageBox.
Parameters
----------
text : str
sets header of dialog. See
https://doc.qt.io/qt-5/qmessagebox.html#text-prop
informative_text : str
sets body of dialog. See
https://doc.qt.io/qt-5/qmessagebox.html#informativeText-prop
icon : QMessageBox.Icon
icon to show the user. Use one of the predefined icons as defined here:
https://doc.qt.io/qt-5/qmessagebox.html#Icon-enum
"""
error_message = QMessageBox()
error_message.setWindowTitle(window_title)
error_message.setText(text)
error_message.setInformativeText(informative_text)
error_message.setIcon(icon)
error_message.exec_()
def exec_critical_dialog(text, informative_text):
"""Execute QMessageBox dialog with critical icon.
This is simply a wrapper displaying a particular icon. See the
documentation for exec_qmessagebox_dialog for parameter docs.
"""
exec_qmessagebox_dialog(
"Error", text, informative_text, QMessageBox.Critical
)
def exec_warning_dialog(text, informative_text):
"""Execute QMessageBox dialog with warning icon.
This is simply a wrapper displaying a particular icon. See the
documentation for exec_qmessagebox_dialog for parameter docs.
"""
exec_qmessagebox_dialog(
"Advarsel", text, informative_text, QMessageBox.Warning
)
def exec_info_dialog(text, informative_text):
"""Execute QMessageBox dialog with info icon.
This is simply a wrapper displaying a particular icon. See the
documentation for exec_qmessagebox_dialog for parameter docs.
"""
exec_qmessagebox_dialog("Info", text, informative_text, QMessageBox.Info)
......@@ -7,11 +7,11 @@ from PySide2.QtWidgets import (
QGraphicsScene,
QGraphicsView,
QGraphicsRectItem,
QMessageBox,
)
from PySide2.QtGui import QFont, QPixmap, QBrush, QPalette, QPainter
from PySide2.QtPrintSupport import QPrinter
from soitool.soi import ModuleLargerThanBinError
from soitool.dialog_wrappers import exec_warning_dialog
class InlineEditableSOIView(QScrollArea):
......@@ -44,17 +44,13 @@ class InlineEditableSOIView(QScrollArea):
try:
self.soi.reorganize()
except ModuleLargerThanBinError:
error_message = QMessageBox()
error_message.setText(
"Minst én av modulene er for store for å passe på én side!"
exec_warning_dialog(
text="Minst én av modulene er for store "
"for å passe på én side!",
informative_text="Programmet kan desverre ikke fikse dette "
"for deg. Se igjennom modulene og sjekk at "
"alle moduler er mindre enn én enkelt side.",
)
error_message.setInformativeText(
"Programmet kan desverre ikke fikse dette for deg. Se "
"igjennom modulene og sjekk at alle moduler er mindre "
"enn én enkelt side."
)
error_message.setIcon(QMessageBox.Warning)
error_message.exec_()
self.update_pages()
def __init__(self, soi):
......
......@@ -4,9 +4,9 @@ from PySide2.QtWidgets import (
QListWidget,
QListWidgetItem,
QAbstractItemView,
QMessageBox,
)
from soitool.soi import ModuleType
from soitool.dialog_wrappers import exec_warning_dialog
import soitool
......@@ -155,18 +155,15 @@ class ModuleList(QListWidget):
Is sent to super().
"""
if self.parent.soi.algorithm_sort != "none":
error_message = QMessageBox()
error_message.setText(
"SOI er ikke innstilt for automatisk plassering av moduler!"
exec_warning_dialog(
text="SOI er ikke innstilt for automatisk plassering av "
"moduler!",
informative_text="Enn så lenge vil manuell prioritering av "
"moduler bare fungere dersom SOI er innstilt til ikke å gjøre "
"sortering av moduler før pakking. I fremtiden vil det være "
"mulig å låse utvalgte moduler, men la resten optimalt "
"pakkes.",
)
error_message.setInformativeText(
"Enn så lenge vil manuell prioritering av moduler bare "
"fungere dersom SOI er innstilt til ikke å gjøre sortering av "
"moduler før pakking. I fremtiden vil det være mulig å låse "
"utvalgte moduler, men la resten optimalt pakkes."
)
error_message.setIcon(QMessageBox.Warning)
error_message.exec_()
# ignorerer dropEvent ved å returnere tidlig
return
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment