Compare commits

...

6 Commits

Author SHA1 Message Date
Marcel Kapfer 3fe735e596
Offer clearing fields when closing code dialog
The offer is only made if the content has been copied at least once
2020-09-09 23:45:06 +02:00
Marcel Kapfer f51e5ed878
Added clear fields dialog code 2020-09-09 23:44:52 +02:00
Marcel Kapfer 371ff3fa9f
Handle clear fields menu entry 2020-09-09 23:44:27 +02:00
Marcel Kapfer ba3a575ba2
Added clear function
The clear function reset all input areas to their initial (mostly
empty) value.
2020-09-09 23:43:40 +02:00
Marcel Kapfer cb139c6fbf
Added mene item to clear fields 2020-09-09 23:42:51 +02:00
Marcel Kapfer 2b9e2292fa
Added Clear Fields Dialog 2020-09-09 23:41:42 +02:00
5 changed files with 224 additions and 17 deletions

52
ui_clear_dialog.py Normal file
View File

@ -0,0 +1,52 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'ui_clear_dialog.ui'
#
# Created by: PyQt5 UI code generator 5.15.0
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_ClearDialog(object):
def setupUi(self, ClearDialog):
ClearDialog.setObjectName("ClearDialog")
ClearDialog.setWindowModality(QtCore.Qt.ApplicationModal)
ClearDialog.resize(265, 75)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Minimum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(ClearDialog.sizePolicy().hasHeightForWidth())
ClearDialog.setSizePolicy(sizePolicy)
self.verticalLayout = QtWidgets.QVBoxLayout(ClearDialog)
self.verticalLayout.setObjectName("verticalLayout")
self.t_clear = QtWidgets.QLabel(ClearDialog)
self.t_clear.setObjectName("t_clear")
self.verticalLayout.addWidget(self.t_clear)
self.l_buttons = QtWidgets.QHBoxLayout()
self.l_buttons.setObjectName("l_buttons")
self.b_yes = QtWidgets.QPushButton(ClearDialog)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.b_yes.sizePolicy().hasHeightForWidth())
self.b_yes.setSizePolicy(sizePolicy)
self.b_yes.setObjectName("b_yes")
self.l_buttons.addWidget(self.b_yes)
self.b_no = QtWidgets.QPushButton(ClearDialog)
self.b_no.setObjectName("b_no")
self.l_buttons.addWidget(self.b_no)
self.verticalLayout.addLayout(self.l_buttons)
self.retranslateUi(ClearDialog)
QtCore.QMetaObject.connectSlotsByName(ClearDialog)
def retranslateUi(self, ClearDialog):
_translate = QtCore.QCoreApplication.translate
ClearDialog.setWindowTitle(_translate("ClearDialog", "Eingabefelder leeren"))
self.t_clear.setText(_translate("ClearDialog", "Sollen die Eingabefelder geleert werden?"))
self.b_yes.setText(_translate("ClearDialog", "Ja"))
self.b_no.setText(_translate("ClearDialog", "Nein"))

61
ui_clear_dialog.ui Normal file
View File

@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>ClearDialog</class>
<widget class="QDialog" name="ClearDialog">
<property name="windowModality">
<enum>Qt::ApplicationModal</enum>
</property>
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>265</width>
<height>75</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="windowTitle">
<string>Eingabefelder leeren</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QLabel" name="t_clear">
<property name="text">
<string>Sollen die Eingabefelder geleert werden?</string>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="l_buttons">
<item>
<widget class="QPushButton" name="b_yes">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Ja</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="b_no">
<property name="text">
<string>Nein</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -2,9 +2,10 @@
# Form implementation generated from reading ui file 'ui_mainwindow.ui'
#
# Created by: PyQt5 UI code generator 5.14.2
# Created by: PyQt5 UI code generator 5.15.0
#
# WARNING! All changes made in this file will be lost!
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets
@ -49,10 +50,6 @@ class Ui_MainWindow(object):
self.e_servings.setText("")
self.e_servings.setObjectName("e_servings")
self.y_basics.addWidget(self.e_servings, 1, 1, 1, 1)
self.e_url = QtWidgets.QLineEdit(self.t_basics)
self.e_url.setText("")
self.e_url.setObjectName("e_url")
self.y_basics.addWidget(self.e_url, 2, 3, 1, 1)
self.l_recipe_name = QtWidgets.QLabel(self.t_basics)
self.l_recipe_name.setObjectName("l_recipe_name")
self.y_basics.addWidget(self.l_recipe_name, 0, 0, 1, 1)
@ -75,6 +72,10 @@ class Ui_MainWindow(object):
self.e_rating_overall.setProperty("value", 3)
self.e_rating_overall.setObjectName("e_rating_overall")
self.y_basics.addWidget(self.e_rating_overall, 2, 1, 1, 1)
self.e_url = QtWidgets.QLineEdit(self.t_basics)
self.e_url.setText("")
self.e_url.setObjectName("e_url")
self.y_basics.addWidget(self.e_url, 2, 3, 1, 1)
self.verticalLayout_9.addLayout(self.y_basics)
self.horizontalLayout_16 = QtWidgets.QHBoxLayout()
self.horizontalLayout_16.setObjectName("horizontalLayout_16")
@ -361,15 +362,19 @@ class Ui_MainWindow(object):
self.gridLayout.addWidget(self.tabWidget, 0, 0, 1, 1)
MainWindow.setCentralWidget(self.centralwidget)
self.menuBar = QtWidgets.QMenuBar(MainWindow)
self.menuBar.setGeometry(QtCore.QRect(0, 0, 800, 30))
self.menuBar.setGeometry(QtCore.QRect(0, 0, 800, 28))
self.menuBar.setObjectName("menuBar")
self.menuMen = QtWidgets.QMenu(self.menuBar)
self.menuMen.setObjectName("menuMen")
MainWindow.setMenuBar(self.menuBar)
self.ma_clear_fields = QtWidgets.QAction(MainWindow)
self.ma_clear_fields.setObjectName("ma_clear_fields")
self.ma_close = QtWidgets.QAction(MainWindow)
self.ma_close.setObjectName("ma_close")
self.ma_information = QtWidgets.QAction(MainWindow)
self.ma_information.setObjectName("ma_information")
self.menuMen.addAction(self.ma_clear_fields)
self.menuMen.addSeparator()
self.menuMen.addAction(self.ma_information)
self.menuMen.addSeparator()
self.menuMen.addAction(self.ma_close)
@ -454,5 +459,6 @@ class Ui_MainWindow(object):
self.b_rating_remove.setText(_translate("MainWindow", "Entfernen"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.t_rating), _translate("MainWindow", "Bewertung"))
self.menuMen.setTitle(_translate("MainWindow", "Me&nü"))
self.ma_clear_fields.setText(_translate("MainWindow", "Eingaben löschen"))
self.ma_close.setText(_translate("MainWindow", "&Schließen"))
self.ma_information.setText(_translate("MainWindow", "Informationen"))

View File

@ -98,13 +98,6 @@
</property>
</widget>
</item>
<item row="2" column="3">
<widget class="QLineEdit" name="e_url">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="l_recipe_name">
<property name="text">
@ -150,6 +143,13 @@
</property>
</widget>
</item>
<item row="2" column="3">
<widget class="QLineEdit" name="e_url">
<property name="text">
<string/>
</property>
</widget>
</item>
</layout>
</item>
<item>
@ -792,19 +792,26 @@
<x>0</x>
<y>0</y>
<width>800</width>
<height>30</height>
<height>28</height>
</rect>
</property>
<widget class="QMenu" name="menuMen">
<property name="title">
<string>Me&amp;nü</string>
</property>
<addaction name="ma_clear_fields"/>
<addaction name="separator"/>
<addaction name="ma_information"/>
<addaction name="separator"/>
<addaction name="ma_close"/>
</widget>
<addaction name="menuMen"/>
</widget>
<action name="ma_clear_fields">
<property name="text">
<string>Eingaben löschen</string>
</property>
</action>
<action name="ma_close">
<property name="text">
<string>&amp;Schließen</string>

View File

@ -28,6 +28,7 @@ from PyQt5.QtWidgets import QApplication, QMainWindow, QMessageBox, QTableWidget
from ui_mainwindow import Ui_MainWindow
from ui_code_dialog import Ui_WikiCode
from ui_about_dialog import Ui_About
from ui_clear_dialog import Ui_ClearDialog
class AboutDialog(QDialog, Ui_About):
def __init__(self, *args, **kwargs):
@ -38,14 +39,25 @@ class AboutDialog(QDialog, Ui_About):
self.show()
class ClearDialog(QDialog, Ui_ClearDialog):
def __init__(self, *args, **kwargs):
super(ClearDialog, self).__init__(*args, **kwargs)
self.setupUi(self)
self.b_yes.clicked.connect(self.accept)
self.b_no.clicked.connect(self.reject)
self.show()
class WikiCodeDialog(QDialog, Ui_WikiCode):
def __init__(self, code, *args, **kwargs):
super(WikiCodeDialog, self).__init__(*args, **kwargs)
self.setupUi(self)
self.copied = False
self.e_code.setPlainText(code)
self.b_close.clicked.connect(self.close)
self.b_close.clicked.connect(self.clear_fields)
self.b_copy.clicked.connect(self.copy)
self.show()
@ -53,6 +65,20 @@ class WikiCodeDialog(QDialog, Ui_WikiCode):
def copy(self):
self.e_code.selectAll()
self.e_code.copy()
self.copied = True
def clear_fields(self):
"""
Show the clear fields dialog if the code was at least copied once.
"""
if self.copied:
dialog = ClearDialog()
dialog.rejected.connect(self.reject)
dialog.accepted.connect(self.accept)
dialog.exec_()
else:
self.close()
class MainWindow(QMainWindow, Ui_MainWindow):
def __init__(self, *args, **kwargs):
@ -63,8 +89,9 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.b_cancel.clicked.connect(self.close)
self.ma_close.triggered.connect(self.close)
# Connect about action
# Connect other menu actions
self.ma_information.triggered.connect(self.about)
self.ma_clear_fields.triggered.connect(self.clear_fields)
# Conncect recipe name typing
self.e_recipe_name.textChanged.connect(self.updateTitle)
@ -277,6 +304,59 @@ class MainWindow(QMainWindow, Ui_MainWindow):
code = current_recipe.wikicode(writer)
dialog = WikiCodeDialog(code)
dialog.accepted.connect(self.clear)
dialog.exec_()
def clear(self):
"""
Clear all fields
"""
# Tab: Basics
self.e_recipe_name.setText("")
self.e_servings.setText("")
self.e_time.setText("")
self.e_rating_overall.setValue(3)
self.e_url.setText("")
self.e_category.setText("")
self.v_categories.clear()
# Tab: Ingredients
self.e_ingredient.setText("")
self.e_amount.setText("")
self.c_heading.setChecked(False)
self.v_ingredients.clear()
# Tab: Utensils
self.e_utensil.setText("")
self.v_utensils.clear()
# Tab: Steps
self.e_step.setText("")
self.v_steps.clear()
# Tab: Notes
self.e_note.setText("")
self.v_notes.clear()
# Tab: Tips
self.e_tip.setText("")
self.v_tips.clear()
# Tab: Variations
self.e_variation.setText("")
self.v_variations.clear()
# Tab: Ratings
self.e_rating.setText("")
self.v_ratings.clear()
def clear_fields(self):
"""
Show the clear fields dialog.
"""
dialog = ClearDialog()
dialog.accepted.connect(self.clear)
dialog.exec_()
def about(self):
@ -296,6 +376,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
if reply == QMessageBox.Yes:
super.close()
if __name__ == "__main__":
app = QApplication([])
app.setApplicationName("WikiCookBook")