diff --git a/banking_breakdown/ui.py b/banking_breakdown/ui.py index 164b785..e046d11 100644 --- a/banking_breakdown/ui.py +++ b/banking_breakdown/ui.py @@ -8,7 +8,7 @@ from PyQt6.QtCore import Qt, QSortFilterProxyModel from PyQt6.QtGui import QPixmap, QAction from PyQt6.QtWidgets import QMainWindow, QPushButton, QHBoxLayout, QLabel, \ QVBoxLayout, QMenu, QApplication, QTableView, QListView, QInputDialog, \ - QMessageBox, QFileDialog + QMessageBox, QFileDialog, QListWidget # @@ -91,7 +91,7 @@ class MainWindow(QMainWindow): self._apply_button \ = self.findChild(QPushButton, "applyCategoryButton") self._list_widget \ - = self.findChild(QListView, "categoryListWidget") + = self.findChild(QListWidget, "categoryListWidget") self._table_view \ = self.findChild(QTableView, "transactionTableView") self._action_save \ @@ -257,16 +257,40 @@ class MainWindow(QMainWindow): self.set_statement_data(df) def _handle_create_click(self): - self.add_categories(['asdf']) + new_name, flag = QInputDialog.getText(self, "Create category", + "New category:", + text="Category") + if not flag: + return + + current_items = [self._list_widget.item(x).text() for x + in range(self._list_widget.count())] + + if new_name not in current_items: + self.add_categories([new_name]) + else: + QMessageBox.warning(self, "No action performed", + f"Category '{new_name}' already exists.") def _handle_delete_click(self): - print(self._list_widget.selectedItems()[0].text()) + selected_item = self._list_widget.selectedItems()[0] + + button = QMessageBox.question(self, "Delete category", + f"Are you sure you want to delete" + f" category '{selected_item.text()}'?") + + if button == QMessageBox.StandardButton.Yes: + self._list_widget.takeItem(self._list_widget.row(selected_item)) + + def _assign_category(self, category: str): + print(category) def _handle_apply_click(self): - print(self._list_widget.selectedItems()[0].text()) + category = self._list_widget.selectedItems()[0].text() + self._assign_category(category) def _handle_item_double_click(self, item): - print(item.text()) + self._assign_category(item.text()) def _handle_save(self): filename, _ = QFileDialog.getSaveFileName(self, 'Save File')