Change the way categories are added

This commit is contained in:
Andreas Tsouchlos 2024-01-03 16:09:57 +01:00
parent a31f754cfd
commit 37bc515712
2 changed files with 28 additions and 13 deletions

View File

@ -7,13 +7,13 @@ from PyQt6.QtWidgets import QApplication
from banking_breakdown.ui.generated_wrapper import GeneratedWindowWrapper from banking_breakdown.ui.generated_wrapper import GeneratedWindowWrapper
def show_main_window(ui_file, categories: typing.Sequence[str] = None, def show_main_window(categories: typing.Sequence[str] = None,
df: pd.DataFrame = None): df: pd.DataFrame = None):
if categories is None:
categories = []
app = QApplication(sys.argv) app = QApplication(sys.argv)
window = GeneratedWindowWrapper(ui_file, categories) window = GeneratedWindowWrapper()
if categories is not None:
window.add_categories(categories)
if df is not None: if df is not None:
window.set_statement_data(df) window.set_statement_data(df)
@ -30,7 +30,7 @@ def main():
df = get_stripped_statement("../../res/banking_statement_2023.csv") df = get_stripped_statement("../../res/banking_statement_2023.csv")
show_main_window("../../res/main_window.ui", categories, df) show_main_window(categories, df)
if __name__ == "__main__": if __name__ == "__main__":

View File

@ -1,4 +1,5 @@
import typing import typing
from functools import partial
import pandas as pd import pandas as pd
from PyQt6.QtWidgets import QMainWindow, QTableView from PyQt6.QtWidgets import QMainWindow, QTableView
@ -61,27 +62,41 @@ class PandasModel(QtCore.QAbstractTableModel):
class GeneratedWindowWrapper(QMainWindow): class GeneratedWindowWrapper(QMainWindow):
def __init__(self, ui_file: str, categories: typing.Sequence): def __init__(self):
super(GeneratedWindowWrapper, self).__init__() super(GeneratedWindowWrapper, self).__init__()
self._window = Ui_MainWindow() self._window = Ui_MainWindow()
self._window.setupUi(self) self._window.setupUi(self)
# Set up window # Set window behavior
self._window.statementTableView.setSelectionBehavior( self._window.statementTableView.setSelectionBehavior(
QTableView.SelectionBehavior.SelectRows) QTableView.SelectionBehavior.SelectRows)
self._set_categories(categories) # Populate categories
def _set_categories(self, categories: typing.Sequence[str]): self._category_model = QtGui.QStandardItemModel()
model = QtGui.QStandardItemModel() self._window.categoryListView.setModel(self._category_model)
self._window.categoryListView.setModel(model)
# Onclick handlers
self._window.createCategoryButton.clicked.connect(
self._handle_create_click)
def add_categories(self, categories: typing.Sequence[str]):
for category in categories: for category in categories:
item = QtGui.QStandardItem(category) item = QtGui.QStandardItem(category)
model.appendRow(item) self._category_model.appendRow(item)
def set_statement_data(self, df: pd.DataFrame): def set_statement_data(self, df: pd.DataFrame):
model = PandasModel(df) model = PandasModel(df)
self._window.statementTableView.setModel(model) self._window.statementTableView.setModel(model)
def _handle_create_click(self):
self.add_categories(['asdf'])
def _handle_delete_click(self):
pass
def _handle_apply_click(self):
pass