mirror of
https://github.com/RolandWH/SIPPCompare.git
synced 2025-05-10 08:41:49 +01:00
add error handling for file saving
This commit is contained in:
parent
629ea6833d
commit
42afd128e5
@ -2,13 +2,33 @@ import os
|
|||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
from PyQt6 import uic
|
from PyQt6 import uic
|
||||||
from PyQt6.QtGui import QIcon
|
from PyQt6.QtGui import QIcon, QFont
|
||||||
from PyQt6.QtWidgets import QWidget, QFileDialog
|
from PyQt6.QtWidgets import QWidget, QFileDialog, QMessageBox, QDialogButtonBox
|
||||||
|
|
||||||
import resource_finder
|
import resource_finder
|
||||||
from widgets.mpl_widget import MplWidget
|
from widgets.mpl_widget import MplWidget
|
||||||
|
|
||||||
|
|
||||||
|
class SaveFailure(QMessageBox):
|
||||||
|
def __init__(self, parent=None):
|
||||||
|
super().__init__(parent)
|
||||||
|
self.setWindowIcon(QIcon(resource_finder.get_res_path("icon2.ico")))
|
||||||
|
self.setWindowTitle("Save failure")
|
||||||
|
|
||||||
|
self.setIcon(QMessageBox.Icon.Critical)
|
||||||
|
font = QFont()
|
||||||
|
font.setPointSize(11)
|
||||||
|
self.setFont(font)
|
||||||
|
self.setText("Failed to save file")
|
||||||
|
self.setDetailedText(
|
||||||
|
"This could be due to a permissions issue, or the file being in use by another process"
|
||||||
|
)
|
||||||
|
|
||||||
|
self.setStandardButtons(QMessageBox.StandardButton.Ok)
|
||||||
|
font.setPointSize(10)
|
||||||
|
self.findChild(QDialogButtonBox).setFont(font)
|
||||||
|
|
||||||
|
|
||||||
class OutputWindow(QWidget):
|
class OutputWindow(QWidget):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
@ -17,6 +37,7 @@ class OutputWindow(QWidget):
|
|||||||
self.setWindowIcon(QIcon(resource_finder.get_res_path("icon2.ico")))
|
self.setWindowIcon(QIcon(resource_finder.get_res_path("icon2.ico")))
|
||||||
|
|
||||||
# Define class variables
|
# Define class variables
|
||||||
|
self.save_err_dialog = SaveFailure()
|
||||||
self.canvas = self.graphWidget.canvas
|
self.canvas = self.graphWidget.canvas
|
||||||
self.ax = self.canvas.axes
|
self.ax = self.canvas.axes
|
||||||
self.fig = self.canvas.figure
|
self.fig = self.canvas.figure
|
||||||
@ -39,6 +60,9 @@ class OutputWindow(QWidget):
|
|||||||
names.append(result[4])
|
names.append(result[4])
|
||||||
values.append(sum(result[:4]) * years)
|
values.append(sum(result[:4]) * years)
|
||||||
|
|
||||||
|
names = sorted(names, key=lambda x: values[names.index(x)], reverse=True)
|
||||||
|
values = sorted(values, reverse=True)
|
||||||
|
|
||||||
h_bars = self.ax.barh(names, values)
|
h_bars = self.ax.barh(names, values)
|
||||||
self.ax.bar_label(h_bars, label_type='center', labels=[f"£{x:,.2f}" for x in h_bars.datavalues])
|
self.ax.bar_label(h_bars, label_type='center', labels=[f"£{x:,.2f}" for x in h_bars.datavalues])
|
||||||
|
|
||||||
@ -58,10 +82,11 @@ class OutputWindow(QWidget):
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
self.fig.savefig(file_path, dpi=150)
|
self.fig.savefig(file_path, dpi=150)
|
||||||
except:
|
except OSError:
|
||||||
pass
|
self.save_err_dialog.exec()
|
||||||
|
|
||||||
def save_csv(self):
|
def save_csv(self):
|
||||||
|
# TODO: Sort CSV output, either alphabetically or by total fees
|
||||||
file_picker = QFileDialog(self)
|
file_picker = QFileDialog(self)
|
||||||
file_picker.setFileMode(QFileDialog.FileMode.AnyFile)
|
file_picker.setFileMode(QFileDialog.FileMode.AnyFile)
|
||||||
file_picker.setDefaultSuffix("csv")
|
file_picker.setDefaultSuffix("csv")
|
||||||
@ -105,7 +130,7 @@ class OutputWindow(QWidget):
|
|||||||
csvfile.write(csv_string)
|
csvfile.write(csv_string)
|
||||||
csvfile.close()
|
csvfile.close()
|
||||||
except OSError:
|
except OSError:
|
||||||
print("ERROR FILE SAVE FAILED")
|
self.save_err_dialog.exec()
|
||||||
|
|
||||||
def change_time(self):
|
def change_time(self):
|
||||||
years: int = self.time_slider.value()
|
years: int = self.time_slider.value()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user