Add warning labels
This commit is contained in:
parent
37bc515712
commit
fb3a54d430
@ -18,5 +18,5 @@ Visualize bank statements.
|
|||||||
### Generate GUI from `*.ui` file
|
### Generate GUI from `*.ui` file
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ pyuic6 res/main_window.ui -o banking_breakdown/ui/generated.py
|
$ pyuic6 res/main_window.ui -o banking_breakdown/ui/main_window.py
|
||||||
```
|
```
|
||||||
@ -12,7 +12,7 @@ def categorize_func(args):
|
|||||||
if args.i is not None:
|
if args.i is not None:
|
||||||
df = get_stripped_statement(args.i)
|
df = get_stripped_statement(args.i)
|
||||||
|
|
||||||
ui.show_main_window("res/main_window.ui", df=df)
|
ui.show_main_window(df=df)
|
||||||
|
|
||||||
|
|
||||||
def report_func(args):
|
def report_func(args):
|
||||||
|
|||||||
@ -18,6 +18,16 @@ def show_main_window(categories: typing.Sequence[str] = None,
|
|||||||
if df is not None:
|
if df is not None:
|
||||||
window.set_statement_data(df)
|
window.set_statement_data(df)
|
||||||
|
|
||||||
|
window.add_warning_text("The column 't' does not exist. Please rename the"
|
||||||
|
" column containing the dates of the transactions"
|
||||||
|
" to 't'.")
|
||||||
|
window.add_warning_text("The column 'balance' does not exist. Please"
|
||||||
|
" rename the column containing the balance after"
|
||||||
|
" each transaction to 'balance'")
|
||||||
|
window.add_warning_text("The column 'value' does not exist. Please rename"
|
||||||
|
" the column containing the values of the"
|
||||||
|
" transactions to 'value'.")
|
||||||
|
|
||||||
window.show()
|
window.show()
|
||||||
app.exec()
|
app.exec()
|
||||||
|
|
||||||
|
|||||||
@ -2,11 +2,12 @@ import typing
|
|||||||
from functools import partial
|
from functools import partial
|
||||||
|
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
from PyQt6.QtWidgets import QMainWindow, QTableView
|
from PyQt6.QtGui import QPixmap
|
||||||
|
from PyQt6.QtWidgets import QMainWindow, QTableView, QHBoxLayout, QLabel
|
||||||
from PyQt6 import uic, QtGui, QtCore
|
from PyQt6 import uic, QtGui, QtCore
|
||||||
from PyQt6.QtCore import Qt
|
from PyQt6.QtCore import Qt
|
||||||
|
|
||||||
from banking_breakdown.ui.generated import Ui_MainWindow
|
from banking_breakdown.ui.main_window import Ui_MainWindow
|
||||||
|
|
||||||
|
|
||||||
class PandasModel(QtCore.QAbstractTableModel):
|
class PandasModel(QtCore.QAbstractTableModel):
|
||||||
@ -100,3 +101,21 @@ class GeneratedWindowWrapper(QMainWindow):
|
|||||||
|
|
||||||
def _handle_apply_click(self):
|
def _handle_apply_click(self):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
def add_warning_text(self, text: str):
|
||||||
|
layout = QHBoxLayout()
|
||||||
|
|
||||||
|
warningIcon = QLabel()
|
||||||
|
pixmap = QPixmap('res/warning.png')
|
||||||
|
warningIcon.setPixmap(pixmap)
|
||||||
|
|
||||||
|
label = QLabel(text)
|
||||||
|
label.setWordWrap(True)
|
||||||
|
|
||||||
|
layout.addWidget(warningIcon)
|
||||||
|
layout.addWidget(label)
|
||||||
|
|
||||||
|
layout.setStretch(0, 0)
|
||||||
|
layout.setStretch(1, 1)
|
||||||
|
|
||||||
|
self._window.warningLayout.addLayout(layout)
|
||||||
|
|||||||
@ -15,7 +15,20 @@ class Ui_MainWindow(object):
|
|||||||
MainWindow.resize(800, 600)
|
MainWindow.resize(800, 600)
|
||||||
self.centralwidget = QtWidgets.QWidget(parent=MainWindow)
|
self.centralwidget = QtWidgets.QWidget(parent=MainWindow)
|
||||||
self.centralwidget.setObjectName("centralwidget")
|
self.centralwidget.setObjectName("centralwidget")
|
||||||
self.horizontalLayout_3 = QtWidgets.QHBoxLayout(self.centralwidget)
|
self.verticalLayout_5 = QtWidgets.QVBoxLayout(self.centralwidget)
|
||||||
|
self.verticalLayout_5.setSpacing(0)
|
||||||
|
self.verticalLayout_5.setObjectName("verticalLayout_5")
|
||||||
|
self.horizontalLayout_5 = QtWidgets.QHBoxLayout()
|
||||||
|
self.horizontalLayout_5.setObjectName("horizontalLayout_5")
|
||||||
|
self.warningWidget = QtWidgets.QWidget(parent=self.centralwidget)
|
||||||
|
self.warningWidget.setMaximumSize(QtCore.QSize(600, 16777215))
|
||||||
|
self.warningWidget.setObjectName("warningWidget")
|
||||||
|
self.warningLayout = QtWidgets.QVBoxLayout(self.warningWidget)
|
||||||
|
self.warningLayout.setContentsMargins(-1, 0, -1, 9)
|
||||||
|
self.warningLayout.setObjectName("warningLayout")
|
||||||
|
self.horizontalLayout_5.addWidget(self.warningWidget)
|
||||||
|
self.verticalLayout_5.addLayout(self.horizontalLayout_5)
|
||||||
|
self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
|
||||||
self.horizontalLayout_3.setObjectName("horizontalLayout_3")
|
self.horizontalLayout_3.setObjectName("horizontalLayout_3")
|
||||||
self.groupBox = QtWidgets.QGroupBox(parent=self.centralwidget)
|
self.groupBox = QtWidgets.QGroupBox(parent=self.centralwidget)
|
||||||
self.groupBox.setObjectName("groupBox")
|
self.groupBox.setObjectName("groupBox")
|
||||||
@ -24,6 +37,7 @@ class Ui_MainWindow(object):
|
|||||||
self.horizontalLayout = QtWidgets.QHBoxLayout()
|
self.horizontalLayout = QtWidgets.QHBoxLayout()
|
||||||
self.horizontalLayout.setObjectName("horizontalLayout")
|
self.horizontalLayout.setObjectName("horizontalLayout")
|
||||||
self.createCategoryButton = QtWidgets.QPushButton(parent=self.groupBox)
|
self.createCategoryButton = QtWidgets.QPushButton(parent=self.groupBox)
|
||||||
|
self.createCategoryButton.setStatusTip("")
|
||||||
self.createCategoryButton.setObjectName("createCategoryButton")
|
self.createCategoryButton.setObjectName("createCategoryButton")
|
||||||
self.horizontalLayout.addWidget(self.createCategoryButton)
|
self.horizontalLayout.addWidget(self.createCategoryButton)
|
||||||
self.deleteCategoryButton = QtWidgets.QPushButton(parent=self.groupBox)
|
self.deleteCategoryButton = QtWidgets.QPushButton(parent=self.groupBox)
|
||||||
@ -55,20 +69,15 @@ class Ui_MainWindow(object):
|
|||||||
self.verticalLayout.addWidget(self.statementTableView)
|
self.verticalLayout.addWidget(self.statementTableView)
|
||||||
self.horizontalLayout_3.addWidget(self.groupBox_2)
|
self.horizontalLayout_3.addWidget(self.groupBox_2)
|
||||||
self.horizontalLayout_3.setStretch(1, 1)
|
self.horizontalLayout_3.setStretch(1, 1)
|
||||||
|
self.verticalLayout_5.addLayout(self.horizontalLayout_3)
|
||||||
MainWindow.setCentralWidget(self.centralwidget)
|
MainWindow.setCentralWidget(self.centralwidget)
|
||||||
self.menubar = QtWidgets.QMenuBar(parent=MainWindow)
|
self.menubar = QtWidgets.QMenuBar(parent=MainWindow)
|
||||||
self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 23))
|
self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 23))
|
||||||
self.menubar.setObjectName("menubar")
|
self.menubar.setObjectName("menubar")
|
||||||
self.menuFile = QtWidgets.QMenu(parent=self.menubar)
|
|
||||||
self.menuFile.setObjectName("menuFile")
|
|
||||||
MainWindow.setMenuBar(self.menubar)
|
MainWindow.setMenuBar(self.menubar)
|
||||||
self.statusbar = QtWidgets.QStatusBar(parent=MainWindow)
|
self.statusbar = QtWidgets.QStatusBar(parent=MainWindow)
|
||||||
self.statusbar.setObjectName("statusbar")
|
self.statusbar.setObjectName("statusbar")
|
||||||
MainWindow.setStatusBar(self.statusbar)
|
MainWindow.setStatusBar(self.statusbar)
|
||||||
self.actionSave = QtGui.QAction(parent=MainWindow)
|
|
||||||
self.actionSave.setObjectName("actionSave")
|
|
||||||
self.menuFile.addAction(self.actionSave)
|
|
||||||
self.menubar.addAction(self.menuFile.menuAction())
|
|
||||||
|
|
||||||
self.retranslateUi(MainWindow)
|
self.retranslateUi(MainWindow)
|
||||||
QtCore.QMetaObject.connectSlotsByName(MainWindow)
|
QtCore.QMetaObject.connectSlotsByName(MainWindow)
|
||||||
@ -77,10 +86,10 @@ class Ui_MainWindow(object):
|
|||||||
_translate = QtCore.QCoreApplication.translate
|
_translate = QtCore.QCoreApplication.translate
|
||||||
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
|
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
|
||||||
self.groupBox.setTitle(_translate("MainWindow", "Categories"))
|
self.groupBox.setTitle(_translate("MainWindow", "Categories"))
|
||||||
|
self.createCategoryButton.setToolTip(_translate("MainWindow", "Create new category"))
|
||||||
self.createCategoryButton.setText(_translate("MainWindow", "Create"))
|
self.createCategoryButton.setText(_translate("MainWindow", "Create"))
|
||||||
|
self.deleteCategoryButton.setToolTip(_translate("MainWindow", "Delete selected category"))
|
||||||
self.deleteCategoryButton.setText(_translate("MainWindow", "Delete"))
|
self.deleteCategoryButton.setText(_translate("MainWindow", "Delete"))
|
||||||
|
self.applyCategoryButton.setToolTip(_translate("MainWindow", "Apply selected category to selected transactions"))
|
||||||
self.applyCategoryButton.setText(_translate("MainWindow", "Apply"))
|
self.applyCategoryButton.setText(_translate("MainWindow", "Apply"))
|
||||||
self.groupBox_2.setTitle(_translate("MainWindow", "Bank statement"))
|
self.groupBox_2.setTitle(_translate("MainWindow", "Bank statement"))
|
||||||
self.menuFile.setTitle(_translate("MainWindow", "File"))
|
|
||||||
self.actionSave.setText(_translate("MainWindow", "Save"))
|
|
||||||
self.actionSave.setShortcut(_translate("MainWindow", "Ctrl+S"))
|
|
||||||
@ -14,86 +14,127 @@
|
|||||||
<string>MainWindow</string>
|
<string>MainWindow</string>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="centralwidget">
|
<widget class="QWidget" name="centralwidget">
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_3" stretch="0,1">
|
<layout class="QVBoxLayout" name="verticalLayout_5">
|
||||||
|
<property name="spacing">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QGroupBox" name="groupBox">
|
<layout class="QHBoxLayout" name="horizontalLayout_5">
|
||||||
<property name="title">
|
<item>
|
||||||
<string>Categories</string>
|
<widget class="QWidget" name="warningWidget" native="true">
|
||||||
</property>
|
<property name="maximumSize">
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
<size>
|
||||||
<item>
|
<width>600</width>
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
<height>16777215</height>
|
||||||
<item>
|
</size>
|
||||||
<widget class="QPushButton" name="createCategoryButton">
|
</property>
|
||||||
<property name="text">
|
<layout class="QVBoxLayout" name="warningLayout">
|
||||||
<string>Create</string>
|
<property name="topMargin">
|
||||||
</property>
|
<number>0</number>
|
||||||
</widget>
|
</property>
|
||||||
</item>
|
<property name="bottomMargin">
|
||||||
<item>
|
<number>9</number>
|
||||||
<widget class="QPushButton" name="deleteCategoryButton">
|
|
||||||
<property name="text">
|
|
||||||
<string>Delete</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QListView" name="categoryListView">
|
|
||||||
<property name="sizeAdjustPolicy">
|
|
||||||
<enum>QAbstractScrollArea::AdjustToContents</enum>
|
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
|
||||||
<item>
|
|
||||||
<spacer name="horizontalSpacer">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" stdset="0">
|
|
||||||
<size>
|
|
||||||
<width>40</width>
|
|
||||||
<height>20</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QPushButton" name="applyCategoryButton">
|
|
||||||
<property name="text">
|
|
||||||
<string>Apply</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</widget>
|
||||||
</layout>
|
</item>
|
||||||
</widget>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QGroupBox" name="groupBox_2">
|
<layout class="QHBoxLayout" name="horizontalLayout_3" stretch="0,1">
|
||||||
<property name="title">
|
<item>
|
||||||
<string>Bank statement</string>
|
<widget class="QGroupBox" name="groupBox">
|
||||||
</property>
|
<property name="title">
|
||||||
<layout class="QVBoxLayout" name="verticalLayout">
|
<string>Categories</string>
|
||||||
<item>
|
</property>
|
||||||
<widget class="QTableView" name="statementTableView">
|
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||||
<property name="sortingEnabled">
|
<item>
|
||||||
<bool>false</bool>
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||||
</property>
|
<item>
|
||||||
<property name="wordWrap">
|
<widget class="QPushButton" name="createCategoryButton">
|
||||||
<bool>true</bool>
|
<property name="toolTip">
|
||||||
</property>
|
<string>Create new category</string>
|
||||||
<attribute name="horizontalHeaderShowSortIndicator" stdset="0">
|
</property>
|
||||||
<bool>false</bool>
|
<property name="statusTip">
|
||||||
</attribute>
|
<string/>
|
||||||
</widget>
|
</property>
|
||||||
</item>
|
<property name="text">
|
||||||
</layout>
|
<string>Create</string>
|
||||||
</widget>
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="deleteCategoryButton">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Delete selected category</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Delete</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QListView" name="categoryListView">
|
||||||
|
<property name="sizeAdjustPolicy">
|
||||||
|
<enum>QAbstractScrollArea::AdjustToContents</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="applyCategoryButton">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Apply selected category to selected transactions</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Apply</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QGroupBox" name="groupBox_2">
|
||||||
|
<property name="title">
|
||||||
|
<string>Bank statement</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout">
|
||||||
|
<item>
|
||||||
|
<widget class="QTableView" name="statementTableView">
|
||||||
|
<property name="sortingEnabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<attribute name="horizontalHeaderShowSortIndicator" stdset="0">
|
||||||
|
<bool>false</bool>
|
||||||
|
</attribute>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
@ -106,23 +147,8 @@
|
|||||||
<height>23</height>
|
<height>23</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QMenu" name="menuFile">
|
|
||||||
<property name="title">
|
|
||||||
<string>File</string>
|
|
||||||
</property>
|
|
||||||
<addaction name="actionSave"/>
|
|
||||||
</widget>
|
|
||||||
<addaction name="menuFile"/>
|
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QStatusBar" name="statusbar"/>
|
<widget class="QStatusBar" name="statusbar"/>
|
||||||
<action name="actionSave">
|
|
||||||
<property name="text">
|
|
||||||
<string>Save</string>
|
|
||||||
</property>
|
|
||||||
<property name="shortcut">
|
|
||||||
<string>Ctrl+S</string>
|
|
||||||
</property>
|
|
||||||
</action>
|
|
||||||
</widget>
|
</widget>
|
||||||
<resources/>
|
<resources/>
|
||||||
<connections/>
|
<connections/>
|
||||||
|
|||||||
BIN
res/warning.png
Normal file
BIN
res/warning.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 634 B |
Loading…
Reference in New Issue
Block a user