Fix delete category
This commit is contained in:
parent
6a497c8575
commit
be3f3b604e
@ -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
|
||||||
|
|
||||||
@ -61,6 +60,7 @@ class MainWindow(QMainWindow):
|
|||||||
header.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu)
|
header.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu)
|
||||||
header.customContextMenuRequested.connect(
|
header.customContextMenuRequested.connect(
|
||||||
self._handle_header_right_click)
|
self._handle_header_right_click)
|
||||||
|
header.sectionClicked.connect(self._handle_header_left_click)
|
||||||
|
|
||||||
self._list_widget.itemSelectionChanged.connect(
|
self._list_widget.itemSelectionChanged.connect(
|
||||||
self._handle_list_selection_changed)
|
self._handle_list_selection_changed)
|
||||||
@ -110,6 +110,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())]
|
||||||
@ -154,6 +157,11 @@ class MainWindow(QMainWindow):
|
|||||||
# Event handlers
|
# Event handlers
|
||||||
#
|
#
|
||||||
|
|
||||||
|
def _handle_header_left_click(self, logical_index):
|
||||||
|
self._proxy_model.sort(logical_index,
|
||||||
|
self._table_view.horizontalHeader()
|
||||||
|
.sortIndicatorOrder())
|
||||||
|
|
||||||
def _handle_header_right_click(self, pos):
|
def _handle_header_right_click(self, pos):
|
||||||
column = self._table_view.horizontalHeader().logicalIndexAt(pos)
|
column = self._table_view.horizontalHeader().logicalIndexAt(pos)
|
||||||
|
|
||||||
@ -185,10 +193,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 +214,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):
|
||||||
|
|||||||
@ -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:
|
||||||
|
|||||||
@ -127,8 +127,11 @@
|
|||||||
<enum>QAbstractItemView::SelectRows</enum>
|
<enum>QAbstractItemView::SelectRows</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="sortingEnabled">
|
<property name="sortingEnabled">
|
||||||
<bool>true</bool>
|
<bool>false</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>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user