Compare commits

...

2 Commits

Author SHA1 Message Date
8d660ea8c2 Reset sorting to normal 2024-01-05 13:15:33 +01:00
be3f3b604e Fix delete category 2024-01-05 13:12:42 +01:00
3 changed files with 18 additions and 9 deletions

View File

@ -41,11 +41,10 @@ class MainWindow(QMainWindow):
# Set up QTableView model # Set up QTableView model
self._pandas_model = PandasModel(self) self._pandas_model = PandasModel(self)
self._proxyModel = QSortFilterProxyModel(self) self._proxy_model = QSortFilterProxyModel(self)
self._proxyModel.setSourceModel(self._pandas_model) self._proxy_model.setSourceModel(self._pandas_model)
self._table_view.setModel(self._proxyModel) self._table_view.setModel(self._proxy_model)
self._proxyModel.setDynamicSortFilter(True) self._proxy_model.setSortRole(Qt.ItemDataRole.EditRole)
self._proxyModel.setSortRole(Qt.ItemDataRole.EditRole)
# Set event handlers # Set event handlers
@ -110,6 +109,9 @@ class MainWindow(QMainWindow):
def _update_categories_from_dataframe(self): def _update_categories_from_dataframe(self):
df = self._pandas_model.get_dataframe() df = self._pandas_model.get_dataframe()
if 'category' not in df.columns:
df['category'] = [' '] * len(df.index)
df_categories = df['category'].unique() df_categories = df['category'].unique()
current_categories = [self._list_widget.item(x).text() for x current_categories = [self._list_widget.item(x).text() for x
in range(self._list_widget.count())] in range(self._list_widget.count())]
@ -185,10 +187,15 @@ class MainWindow(QMainWindow):
f"Are you sure you want to delete" f"Are you sure you want to delete"
f" category '{selected_item.text()}'?") f" category '{selected_item.text()}'?")
df = self._pandas_model.get_dataframe()
if 'category' not in df.columns:
df['category'] = [' '] * len(df.index)
if button == QMessageBox.StandardButton.Yes: if button == QMessageBox.StandardButton.Yes:
self._list_widget.takeItem(self._list_widget.row(selected_item))
df = self.get_statement_data()
df.loc[df['category'] == selected_item.text(), 'category'] = ' ' df.loc[df['category'] == selected_item.text(), 'category'] = ' '
self._list_widget.takeItem(self._list_widget.row(selected_item))
self._pandas_model.set_dataframe(df)
def _handle_clear_click(self): def _handle_clear_click(self):
self._assign_category(' ') self._assign_category(' ')
@ -201,7 +208,6 @@ class MainWindow(QMainWindow):
df = self._pandas_model.get_dataframe() df = self._pandas_model.get_dataframe()
df.loc[row_indices, 'category'] = category df.loc[row_indices, 'category'] = category
self._pandas_model.set_dataframe(df) self._pandas_model.set_dataframe(df)
def _handle_apply_click(self): def _handle_apply_click(self):

View File

@ -1,7 +1,7 @@
import numpy import numpy
import pandas as pd import pandas as pd
from PyQt6 import QtCore from PyQt6 import QtCore
from PyQt6.QtCore import Qt, QModelIndex from PyQt6.QtCore import Qt, QModelIndex, QSortFilterProxyModel
def _get_str_dataframe(df: pd.DataFrame) -> pd.DataFrame: def _get_str_dataframe(df: pd.DataFrame) -> pd.DataFrame:

View File

@ -129,6 +129,9 @@
<property name="sortingEnabled"> <property name="sortingEnabled">
<bool>true</bool> <bool>true</bool>
</property> </property>
<attribute name="horizontalHeaderShowSortIndicator" stdset="0">
<bool>true</bool>
</attribute>
<attribute name="horizontalHeaderStretchLastSection"> <attribute name="horizontalHeaderStretchLastSection">
<bool>true</bool> <bool>true</bool>
</attribute> </attribute>