diff --git a/gui/output_window.ui b/gui/output_window.ui
index 50c50d1..9e3fac9 100644
--- a/gui/output_window.ui
+++ b/gui/output_window.ui
@@ -7,7 +7,7 @@
0
0
1330
- 630
+ 685
@@ -23,6 +23,85 @@
+
+
+
+ 1231
+ 642
+ 91
+ 31
+
+
+
+
+ 10
+
+
+
+ Save graph
+
+
+
+
+
+ 370
+ 635
+ 581
+ 41
+
+
+
+ 1
+
+
+ 20
+
+
+ Qt::Orientation::Horizontal
+
+
+ QSlider::TickPosition::TicksAbove
+
+
+ 1
+
+
+
+
+
+ 1134
+ 642
+ 91
+ 31
+
+
+
+
+ 10
+
+
+
+ Save CSV
+
+
+
+
+
+ 10
+ 640
+ 341
+ 31
+
+
+
+
+ 11
+
+
+
+ Fees over 1 year(s) (assuming no change in value)
+
+
diff --git a/src/main_window.py b/src/main_window.py
index e32508d..e775f48 100644
--- a/src/main_window.py
+++ b/src/main_window.py
@@ -133,7 +133,7 @@ class SIPPCompare(QMainWindow):
# Show the output window - this func is called from calculate_fee()
def show_output_win(self):
# Refresh the results when new fees are calculated
- self.output_win.display_output(self.results)
+ self.output_win.display_output(self.results, 1)
self.output_win.show()
def show_platform_list(self):
diff --git a/src/output_window.py b/src/output_window.py
index bee2fe0..f8dbdcb 100644
--- a/src/output_window.py
+++ b/src/output_window.py
@@ -1,11 +1,12 @@
-import datetime
import os
+from datetime import datetime
from PyQt6 import uic
from PyQt6.QtGui import QIcon
-from PyQt6.QtWidgets import QWidget
+from PyQt6.QtWidgets import QWidget, QFileDialog
import resource_finder
+from widgets.mpl_widget import MplWidget
class OutputWindow(QWidget):
@@ -15,17 +16,43 @@ class OutputWindow(QWidget):
uic.loadUi(resource_finder.get_res_path("gui/output_window.ui"), self)
self.setWindowIcon(QIcon(resource_finder.get_res_path("icon2.ico")))
- def display_output(self, results: list):
- ax = self.graphWidget.canvas.axes
- ax.clear()
- ax.cla()
- self.graphWidget.canvas.draw_idle()
+ # Define class variables
+ self.canvas = self.graphWidget.canvas
+ self.ax = self.canvas.axes
+ self.fig = self.canvas.figure
+ self.results = []
+
+ # Handle events
+ self.save_graph_but.clicked.connect(self.save_graph)
+ self.time_slider.valueChanged.connect(self.change_time)
+
+ def display_output(self, results: list, years: int):
+ self.results = results
+ self.ax.clear()
+ self.ax.cla()
+ self.canvas.draw_idle()
names = []
values = []
for result in results:
names.append(result[4])
- values.append(sum(result[:4]))
+ values.append(sum(result[:4]) * years)
- h_bars = ax.barh(names, values)
- ax.bar_label(h_bars, label_type='center', labels=[f"£{x:,.2f}" for x in h_bars.datavalues])
+ 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])
+
+ def save_graph(self):
+ file_picker = QFileDialog(self)
+ file_picker.setFileMode(QFileDialog.FileMode.Directory)
+ folder_path = ""
+ if file_picker.exec():
+ folder_path = file_picker.selectedFiles()[0]
+
+ cur_time = datetime.now()
+ filename_str = f"{folder_path}/SIPPCompare-{cur_time.year}.{cur_time.month}.{cur_time.day}.png"
+ self.fig.savefig(filename_str, dpi=150)
+
+ def change_time(self):
+ years: int = self.time_slider.value()
+ self.time_lab.setText(f"Fees over {years} year(s) (assuming no change in value)")
+ self.display_output(self.results, years)
diff --git a/src/widgets/mpl_widget.py b/src/widgets/mpl_widget.py
index d7c03ee..a5de8ac 100644
--- a/src/widgets/mpl_widget.py
+++ b/src/widgets/mpl_widget.py
@@ -6,8 +6,8 @@ from PyQt6.QtWidgets import QWidget, QVBoxLayout
class MplWidget(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
- self.canvas = FigureCanvasQTAgg(Figure(figsize=(10, 10), dpi=100))
+ self.canvas = FigureCanvasQTAgg(Figure(figsize=(15, 8), dpi=100))
vertical_layout = QVBoxLayout()
vertical_layout.addWidget(self.canvas)
self.canvas.axes = self.canvas.figure.add_subplot(1, 1, 1)
- self.setLayout(vertical_layout)
\ No newline at end of file
+ self.setLayout(vertical_layout)