Complete file refactoring
No code changes outside of the refactoring process.
This commit is contained in:
parent
65dc5a65e6
commit
184a5ee20b
15 changed files with 425 additions and 421 deletions
182
WikiCookBook/Model/Recipe.py
Normal file
182
WikiCookBook/Model/Recipe.py
Normal file
|
@ -0,0 +1,182 @@
|
|||
"""
|
||||
A class for modeling and saving information about a recipe.
|
||||
Copyright (C) 2020 Marcel Kapfer <opensource@mmk2410.org>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
"""
|
||||
|
||||
class Recipe():
|
||||
"""
|
||||
This class represents an recipe.
|
||||
"""
|
||||
|
||||
def __init__(self, name, servings, time, rating, url):
|
||||
self.name = name
|
||||
self.servings = servings
|
||||
self.time = time
|
||||
self.rating = rating
|
||||
self.url = url
|
||||
|
||||
self.categories = []
|
||||
self.ingredients = []
|
||||
self.utensils = []
|
||||
self.steps = []
|
||||
self.notes = []
|
||||
self.tips = []
|
||||
self.variations = []
|
||||
self.ratings = []
|
||||
|
||||
def add_category(self, category):
|
||||
self.categories.append(category)
|
||||
|
||||
def add_ingredient(self, amount, ingredient):
|
||||
self.ingredients.append((amount, ingredient))
|
||||
|
||||
def add_utensil(self, utensil):
|
||||
self.utensils.append(utensil)
|
||||
|
||||
def add_step(self, step):
|
||||
self.steps.append(step)
|
||||
|
||||
def add_note(self, note):
|
||||
self.notes.append(note)
|
||||
|
||||
def add_tip(self, tip):
|
||||
self.tips.append(tip)
|
||||
|
||||
def add_variation(self, variation):
|
||||
self.variations.append(variation)
|
||||
|
||||
def add_rating(self, rating):
|
||||
self.ratings.append(rating)
|
||||
|
||||
def wikicode(self, writer):
|
||||
# Define table styles
|
||||
style_titletable = 'tablestyle="margin-right:auto;margin-left:auto; width: 100%;text-align:center;"'
|
||||
style_title_title = '#BF31C3 height="75px" style="font-size:35px;font-weight:bold;border: 3px solid #BF31C3;color:#ffffff"'
|
||||
style_title_image = 'height="200pt" style="border:none;"'
|
||||
style_title_info = 'height="50pt" style="font-size:20px;font-weight:bold;border: 3px solid #BF31C3;color:#BF31C3"'
|
||||
|
||||
style_infotable = 'tablestyle="margin-right:auto;margin-left:auto; width: 100%;text-align:center;" height="50pt" #BF31C3'
|
||||
style_info_headingrow = 'rowstyle="font-size:20px;font-weight:bold;color:#ffffff"'
|
||||
style_info_heading = '25% #BF31C3 style="border: none; border-right: 3px solid #fff;"'
|
||||
style_info_contentrow = 'height="40pt" rowstyle="font-size:20px;font-weight:bold;"'
|
||||
style_info_content = '25% style="border: none; border-bottom:3px solid #BF31C3"'
|
||||
|
||||
style_ingredientstable = 'tablestyle="margin-right:auto;margin-left:auto; width: 100%;text-align:center;font-size:15px;"'
|
||||
style_ingredients_heading = '#BF31C3 height="50px" style="color:#ffffff;font-size:20px;font-weight:bold;border: 3px solid #BF31C3;"'
|
||||
style_ingredients_heading_2_left = '20% style="text-align:right;border:none;border-right:3px solid #BF31C3;border-bottom:3px solid #BF31C3"'
|
||||
style_ingredients_heading_2_right = '80% style="text-align:left;border:none;border-bottom:3px solid #BF31C3"'
|
||||
style_ingredients_subheading = '#BF31C3 style="color:#ffffff"'
|
||||
style_ingredients_left = '20% style="text-align:right;border:none;border-right:3px solid #BF31C3;"'
|
||||
style_ingredients_right = '80% style="text-align:left;border:none;"'
|
||||
|
||||
style_heading = 'tablestyle="margin-right:auto;margin-left:auto; width: 100%;text-align:center;font-size:20px" #BF31C3 height="50px" style="font-size:20px;font-weight:bold;border: 3px solid #BF31C3;color:#ffffff;"'
|
||||
|
||||
# Array holding the complete code
|
||||
code = []
|
||||
|
||||
# Title table (title, image and Info header
|
||||
code.append(writer.table_cell(""))
|
||||
code.append(writer.table_cell(""))
|
||||
code.append(writer.table_cell(""))
|
||||
code.append(writer.table_cell(self.name, f"{style_titletable} {style_title_title}"))
|
||||
code.append(writer.table_row_end())
|
||||
code.append(writer.table_cell(""))
|
||||
code.append(writer.table_cell(""))
|
||||
code.append(writer.table_cell(""))
|
||||
code.append(writer.table_cell(writer.link(self.name, "attachment:rezept.jpg", "width=30%", display=True), style_title_image))
|
||||
code.append(writer.table_row_end())
|
||||
code.append(writer.table_cell(""))
|
||||
code.append(writer.table_cell(""))
|
||||
code.append(writer.table_cell(""))
|
||||
code.append(writer.table_cell("I N F O", style_title_info))
|
||||
code.append(writer.table_row_end())
|
||||
code.append(writer.newline())
|
||||
|
||||
# Basic information table
|
||||
code.append(writer.table_cell("Portionen", f"{style_infotable} {style_info_headingrow} {style_info_heading}"))
|
||||
code.append(writer.table_cell("Zeit", style_info_heading))
|
||||
code.append(writer.table_cell("Bewertung", style_info_heading))
|
||||
code.append(writer.table_cell("Link", style_info_heading))
|
||||
code.append(writer.table_row_end())
|
||||
code.append(writer.table_cell(self.servings, f"{style_info_contentrow} {style_info_content}"))
|
||||
code.append(writer.table_cell(self.time, style_info_content))
|
||||
code.append(writer.table_cell("🟢" * self.rating + "⚪" * (5 - self.rating), style_info_content))
|
||||
code.append(writer.table_cell(writer.link(self.name, self.url), style_info_content))
|
||||
code.append(writer.table_row_end())
|
||||
code.append(writer.newline())
|
||||
code.append(writer.linebreak())
|
||||
code.append(writer.newline())
|
||||
|
||||
# Ingredients table
|
||||
code.append(writer.table_cell(""))
|
||||
code.append(writer.table_cell("Zutaten", f"{style_ingredientstable} {style_ingredients_heading}"))
|
||||
code.append(writer.table_row_end())
|
||||
code.append(writer.table_cell("Menge", style_ingredients_heading_2_left))
|
||||
code.append(writer.table_cell("Zutat", style_ingredients_heading_2_right))
|
||||
code.append(writer.table_row_end())
|
||||
|
||||
for ingredient in self.ingredients:
|
||||
if ingredient[0] == "----------":
|
||||
code.append(writer.table_cell(""))
|
||||
code.append(writer.table_cell(ingredient[1], style_ingredients_subheading))
|
||||
else:
|
||||
code.append(writer.table_cell(ingredient[0], style_ingredients_left))
|
||||
code.append(writer.table_cell(ingredient[1], style_ingredients_right))
|
||||
code.append(writer.table_row_end())
|
||||
|
||||
# Sections
|
||||
sections = [(self.utensils, "Küchenutensilien"),
|
||||
(self.steps, "Zubereitung"),
|
||||
(self.notes, "Notizen"),
|
||||
(self.tips, "Tipps"),
|
||||
(self.variations, "Variationen"),
|
||||
(self.ratings, "Bewertung")]
|
||||
|
||||
for section in sections:
|
||||
code = code + self.wikicode_section(section[1], section[0], writer, style_heading)
|
||||
|
||||
code.append(writer.newline())
|
||||
code.append(writer.newline())
|
||||
|
||||
# Categories
|
||||
code.append(writer.hrule())
|
||||
|
||||
for category in self.categories:
|
||||
code.append(f"{category} ")
|
||||
|
||||
code.append(writer.newline())
|
||||
|
||||
return ''.join(code)
|
||||
|
||||
def wikicode_section(self, name, items, writer, style_heading):
|
||||
"""
|
||||
Get the standard wiki code for a section with a unorderd list.
|
||||
"""
|
||||
code = []
|
||||
|
||||
if items:
|
||||
code.append(writer.newline())
|
||||
code.append(writer.linebreak())
|
||||
code.append(writer.newline())
|
||||
|
||||
code.append(writer.table_cell(name, style_heading))
|
||||
code.append(writer.table_row_end())
|
||||
|
||||
for item in items:
|
||||
code.append(writer.ulitem(item))
|
||||
code.append(writer.newline())
|
||||
|
||||
return code
|
78
WikiCookBook/UI/AboutDialog.py
Normal file
78
WikiCookBook/UI/AboutDialog.py
Normal file
|
@ -0,0 +1,78 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Form implementation generated from reading ui file 'ui_about_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 AboutDialog(object):
|
||||
def setupUi(self, About):
|
||||
About.setObjectName("About")
|
||||
About.resize(400, 300)
|
||||
self.verticalLayout_2 = QtWidgets.QVBoxLayout(About)
|
||||
self.verticalLayout_2.setObjectName("verticalLayout_2")
|
||||
spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||
self.verticalLayout_2.addItem(spacerItem)
|
||||
self.l_title = QtWidgets.QLabel(About)
|
||||
font = QtGui.QFont()
|
||||
font.setBold(True)
|
||||
font.setWeight(75)
|
||||
self.l_title.setFont(font)
|
||||
self.l_title.setAlignment(QtCore.Qt.AlignCenter)
|
||||
self.l_title.setObjectName("l_title")
|
||||
self.verticalLayout_2.addWidget(self.l_title)
|
||||
self.l_description = QtWidgets.QLabel(About)
|
||||
self.l_description.setAlignment(QtCore.Qt.AlignCenter)
|
||||
self.l_description.setWordWrap(True)
|
||||
self.l_description.setObjectName("l_description")
|
||||
self.verticalLayout_2.addWidget(self.l_description)
|
||||
self.label = QtWidgets.QLabel(About)
|
||||
self.label.setAlignment(QtCore.Qt.AlignCenter)
|
||||
self.label.setObjectName("label")
|
||||
self.verticalLayout_2.addWidget(self.label)
|
||||
self.l_basedon = QtWidgets.QLabel(About)
|
||||
self.l_basedon.setAlignment(QtCore.Qt.AlignCenter)
|
||||
self.l_basedon.setObjectName("l_basedon")
|
||||
self.verticalLayout_2.addWidget(self.l_basedon)
|
||||
self.l_copyright = QtWidgets.QLabel(About)
|
||||
self.l_copyright.setAlignment(QtCore.Qt.AlignCenter)
|
||||
self.l_copyright.setObjectName("l_copyright")
|
||||
self.verticalLayout_2.addWidget(self.l_copyright)
|
||||
self.l_sourcecode = QtWidgets.QLabel(About)
|
||||
self.l_sourcecode.setAlignment(QtCore.Qt.AlignCenter)
|
||||
self.l_sourcecode.setObjectName("l_sourcecode")
|
||||
self.verticalLayout_2.addWidget(self.l_sourcecode)
|
||||
spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||
self.verticalLayout_2.addItem(spacerItem1)
|
||||
self.horizontalLayout = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout.setObjectName("horizontalLayout")
|
||||
spacerItem2 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.horizontalLayout.addItem(spacerItem2)
|
||||
self.b_close = QtWidgets.QPushButton(About)
|
||||
self.b_close.setObjectName("b_close")
|
||||
self.horizontalLayout.addWidget(self.b_close)
|
||||
spacerItem3 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.horizontalLayout.addItem(spacerItem3)
|
||||
self.verticalLayout_2.addLayout(self.horizontalLayout)
|
||||
spacerItem4 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||
self.verticalLayout_2.addItem(spacerItem4)
|
||||
|
||||
self.retranslateUi(About)
|
||||
QtCore.QMetaObject.connectSlotsByName(About)
|
||||
|
||||
def retranslateUi(self, About):
|
||||
_translate = QtCore.QCoreApplication.translate
|
||||
About.setWindowTitle(_translate("About", "About"))
|
||||
self.l_title.setText(_translate("About", "WikiCookBook"))
|
||||
self.l_description.setText(_translate("About", "A graphical editor for creating cookbook entries using the MoinMoin wiki syntax"))
|
||||
self.label.setText(_translate("About", "Version 0.2.0"))
|
||||
self.l_basedon.setText(_translate("About", "<html><head/><body><p>Based on <a href=\"https://www.python.org/\"><span style=\" text-decoration: underline; color:#4c6b8a;\">Python</span></a> and <a href=\"https://www.riverbankcomputing.com/software/pyqt/intro\"><span style=\" text-decoration: underline; color:#4c6b8a;\">PyQt</span></a>.</p></body></html>"))
|
||||
self.l_copyright.setText(_translate("About", "<html><head/><body><p>2020 © Marcel Kapfer (opensource@mmk2410.org)<br/>Licensed under GPLv3</p></body></html>"))
|
||||
self.l_sourcecode.setText(_translate("About", "<html><head/><body><p>Sourcecode available at<br/><a href=\"https://git.mmk2410.org/mmk2410/wikicookbook\"><span style=\" text-decoration: underline; color:#4c6b8a;\">git.mmk2410.org/mmk2410/wikicookbook</span></a></p></body></html>"))
|
||||
self.b_close.setText(_translate("About", "Schließen"))
|
52
WikiCookBook/UI/ClearDialog.py
Normal file
52
WikiCookBook/UI/ClearDialog.py
Normal 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 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"))
|
52
WikiCookBook/UI/CloseDialog.py
Normal file
52
WikiCookBook/UI/CloseDialog.py
Normal file
|
@ -0,0 +1,52 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Form implementation generated from reading ui file 'ui_close_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 CloseDialog(object):
|
||||
def setupUi(self, CloseDialog):
|
||||
CloseDialog.setObjectName("CloseDialog")
|
||||
CloseDialog.setWindowModality(QtCore.Qt.ApplicationModal)
|
||||
CloseDialog.resize(313, 75)
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Minimum)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(CloseDialog.sizePolicy().hasHeightForWidth())
|
||||
CloseDialog.setSizePolicy(sizePolicy)
|
||||
self.verticalLayout = QtWidgets.QVBoxLayout(CloseDialog)
|
||||
self.verticalLayout.setObjectName("verticalLayout")
|
||||
self.t_close = QtWidgets.QLabel(CloseDialog)
|
||||
self.t_close.setObjectName("t_close")
|
||||
self.verticalLayout.addWidget(self.t_close)
|
||||
self.l_buttons = QtWidgets.QHBoxLayout()
|
||||
self.l_buttons.setObjectName("l_buttons")
|
||||
self.b_yes = QtWidgets.QPushButton(CloseDialog)
|
||||
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(CloseDialog)
|
||||
self.b_no.setObjectName("b_no")
|
||||
self.l_buttons.addWidget(self.b_no)
|
||||
self.verticalLayout.addLayout(self.l_buttons)
|
||||
|
||||
self.retranslateUi(CloseDialog)
|
||||
QtCore.QMetaObject.connectSlotsByName(CloseDialog)
|
||||
|
||||
def retranslateUi(self, CloseDialog):
|
||||
_translate = QtCore.QCoreApplication.translate
|
||||
CloseDialog.setWindowTitle(_translate("CloseDialog", "Programm schließen"))
|
||||
self.t_close.setText(_translate("CloseDialog", "Soll das Programm wirklich geschlossen werden?"))
|
||||
self.b_yes.setText(_translate("CloseDialog", "Ja"))
|
||||
self.b_no.setText(_translate("CloseDialog", "Nein"))
|
45
WikiCookBook/UI/CodeDialog.py
Normal file
45
WikiCookBook/UI/CodeDialog.py
Normal file
|
@ -0,0 +1,45 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Form implementation generated from reading ui file 'ui_code_dialog.ui'
|
||||
#
|
||||
# Created by: PyQt5 UI code generator 5.14.2
|
||||
#
|
||||
# WARNING! All changes made in this file will be lost!
|
||||
|
||||
|
||||
from PyQt5 import QtCore, QtGui, QtWidgets
|
||||
|
||||
|
||||
class CodeDialog(object):
|
||||
def setupUi(self, CodeDialog):
|
||||
CodeDialog.setObjectName("CodeDialog")
|
||||
CodeDialog.resize(530, 643)
|
||||
self.verticalLayout_2 = QtWidgets.QVBoxLayout(CodeDialog)
|
||||
self.verticalLayout_2.setObjectName("verticalLayout_2")
|
||||
self.e_code = QtWidgets.QPlainTextEdit(CodeDialog)
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Monospace")
|
||||
self.e_code.setFont(font)
|
||||
self.e_code.setReadOnly(True)
|
||||
self.e_code.setObjectName("e_code")
|
||||
self.verticalLayout_2.addWidget(self.e_code)
|
||||
self.horizontalLayout = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout.setObjectName("horizontalLayout")
|
||||
spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.horizontalLayout.addItem(spacerItem)
|
||||
self.b_copy = QtWidgets.QPushButton(CodeDialog)
|
||||
self.b_copy.setObjectName("b_copy")
|
||||
self.horizontalLayout.addWidget(self.b_copy)
|
||||
self.b_close = QtWidgets.QPushButton(CodeDialog)
|
||||
self.b_close.setObjectName("b_close")
|
||||
self.horizontalLayout.addWidget(self.b_close)
|
||||
self.verticalLayout_2.addLayout(self.horizontalLayout)
|
||||
|
||||
self.retranslateUi(CodeDialog)
|
||||
QtCore.QMetaObject.connectSlotsByName(CodeDialog)
|
||||
|
||||
def retranslateUi(self, CodeDialog):
|
||||
_translate = QtCore.QCoreApplication.translate
|
||||
CodeDialog.setWindowTitle(_translate("CodeDialog", "CodeDialog"))
|
||||
self.b_copy.setText(_translate("CodeDialog", "Kopieren"))
|
||||
self.b_close.setText(_translate("CodeDialog", "Schließen"))
|
502
WikiCookBook/UI/MainWindow.py
Normal file
502
WikiCookBook/UI/MainWindow.py
Normal file
|
@ -0,0 +1,502 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Form implementation generated from reading ui file 'ui_mainwindow.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 MainWindow(object):
|
||||
def setupUi(self, MainWindow):
|
||||
MainWindow.setObjectName("MainWindow")
|
||||
MainWindow.resize(800, 620)
|
||||
MainWindow.setMinimumSize(QtCore.QSize(800, 620))
|
||||
self.centralwidget = QtWidgets.QWidget(MainWindow)
|
||||
self.centralwidget.setObjectName("centralwidget")
|
||||
self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
|
||||
self.gridLayout.setContentsMargins(10, 10, 10, 10)
|
||||
self.gridLayout.setObjectName("gridLayout")
|
||||
self.y_buttons = QtWidgets.QHBoxLayout()
|
||||
self.y_buttons.setObjectName("y_buttons")
|
||||
spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.y_buttons.addItem(spacerItem)
|
||||
self.b_create = QtWidgets.QPushButton(self.centralwidget)
|
||||
self.b_create.setObjectName("b_create")
|
||||
self.y_buttons.addWidget(self.b_create)
|
||||
self.b_cancel = QtWidgets.QPushButton(self.centralwidget)
|
||||
self.b_cancel.setObjectName("b_cancel")
|
||||
self.y_buttons.addWidget(self.b_cancel)
|
||||
self.gridLayout.addLayout(self.y_buttons, 1, 0, 1, 1)
|
||||
self.tabWidget = QtWidgets.QTabWidget(self.centralwidget)
|
||||
self.tabWidget.setObjectName("tabWidget")
|
||||
self.t_basics = QtWidgets.QWidget()
|
||||
self.t_basics.setObjectName("t_basics")
|
||||
self.verticalLayout_9 = QtWidgets.QVBoxLayout(self.t_basics)
|
||||
self.verticalLayout_9.setObjectName("verticalLayout_9")
|
||||
self.y_basics = QtWidgets.QGridLayout()
|
||||
self.y_basics.setObjectName("y_basics")
|
||||
self.l_rating = QtWidgets.QLabel(self.t_basics)
|
||||
self.l_rating.setObjectName("l_rating")
|
||||
self.y_basics.addWidget(self.l_rating, 2, 0, 1, 1)
|
||||
self.l_url = QtWidgets.QLabel(self.t_basics)
|
||||
self.l_url.setObjectName("l_url")
|
||||
self.y_basics.addWidget(self.l_url, 2, 2, 1, 1)
|
||||
self.e_servings = QtWidgets.QLineEdit(self.t_basics)
|
||||
self.e_servings.setText("")
|
||||
self.e_servings.setObjectName("e_servings")
|
||||
self.y_basics.addWidget(self.e_servings, 1, 1, 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)
|
||||
self.e_time = QtWidgets.QLineEdit(self.t_basics)
|
||||
self.e_time.setText("")
|
||||
self.e_time.setObjectName("e_time")
|
||||
self.y_basics.addWidget(self.e_time, 1, 3, 1, 1)
|
||||
self.e_recipe_name = QtWidgets.QLineEdit(self.t_basics)
|
||||
self.e_recipe_name.setText("")
|
||||
self.e_recipe_name.setObjectName("e_recipe_name")
|
||||
self.y_basics.addWidget(self.e_recipe_name, 0, 1, 1, 3)
|
||||
self.l_servings = QtWidgets.QLabel(self.t_basics)
|
||||
self.l_servings.setObjectName("l_servings")
|
||||
self.y_basics.addWidget(self.l_servings, 1, 0, 1, 1)
|
||||
self.l_zeit = QtWidgets.QLabel(self.t_basics)
|
||||
self.l_zeit.setObjectName("l_zeit")
|
||||
self.y_basics.addWidget(self.l_zeit, 1, 2, 1, 1)
|
||||
self.e_rating_overall = QtWidgets.QSpinBox(self.t_basics)
|
||||
self.e_rating_overall.setMaximum(5)
|
||||
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")
|
||||
self.v_categories = QtWidgets.QListWidget(self.t_basics)
|
||||
self.v_categories.setObjectName("v_categories")
|
||||
self.horizontalLayout_16.addWidget(self.v_categories)
|
||||
self.verticalLayout_8 = QtWidgets.QVBoxLayout()
|
||||
self.verticalLayout_8.setObjectName("verticalLayout_8")
|
||||
self.y_category = QtWidgets.QGridLayout()
|
||||
self.y_category.setObjectName("y_category")
|
||||
self.l_category = QtWidgets.QLabel(self.t_basics)
|
||||
self.l_category.setObjectName("l_category")
|
||||
self.y_category.addWidget(self.l_category, 0, 0, 1, 1)
|
||||
self.e_category = QtWidgets.QLineEdit(self.t_basics)
|
||||
self.e_category.setObjectName("e_category")
|
||||
self.y_category.addWidget(self.e_category, 0, 1, 1, 1)
|
||||
self.verticalLayout_8.addLayout(self.y_category)
|
||||
self.horizontalLayout_15 = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout_15.setObjectName("horizontalLayout_15")
|
||||
spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.horizontalLayout_15.addItem(spacerItem1)
|
||||
self.b_category_remove = QtWidgets.QPushButton(self.t_basics)
|
||||
self.b_category_remove.setObjectName("b_category_remove")
|
||||
self.horizontalLayout_15.addWidget(self.b_category_remove)
|
||||
self.b_category_add = QtWidgets.QPushButton(self.t_basics)
|
||||
self.b_category_add.setAutoDefault(True)
|
||||
self.b_category_add.setObjectName("b_category_add")
|
||||
self.horizontalLayout_15.addWidget(self.b_category_add)
|
||||
self.verticalLayout_8.addLayout(self.horizontalLayout_15)
|
||||
spacerItem2 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||
self.verticalLayout_8.addItem(spacerItem2)
|
||||
self.horizontalLayout_16.addLayout(self.verticalLayout_8)
|
||||
self.verticalLayout_9.addLayout(self.horizontalLayout_16)
|
||||
self.tabWidget.addTab(self.t_basics, "")
|
||||
self.t_ingredients = QtWidgets.QWidget()
|
||||
self.t_ingredients.setObjectName("t_ingredients")
|
||||
self.horizontalLayout_14 = QtWidgets.QHBoxLayout(self.t_ingredients)
|
||||
self.horizontalLayout_14.setObjectName("horizontalLayout_14")
|
||||
self.v_ingredients = QtWidgets.QTableWidget(self.t_ingredients)
|
||||
self.v_ingredients.setSelectionMode(QtWidgets.QAbstractItemView.SingleSelection)
|
||||
self.v_ingredients.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)
|
||||
self.v_ingredients.setObjectName("v_ingredients")
|
||||
self.v_ingredients.setColumnCount(2)
|
||||
self.v_ingredients.setRowCount(0)
|
||||
item = QtWidgets.QTableWidgetItem()
|
||||
self.v_ingredients.setHorizontalHeaderItem(0, item)
|
||||
item = QtWidgets.QTableWidgetItem()
|
||||
self.v_ingredients.setHorizontalHeaderItem(1, item)
|
||||
self.v_ingredients.horizontalHeader().setStretchLastSection(True)
|
||||
self.v_ingredients.verticalHeader().setVisible(False)
|
||||
self.horizontalLayout_14.addWidget(self.v_ingredients)
|
||||
self.verticalLayout_7 = QtWidgets.QVBoxLayout()
|
||||
self.verticalLayout_7.setObjectName("verticalLayout_7")
|
||||
self.y_ingredient = QtWidgets.QGridLayout()
|
||||
self.y_ingredient.setObjectName("y_ingredient")
|
||||
self.e_amount = QtWidgets.QLineEdit(self.t_ingredients)
|
||||
self.e_amount.setObjectName("e_amount")
|
||||
self.y_ingredient.addWidget(self.e_amount, 3, 1, 1, 1)
|
||||
self.l_ingredient = QtWidgets.QLabel(self.t_ingredients)
|
||||
self.l_ingredient.setObjectName("l_ingredient")
|
||||
self.y_ingredient.addWidget(self.l_ingredient, 0, 0, 1, 1)
|
||||
self.l_amount = QtWidgets.QLabel(self.t_ingredients)
|
||||
self.l_amount.setObjectName("l_amount")
|
||||
self.y_ingredient.addWidget(self.l_amount, 3, 0, 1, 1)
|
||||
self.c_heading = QtWidgets.QCheckBox(self.t_ingredients)
|
||||
self.c_heading.setObjectName("c_heading")
|
||||
self.y_ingredient.addWidget(self.c_heading, 1, 1, 1, 1)
|
||||
self.e_ingredient = QtWidgets.QLineEdit(self.t_ingredients)
|
||||
self.e_ingredient.setObjectName("e_ingredient")
|
||||
self.y_ingredient.addWidget(self.e_ingredient, 0, 1, 1, 1)
|
||||
self.verticalLayout_7.addLayout(self.y_ingredient)
|
||||
self.horizontalLayout_13 = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout_13.setObjectName("horizontalLayout_13")
|
||||
spacerItem3 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.horizontalLayout_13.addItem(spacerItem3)
|
||||
self.b_ingredient_remove = QtWidgets.QPushButton(self.t_ingredients)
|
||||
self.b_ingredient_remove.setObjectName("b_ingredient_remove")
|
||||
self.horizontalLayout_13.addWidget(self.b_ingredient_remove)
|
||||
self.b_ingredient_add = QtWidgets.QPushButton(self.t_ingredients)
|
||||
self.b_ingredient_add.setAutoDefault(True)
|
||||
self.b_ingredient_add.setObjectName("b_ingredient_add")
|
||||
self.horizontalLayout_13.addWidget(self.b_ingredient_add)
|
||||
self.verticalLayout_7.addLayout(self.horizontalLayout_13)
|
||||
spacerItem4 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||
self.verticalLayout_7.addItem(spacerItem4)
|
||||
self.horizontalLayout_14.addLayout(self.verticalLayout_7)
|
||||
self.tabWidget.addTab(self.t_ingredients, "")
|
||||
self.t_utensils = QtWidgets.QWidget()
|
||||
self.t_utensils.setObjectName("t_utensils")
|
||||
self.horizontalLayout_11 = QtWidgets.QHBoxLayout(self.t_utensils)
|
||||
self.horizontalLayout_11.setObjectName("horizontalLayout_11")
|
||||
self.v_utensils = QtWidgets.QListWidget(self.t_utensils)
|
||||
self.v_utensils.setObjectName("v_utensils")
|
||||
self.horizontalLayout_11.addWidget(self.v_utensils)
|
||||
self.verticalLayout_6 = QtWidgets.QVBoxLayout()
|
||||
self.verticalLayout_6.setObjectName("verticalLayout_6")
|
||||
self.y_utensils = QtWidgets.QGridLayout()
|
||||
self.y_utensils.setObjectName("y_utensils")
|
||||
self.l_utensil = QtWidgets.QLabel(self.t_utensils)
|
||||
self.l_utensil.setObjectName("l_utensil")
|
||||
self.y_utensils.addWidget(self.l_utensil, 0, 0, 1, 1)
|
||||
self.e_utensil = QtWidgets.QLineEdit(self.t_utensils)
|
||||
self.e_utensil.setObjectName("e_utensil")
|
||||
self.y_utensils.addWidget(self.e_utensil, 0, 1, 1, 1)
|
||||
self.verticalLayout_6.addLayout(self.y_utensils)
|
||||
self.horizontalLayout_12 = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout_12.setObjectName("horizontalLayout_12")
|
||||
spacerItem5 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.horizontalLayout_12.addItem(spacerItem5)
|
||||
self.b_utensil_remove = QtWidgets.QPushButton(self.t_utensils)
|
||||
self.b_utensil_remove.setObjectName("b_utensil_remove")
|
||||
self.horizontalLayout_12.addWidget(self.b_utensil_remove)
|
||||
self.b_utensil_add = QtWidgets.QPushButton(self.t_utensils)
|
||||
self.b_utensil_add.setAutoDefault(True)
|
||||
self.b_utensil_add.setObjectName("b_utensil_add")
|
||||
self.horizontalLayout_12.addWidget(self.b_utensil_add)
|
||||
self.verticalLayout_6.addLayout(self.horizontalLayout_12)
|
||||
spacerItem6 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||
self.verticalLayout_6.addItem(spacerItem6)
|
||||
self.horizontalLayout_11.addLayout(self.verticalLayout_6)
|
||||
self.tabWidget.addTab(self.t_utensils, "")
|
||||
self.t_steps = QtWidgets.QWidget()
|
||||
self.t_steps.setObjectName("t_steps")
|
||||
self.verticalLayout_5 = QtWidgets.QVBoxLayout(self.t_steps)
|
||||
self.verticalLayout_5.setObjectName("verticalLayout_5")
|
||||
self.e_step = QtWidgets.QTextEdit(self.t_steps)
|
||||
self.e_step.setObjectName("e_step")
|
||||
self.verticalLayout_5.addWidget(self.e_step)
|
||||
self.horizontalLayout_9 = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout_9.setObjectName("horizontalLayout_9")
|
||||
spacerItem7 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.horizontalLayout_9.addItem(spacerItem7)
|
||||
self.b_step_add = QtWidgets.QPushButton(self.t_steps)
|
||||
self.b_step_add.setAutoDefault(True)
|
||||
self.b_step_add.setObjectName("b_step_add")
|
||||
self.horizontalLayout_9.addWidget(self.b_step_add)
|
||||
self.verticalLayout_5.addLayout(self.horizontalLayout_9)
|
||||
self.v_steps = QtWidgets.QListWidget(self.t_steps)
|
||||
self.v_steps.setObjectName("v_steps")
|
||||
self.verticalLayout_5.addWidget(self.v_steps)
|
||||
self.horizontalLayout_10 = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout_10.setObjectName("horizontalLayout_10")
|
||||
spacerItem8 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.horizontalLayout_10.addItem(spacerItem8)
|
||||
self.b_step_edit = QtWidgets.QPushButton(self.t_steps)
|
||||
self.b_step_edit.setObjectName("b_step_edit")
|
||||
self.horizontalLayout_10.addWidget(self.b_step_edit)
|
||||
self.b_step_replace = QtWidgets.QPushButton(self.t_steps)
|
||||
self.b_step_replace.setObjectName("b_step_replace")
|
||||
self.horizontalLayout_10.addWidget(self.b_step_replace)
|
||||
self.b_step_remove = QtWidgets.QPushButton(self.t_steps)
|
||||
self.b_step_remove.setObjectName("b_step_remove")
|
||||
self.horizontalLayout_10.addWidget(self.b_step_remove)
|
||||
self.verticalLayout_5.addLayout(self.horizontalLayout_10)
|
||||
self.tabWidget.addTab(self.t_steps, "")
|
||||
self.t_notes = QtWidgets.QWidget()
|
||||
self.t_notes.setObjectName("t_notes")
|
||||
self.verticalLayout_4 = QtWidgets.QVBoxLayout(self.t_notes)
|
||||
self.verticalLayout_4.setObjectName("verticalLayout_4")
|
||||
self.e_note = QtWidgets.QTextEdit(self.t_notes)
|
||||
self.e_note.setObjectName("e_note")
|
||||
self.verticalLayout_4.addWidget(self.e_note)
|
||||
self.horizontalLayout_7 = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout_7.setObjectName("horizontalLayout_7")
|
||||
spacerItem9 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.horizontalLayout_7.addItem(spacerItem9)
|
||||
self.b_note_add = QtWidgets.QPushButton(self.t_notes)
|
||||
self.b_note_add.setAutoDefault(True)
|
||||
self.b_note_add.setObjectName("b_note_add")
|
||||
self.horizontalLayout_7.addWidget(self.b_note_add)
|
||||
self.verticalLayout_4.addLayout(self.horizontalLayout_7)
|
||||
self.v_notes = QtWidgets.QListWidget(self.t_notes)
|
||||
self.v_notes.setObjectName("v_notes")
|
||||
self.verticalLayout_4.addWidget(self.v_notes)
|
||||
self.horizontalLayout_8 = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout_8.setObjectName("horizontalLayout_8")
|
||||
spacerItem10 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.horizontalLayout_8.addItem(spacerItem10)
|
||||
self.b_note_edit = QtWidgets.QPushButton(self.t_notes)
|
||||
self.b_note_edit.setObjectName("b_note_edit")
|
||||
self.horizontalLayout_8.addWidget(self.b_note_edit)
|
||||
self.b_note_replace = QtWidgets.QPushButton(self.t_notes)
|
||||
self.b_note_replace.setObjectName("b_note_replace")
|
||||
self.horizontalLayout_8.addWidget(self.b_note_replace)
|
||||
self.b_note_remove = QtWidgets.QPushButton(self.t_notes)
|
||||
self.b_note_remove.setObjectName("b_note_remove")
|
||||
self.horizontalLayout_8.addWidget(self.b_note_remove)
|
||||
self.verticalLayout_4.addLayout(self.horizontalLayout_8)
|
||||
self.tabWidget.addTab(self.t_notes, "")
|
||||
self.t_tips = QtWidgets.QWidget()
|
||||
self.t_tips.setObjectName("t_tips")
|
||||
self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.t_tips)
|
||||
self.verticalLayout_2.setObjectName("verticalLayout_2")
|
||||
self.e_tip = QtWidgets.QTextEdit(self.t_tips)
|
||||
self.e_tip.setObjectName("e_tip")
|
||||
self.verticalLayout_2.addWidget(self.e_tip)
|
||||
self.horizontalLayout_5 = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout_5.setObjectName("horizontalLayout_5")
|
||||
spacerItem11 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.horizontalLayout_5.addItem(spacerItem11)
|
||||
self.b_tip_add = QtWidgets.QPushButton(self.t_tips)
|
||||
self.b_tip_add.setAutoDefault(True)
|
||||
self.b_tip_add.setObjectName("b_tip_add")
|
||||
self.horizontalLayout_5.addWidget(self.b_tip_add)
|
||||
self.verticalLayout_2.addLayout(self.horizontalLayout_5)
|
||||
self.v_tips = QtWidgets.QListWidget(self.t_tips)
|
||||
self.v_tips.setObjectName("v_tips")
|
||||
self.verticalLayout_2.addWidget(self.v_tips)
|
||||
self.horizontalLayout_6 = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout_6.setObjectName("horizontalLayout_6")
|
||||
spacerItem12 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.horizontalLayout_6.addItem(spacerItem12)
|
||||
self.b_tip_edit = QtWidgets.QPushButton(self.t_tips)
|
||||
self.b_tip_edit.setObjectName("b_tip_edit")
|
||||
self.horizontalLayout_6.addWidget(self.b_tip_edit)
|
||||
self.b_tip_replace = QtWidgets.QPushButton(self.t_tips)
|
||||
self.b_tip_replace.setObjectName("b_tip_replace")
|
||||
self.horizontalLayout_6.addWidget(self.b_tip_replace)
|
||||
self.b_tip_remove = QtWidgets.QPushButton(self.t_tips)
|
||||
self.b_tip_remove.setObjectName("b_tip_remove")
|
||||
self.horizontalLayout_6.addWidget(self.b_tip_remove)
|
||||
self.verticalLayout_2.addLayout(self.horizontalLayout_6)
|
||||
self.tabWidget.addTab(self.t_tips, "")
|
||||
self.t_variations = QtWidgets.QWidget()
|
||||
self.t_variations.setObjectName("t_variations")
|
||||
self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.t_variations)
|
||||
self.verticalLayout_3.setObjectName("verticalLayout_3")
|
||||
self.e_variation = QtWidgets.QTextEdit(self.t_variations)
|
||||
self.e_variation.setObjectName("e_variation")
|
||||
self.verticalLayout_3.addWidget(self.e_variation)
|
||||
self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout_3.setObjectName("horizontalLayout_3")
|
||||
spacerItem13 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.horizontalLayout_3.addItem(spacerItem13)
|
||||
self.b_variation_add = QtWidgets.QPushButton(self.t_variations)
|
||||
self.b_variation_add.setAutoDefault(True)
|
||||
self.b_variation_add.setObjectName("b_variation_add")
|
||||
self.horizontalLayout_3.addWidget(self.b_variation_add)
|
||||
self.verticalLayout_3.addLayout(self.horizontalLayout_3)
|
||||
self.v_variations = QtWidgets.QListWidget(self.t_variations)
|
||||
self.v_variations.setObjectName("v_variations")
|
||||
self.verticalLayout_3.addWidget(self.v_variations)
|
||||
self.horizontalLayout_4 = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout_4.setObjectName("horizontalLayout_4")
|
||||
spacerItem14 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.horizontalLayout_4.addItem(spacerItem14)
|
||||
self.b_variation_edit = QtWidgets.QPushButton(self.t_variations)
|
||||
self.b_variation_edit.setObjectName("b_variation_edit")
|
||||
self.horizontalLayout_4.addWidget(self.b_variation_edit)
|
||||
self.b_variation_replace = QtWidgets.QPushButton(self.t_variations)
|
||||
self.b_variation_replace.setObjectName("b_variation_replace")
|
||||
self.horizontalLayout_4.addWidget(self.b_variation_replace)
|
||||
self.b_variation_remove = QtWidgets.QPushButton(self.t_variations)
|
||||
self.b_variation_remove.setObjectName("b_variation_remove")
|
||||
self.horizontalLayout_4.addWidget(self.b_variation_remove)
|
||||
self.verticalLayout_3.addLayout(self.horizontalLayout_4)
|
||||
self.tabWidget.addTab(self.t_variations, "")
|
||||
self.t_rating = QtWidgets.QWidget()
|
||||
self.t_rating.setObjectName("t_rating")
|
||||
self.verticalLayout = QtWidgets.QVBoxLayout(self.t_rating)
|
||||
self.verticalLayout.setObjectName("verticalLayout")
|
||||
self.e_rating = QtWidgets.QTextEdit(self.t_rating)
|
||||
self.e_rating.setObjectName("e_rating")
|
||||
self.verticalLayout.addWidget(self.e_rating)
|
||||
self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
|
||||
spacerItem15 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.horizontalLayout_2.addItem(spacerItem15)
|
||||
self.b_rating_add = QtWidgets.QPushButton(self.t_rating)
|
||||
self.b_rating_add.setAutoDefault(True)
|
||||
self.b_rating_add.setObjectName("b_rating_add")
|
||||
self.horizontalLayout_2.addWidget(self.b_rating_add)
|
||||
self.verticalLayout.addLayout(self.horizontalLayout_2)
|
||||
self.v_ratings = QtWidgets.QListWidget(self.t_rating)
|
||||
self.v_ratings.setObjectName("v_ratings")
|
||||
self.verticalLayout.addWidget(self.v_ratings)
|
||||
self.horizontalLayout = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout.setObjectName("horizontalLayout")
|
||||
spacerItem16 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.horizontalLayout.addItem(spacerItem16)
|
||||
self.b_rating_edit = QtWidgets.QPushButton(self.t_rating)
|
||||
self.b_rating_edit.setObjectName("b_rating_edit")
|
||||
self.horizontalLayout.addWidget(self.b_rating_edit)
|
||||
self.b_rating_replace = QtWidgets.QPushButton(self.t_rating)
|
||||
self.b_rating_replace.setObjectName("b_rating_replace")
|
||||
self.horizontalLayout.addWidget(self.b_rating_replace)
|
||||
self.b_rating_remove = QtWidgets.QPushButton(self.t_rating)
|
||||
self.b_rating_remove.setObjectName("b_rating_remove")
|
||||
self.horizontalLayout.addWidget(self.b_rating_remove)
|
||||
self.verticalLayout.addLayout(self.horizontalLayout)
|
||||
self.tabWidget.addTab(self.t_rating, "")
|
||||
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, 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)
|
||||
self.menuBar.addAction(self.menuMen.menuAction())
|
||||
|
||||
self.retranslateUi(MainWindow)
|
||||
self.tabWidget.setCurrentIndex(0)
|
||||
QtCore.QMetaObject.connectSlotsByName(MainWindow)
|
||||
MainWindow.setTabOrder(self.e_recipe_name, self.e_servings)
|
||||
MainWindow.setTabOrder(self.e_servings, self.e_time)
|
||||
MainWindow.setTabOrder(self.e_time, self.e_rating_overall)
|
||||
MainWindow.setTabOrder(self.e_rating_overall, self.e_url)
|
||||
MainWindow.setTabOrder(self.e_url, self.e_category)
|
||||
MainWindow.setTabOrder(self.e_category, self.b_category_add)
|
||||
MainWindow.setTabOrder(self.b_category_add, self.v_categories)
|
||||
MainWindow.setTabOrder(self.v_categories, self.b_category_remove)
|
||||
MainWindow.setTabOrder(self.b_category_remove, self.e_ingredient)
|
||||
MainWindow.setTabOrder(self.e_ingredient, self.c_heading)
|
||||
MainWindow.setTabOrder(self.c_heading, self.e_amount)
|
||||
MainWindow.setTabOrder(self.e_amount, self.b_ingredient_add)
|
||||
MainWindow.setTabOrder(self.b_ingredient_add, self.v_ingredients)
|
||||
MainWindow.setTabOrder(self.v_ingredients, self.b_ingredient_remove)
|
||||
MainWindow.setTabOrder(self.b_ingredient_remove, self.e_utensil)
|
||||
MainWindow.setTabOrder(self.e_utensil, self.b_utensil_add)
|
||||
MainWindow.setTabOrder(self.b_utensil_add, self.v_utensils)
|
||||
MainWindow.setTabOrder(self.v_utensils, self.b_utensil_remove)
|
||||
MainWindow.setTabOrder(self.b_utensil_remove, self.e_step)
|
||||
MainWindow.setTabOrder(self.e_step, self.b_step_add)
|
||||
MainWindow.setTabOrder(self.b_step_add, self.v_steps)
|
||||
MainWindow.setTabOrder(self.v_steps, self.b_step_edit)
|
||||
MainWindow.setTabOrder(self.b_step_edit, self.b_step_replace)
|
||||
MainWindow.setTabOrder(self.b_step_replace, self.b_step_remove)
|
||||
MainWindow.setTabOrder(self.b_step_remove, self.e_note)
|
||||
MainWindow.setTabOrder(self.e_note, self.b_note_add)
|
||||
MainWindow.setTabOrder(self.b_note_add, self.v_notes)
|
||||
MainWindow.setTabOrder(self.v_notes, self.b_note_edit)
|
||||
MainWindow.setTabOrder(self.b_note_edit, self.b_note_replace)
|
||||
MainWindow.setTabOrder(self.b_note_replace, self.b_note_remove)
|
||||
MainWindow.setTabOrder(self.b_note_remove, self.e_tip)
|
||||
MainWindow.setTabOrder(self.e_tip, self.b_tip_add)
|
||||
MainWindow.setTabOrder(self.b_tip_add, self.v_tips)
|
||||
MainWindow.setTabOrder(self.v_tips, self.b_tip_edit)
|
||||
MainWindow.setTabOrder(self.b_tip_edit, self.b_tip_replace)
|
||||
MainWindow.setTabOrder(self.b_tip_replace, self.b_tip_remove)
|
||||
MainWindow.setTabOrder(self.b_tip_remove, self.e_variation)
|
||||
MainWindow.setTabOrder(self.e_variation, self.b_variation_add)
|
||||
MainWindow.setTabOrder(self.b_variation_add, self.v_variations)
|
||||
MainWindow.setTabOrder(self.v_variations, self.b_variation_edit)
|
||||
MainWindow.setTabOrder(self.b_variation_edit, self.b_variation_replace)
|
||||
MainWindow.setTabOrder(self.b_variation_replace, self.b_variation_remove)
|
||||
MainWindow.setTabOrder(self.b_variation_remove, self.e_rating)
|
||||
MainWindow.setTabOrder(self.e_rating, self.b_rating_add)
|
||||
MainWindow.setTabOrder(self.b_rating_add, self.v_ratings)
|
||||
MainWindow.setTabOrder(self.v_ratings, self.b_rating_edit)
|
||||
MainWindow.setTabOrder(self.b_rating_edit, self.b_rating_replace)
|
||||
MainWindow.setTabOrder(self.b_rating_replace, self.b_rating_remove)
|
||||
MainWindow.setTabOrder(self.b_rating_remove, self.b_create)
|
||||
MainWindow.setTabOrder(self.b_create, self.tabWidget)
|
||||
MainWindow.setTabOrder(self.tabWidget, self.b_cancel)
|
||||
|
||||
def retranslateUi(self, MainWindow):
|
||||
_translate = QtCore.QCoreApplication.translate
|
||||
MainWindow.setWindowTitle(_translate("MainWindow", "WikiCookBook"))
|
||||
self.b_create.setText(_translate("MainWindow", "Rezept erstellen"))
|
||||
self.b_cancel.setText(_translate("MainWindow", "Abbrechen"))
|
||||
self.l_rating.setText(_translate("MainWindow", "Bewertung"))
|
||||
self.l_url.setText(_translate("MainWindow", "Link"))
|
||||
self.l_recipe_name.setText(_translate("MainWindow", "Rezeptname"))
|
||||
self.l_servings.setText(_translate("MainWindow", "Portionen"))
|
||||
self.l_zeit.setText(_translate("MainWindow", "Zeit"))
|
||||
self.l_category.setText(_translate("MainWindow", "Kategorie"))
|
||||
self.b_category_remove.setText(_translate("MainWindow", "Ausgewähltes entfernen"))
|
||||
self.b_category_add.setText(_translate("MainWindow", "Hinzufügen"))
|
||||
self.tabWidget.setTabText(self.tabWidget.indexOf(self.t_basics), _translate("MainWindow", "Grundsätzliches"))
|
||||
item = self.v_ingredients.horizontalHeaderItem(0)
|
||||
item.setText(_translate("MainWindow", "Menge"))
|
||||
item = self.v_ingredients.horizontalHeaderItem(1)
|
||||
item.setText(_translate("MainWindow", "Zutat"))
|
||||
self.l_ingredient.setText(_translate("MainWindow", "Zutat"))
|
||||
self.l_amount.setText(_translate("MainWindow", "Menge"))
|
||||
self.c_heading.setText(_translate("MainWindow", "Zwischenüberschrift"))
|
||||
self.b_ingredient_remove.setText(_translate("MainWindow", "Ausgewähltes entfernen"))
|
||||
self.b_ingredient_add.setText(_translate("MainWindow", "Hinzufügen"))
|
||||
self.tabWidget.setTabText(self.tabWidget.indexOf(self.t_ingredients), _translate("MainWindow", "Zutaten"))
|
||||
self.l_utensil.setText(_translate("MainWindow", "Utensil"))
|
||||
self.b_utensil_remove.setText(_translate("MainWindow", "Ausgewähltes entfernen"))
|
||||
self.b_utensil_add.setText(_translate("MainWindow", "Hinzufügen"))
|
||||
self.tabWidget.setTabText(self.tabWidget.indexOf(self.t_utensils), _translate("MainWindow", "Küchenutensilien"))
|
||||
self.b_step_add.setText(_translate("MainWindow", "Hinzufügen"))
|
||||
self.b_step_edit.setText(_translate("MainWindow", "Bearbeiten"))
|
||||
self.b_step_replace.setText(_translate("MainWindow", "Ersetzen"))
|
||||
self.b_step_remove.setText(_translate("MainWindow", "Entfernen"))
|
||||
self.tabWidget.setTabText(self.tabWidget.indexOf(self.t_steps), _translate("MainWindow", "Zubereitung"))
|
||||
self.b_note_add.setText(_translate("MainWindow", "Hinzufügen"))
|
||||
self.b_note_edit.setText(_translate("MainWindow", "Bearbeiten"))
|
||||
self.b_note_replace.setText(_translate("MainWindow", "Ersetzen"))
|
||||
self.b_note_remove.setText(_translate("MainWindow", "Entfernen"))
|
||||
self.tabWidget.setTabText(self.tabWidget.indexOf(self.t_notes), _translate("MainWindow", "Notizen"))
|
||||
self.b_tip_add.setText(_translate("MainWindow", "Hinzufügen"))
|
||||
self.b_tip_edit.setText(_translate("MainWindow", "Bearbeiten"))
|
||||
self.b_tip_replace.setText(_translate("MainWindow", "Ersetzen"))
|
||||
self.b_tip_remove.setText(_translate("MainWindow", "Entfernen"))
|
||||
self.tabWidget.setTabText(self.tabWidget.indexOf(self.t_tips), _translate("MainWindow", "Tipps"))
|
||||
self.b_variation_add.setText(_translate("MainWindow", "Hinzufügen"))
|
||||
self.b_variation_edit.setText(_translate("MainWindow", "Bearbeiten"))
|
||||
self.b_variation_replace.setText(_translate("MainWindow", "Ersetzen"))
|
||||
self.b_variation_remove.setText(_translate("MainWindow", "Entfernen"))
|
||||
self.tabWidget.setTabText(self.tabWidget.indexOf(self.t_variations), _translate("MainWindow", "Variationen"))
|
||||
self.b_rating_add.setText(_translate("MainWindow", "Hinzufügen"))
|
||||
self.b_rating_edit.setText(_translate("MainWindow", "Bearbeiten"))
|
||||
self.b_rating_replace.setText(_translate("MainWindow", "Ersetzen"))
|
||||
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"))
|
5
WikiCookBook/UI/__init__.py
Normal file
5
WikiCookBook/UI/__init__.py
Normal file
|
@ -0,0 +1,5 @@
|
|||
from .AboutDialog import AboutDialog
|
||||
from .ClearDialog import ClearDialog
|
||||
from .CloseDialog import CloseDialog
|
||||
from .CodeDialog import CodeDialog
|
||||
from .MainWindow import MainWindow
|
95
WikiCookBook/Writer/MoinMoinWriter.py
Normal file
95
WikiCookBook/Writer/MoinMoinWriter.py
Normal file
|
@ -0,0 +1,95 @@
|
|||
"""
|
||||
A class for writing MoinMoin wiki syntax.
|
||||
Copyright (C) 2020 Marcel Kapfer <opensource@mmk2410.org>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
"""
|
||||
|
||||
class MoinMoinWriter():
|
||||
"""
|
||||
MoinMoin wiki syntax writer.
|
||||
|
||||
Except for newline, linebreak, hrule, table_row_end and macro all commands don't add a newline at the end.
|
||||
|
||||
Nothing is printed, all is returned.
|
||||
"""
|
||||
|
||||
def newline(self):
|
||||
"""
|
||||
Prints nothing and appends a newline.
|
||||
"""
|
||||
return "\n"
|
||||
|
||||
def linebreak(self):
|
||||
"""
|
||||
Print a froced linebreak (<br>).
|
||||
"""
|
||||
return "<<BR>>\n"
|
||||
|
||||
def hrule(self):
|
||||
"""
|
||||
Print a horizontal rule.
|
||||
"""
|
||||
return "----\n"
|
||||
|
||||
def ulitem(self, text, level=1):
|
||||
"""
|
||||
Print a unordered list item with given level.
|
||||
"""
|
||||
whitespace = " " * level
|
||||
return f"{whitespace}* {text}"
|
||||
|
||||
def olitem(self, text, level=1):
|
||||
"""
|
||||
Print a orderd list item with given level.
|
||||
"""
|
||||
whitespace = " " * level
|
||||
return f"{whitespace}1. {text}"
|
||||
|
||||
def text(self, text, bold=False, italics=False):
|
||||
"""
|
||||
Just print the given text.
|
||||
"""
|
||||
if bold and italics:
|
||||
return f"*****{text}*****"
|
||||
elif bold:
|
||||
return f"***{text}***"
|
||||
elif italics:
|
||||
return f"**{text}**"
|
||||
else:
|
||||
return text
|
||||
|
||||
def link(self, text, url, arguments="", display=False):
|
||||
if display:
|
||||
if arguments:
|
||||
return "{{" + url + f"|{text}|" + arguments + "}}"
|
||||
else:
|
||||
return "{{" + url + f"|{text}" + "}}"
|
||||
else:
|
||||
if arguments:
|
||||
return f"[[{url}|{text}|{arguments}]]"
|
||||
else:
|
||||
return f"[[{url}|{text}]]"
|
||||
|
||||
def macro(self, macro, arguments=""):
|
||||
return f"<<{macro}({arguments})>>"
|
||||
|
||||
def table_cell(self, text, arguments=""):
|
||||
if text:
|
||||
return f"||<{arguments}> {text} "
|
||||
else:
|
||||
return "||"
|
||||
|
||||
def table_row_end(self):
|
||||
return "||\n"
|
382
WikiCookBook/wikicookbook.py
Normal file
382
WikiCookBook/wikicookbook.py
Normal file
|
@ -0,0 +1,382 @@
|
|||
import sys
|
||||
from PyQt5.QtWidgets import QApplication, QMainWindow, QMessageBox, QTableWidgetItem, QDialog
|
||||
import WikiCookBook.UI as UI
|
||||
from WikiCookBook.Model.Recipe import Recipe
|
||||
from WikiCookBook.Writer.MoinMoinWriter import MoinMoinWriter
|
||||
|
||||
class AboutDialog(QDialog, UI.AboutDialog):
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(AboutDialog, self).__init__(*args, **kwargs)
|
||||
self.setupUi(self)
|
||||
|
||||
self.b_close.clicked.connect(self.close)
|
||||
|
||||
self.show()
|
||||
|
||||
class CloseDialog(QDialog, UI.CloseDialog):
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(CloseDialog, self).__init__(*args, **kwargs)
|
||||
self.setupUi(self)
|
||||
|
||||
self.b_yes.clicked.connect(self.accept)
|
||||
self.b_no.clicked.connect(self.reject)
|
||||
|
||||
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 CodeDialog(QDialog, UI.CodeDialog):
|
||||
def __init__(self, code, *args, **kwargs):
|
||||
super(CodeDialog, self).__init__(*args, **kwargs)
|
||||
self.setupUi(self)
|
||||
self.copied = False
|
||||
|
||||
self.e_code.setPlainText(code)
|
||||
|
||||
self.b_close.clicked.connect(self.clear_fields)
|
||||
self.b_copy.clicked.connect(self.copy)
|
||||
|
||||
self.show()
|
||||
|
||||
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):
|
||||
super(MainWindow, self).__init__(*args, **kwargs)
|
||||
self.setupUi(self)
|
||||
|
||||
# Connect close actions
|
||||
self.b_cancel.clicked.connect(self.ask_close)
|
||||
self.ma_close.triggered.connect(self.ask_close)
|
||||
|
||||
# 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)
|
||||
|
||||
# Handle categories
|
||||
self.b_category_add.clicked.connect(self.category_add)
|
||||
self.e_category.returnPressed.connect(self.category_add)
|
||||
self.b_category_remove.clicked.connect(self.category_remove)
|
||||
|
||||
# Handle ingredients
|
||||
self.b_ingredient_add.clicked.connect(self.ingredient_add)
|
||||
self.b_ingredient_remove.clicked.connect(self.ingredient_remove)
|
||||
|
||||
# Handle utensils
|
||||
self.b_utensil_add.clicked.connect(self.utensil_add)
|
||||
self.e_utensil.returnPressed.connect(self.utensil_add)
|
||||
self.b_utensil_remove.clicked.connect(self.utensil_remove)
|
||||
|
||||
# Handle steps
|
||||
self.b_step_add.clicked.connect(self.step_add)
|
||||
self.b_step_edit.clicked.connect(self.step_edit)
|
||||
self.b_step_replace.clicked.connect(self.step_replace)
|
||||
self.b_step_remove.clicked.connect(self.step_remove)
|
||||
|
||||
# Handle notes
|
||||
self.b_note_add.clicked.connect(self.note_add)
|
||||
self.b_note_edit.clicked.connect(self.note_edit)
|
||||
self.b_note_replace.clicked.connect(self.note_replace)
|
||||
self.b_note_remove.clicked.connect(self.note_remove)
|
||||
|
||||
# Handle tips
|
||||
self.b_tip_add.clicked.connect(self.tip_add)
|
||||
self.b_tip_edit.clicked.connect(self.tip_edit)
|
||||
self.b_tip_replace.clicked.connect(self.tip_replace)
|
||||
self.b_tip_remove.clicked.connect(self.tip_remove)
|
||||
|
||||
# Handle variations
|
||||
self.b_variation_add.clicked.connect(self.variation_add)
|
||||
self.b_variation_edit.clicked.connect(self.variation_edit)
|
||||
self.b_variation_replace.clicked.connect(self.variation_replace)
|
||||
self.b_variation_remove.clicked.connect(self.variation_remove)
|
||||
|
||||
# Handle ratings
|
||||
self.b_rating_add.clicked.connect(self.rating_add)
|
||||
self.b_rating_edit.clicked.connect(self.rating_edit)
|
||||
self.b_rating_replace.clicked.connect(self.rating_replace)
|
||||
self.b_rating_remove.clicked.connect(self.rating_remove)
|
||||
|
||||
# Handle recipe creation
|
||||
self.b_create.clicked.connect(self.create_recipe)
|
||||
|
||||
self.show()
|
||||
|
||||
def updateTitle(self):
|
||||
"""
|
||||
Update the window title so it contains the name of the current recipe.
|
||||
"""
|
||||
current_recipe_name = self.e_recipe_name.text()
|
||||
if current_recipe_name:
|
||||
self.setWindowTitle(f"{current_recipe_name} - WikiCookBook")
|
||||
else:
|
||||
self.setWindowTitle("WikiCookBook")
|
||||
|
||||
def category_add(self):
|
||||
if self.e_category.text():
|
||||
self.v_categories.addItem(f"Kategorie{self.e_category.text()}")
|
||||
self.e_category.setFocus()
|
||||
self.e_category.selectAll()
|
||||
|
||||
def category_remove(self):
|
||||
self.v_categories.takeItem(self.v_categories.currentRow())
|
||||
|
||||
def ingredient_add(self):
|
||||
if self.e_ingredient.text():
|
||||
if self.c_heading.checkState() == 2:
|
||||
current_amount = QTableWidgetItem("----------")
|
||||
else:
|
||||
current_amount = QTableWidgetItem(self.e_amount.text())
|
||||
current_ingredient = QTableWidgetItem(self.e_ingredient.text())
|
||||
self.v_ingredients.setRowCount(self.v_ingredients.rowCount() + 1)
|
||||
self.v_ingredients.setItem(self.v_ingredients.rowCount() - 1, 0, current_amount)
|
||||
self.v_ingredients.setItem(self.v_ingredients.rowCount() - 1, 1, current_ingredient)
|
||||
self.e_ingredient.setFocus()
|
||||
self.e_ingredient.selectAll()
|
||||
|
||||
def ingredient_remove(self):
|
||||
self.v_ingredients.removeRow(self.v_ingredients.currentRow())
|
||||
|
||||
def utensil_add(self):
|
||||
if self.e_utensil.text():
|
||||
self.v_utensils.addItem(self.e_utensil.text())
|
||||
self.e_utensil.setFocus()
|
||||
self.e_utensil.selectAll()
|
||||
|
||||
def utensil_remove(self):
|
||||
self.v_utensils.takeItem(self.v_utensils.currentRow())
|
||||
|
||||
def step_add(self):
|
||||
if self.e_step.toPlainText():
|
||||
self.v_steps.addItem(self.e_step.toPlainText())
|
||||
self.e_step.setFocus()
|
||||
self.e_step.selectAll()
|
||||
|
||||
def step_edit(self):
|
||||
if self.v_steps.count() > 0:
|
||||
self.e_step.setText(self.v_steps.currentItem().text())
|
||||
|
||||
def step_replace(self):
|
||||
if self.e_step.toPlainText() and self.v_steps.count() > 0:
|
||||
self.v_steps.currentItem().setText(self.e_step.toPlainText())
|
||||
|
||||
def step_remove(self):
|
||||
self.v_steps.takeItem(self.v_steps.currentRow())
|
||||
|
||||
def note_add(self):
|
||||
if self.e_note.toPlainText():
|
||||
self.v_notes.addItem(self.e_note.toPlainText())
|
||||
self.e_note.setFocus()
|
||||
self.e_note.selectAll()
|
||||
|
||||
def note_edit(self):
|
||||
if self.v_notes.count() > 0:
|
||||
self.e_note.setText(self.v_notes.currentItem().text())
|
||||
|
||||
def note_replace(self):
|
||||
if self.e_note.toPlainText() and self.v_notes.count() > 0:
|
||||
self.v_notes.currentItem().setText(self.e_note.toPlainText())
|
||||
|
||||
def note_remove(self):
|
||||
self.v_notes.takeItem(self.v_notes.currentRow())
|
||||
|
||||
def tip_add(self):
|
||||
if self.e_tip.toPlainText():
|
||||
self.v_tips.addItem(self.e_tip.toPlainText())
|
||||
self.e_tip.setFocus()
|
||||
self.e_tip.selectAll()
|
||||
|
||||
def tip_edit(self):
|
||||
if self.v_tips.count() > 0:
|
||||
self.e_tip.setText(self.v_tips.currentItem().text())
|
||||
|
||||
def tip_replace(self):
|
||||
if self.e_tip.toPlainText() and self.v_tips.count() > 0:
|
||||
self.v_tips.currentItem().setText(self.e_tip.toPlainText())
|
||||
|
||||
def tip_remove(self):
|
||||
self.v_tips.takeItem(self.v_tips.currentRow())
|
||||
|
||||
def variation_add(self):
|
||||
if self.e_variation.toPlainText():
|
||||
self.v_variations.addItem(self.e_variation.toPlainText())
|
||||
self.e_variation.setFocus()
|
||||
self.e_variation.selectAll()
|
||||
|
||||
def variation_edit(self):
|
||||
if self.v_variations.count() > 0:
|
||||
self.e_variation.setText(self.v_variations.currentItem().text())
|
||||
|
||||
def variation_replace(self):
|
||||
if self.e_variation.toPlainText() and self.v_variations.count() > 0:
|
||||
self.v_variations.currentItem().setText(self.e_variation.toPlainText())
|
||||
|
||||
def variation_remove(self):
|
||||
self.v_variations.takeItem(self.v_variations.currentRow())
|
||||
|
||||
def rating_add(self):
|
||||
if self.e_rating.toPlainText():
|
||||
self.v_ratings.addItem(self.e_rating.toPlainText())
|
||||
self.e_rating.setFocus()
|
||||
self.e_rating.selectAll()
|
||||
|
||||
def rating_edit(self):
|
||||
if self.v_ratings.count() > 0:
|
||||
self.e_rating.setText(self.v_ratings.currentItem().text())
|
||||
|
||||
def rating_replace(self):
|
||||
if self.e_rating.toPlainText() and self.v_ratings.count() > 0:
|
||||
self.v_ratings.currentItem().setText(self.e_rating.toPlainText())
|
||||
|
||||
def rating_remove(self):
|
||||
self.v_ratings.takeItem(self.v_ratings.currentRow())
|
||||
|
||||
def create_recipe(self):
|
||||
current_recipe = Recipe(self.e_recipe_name.text(),
|
||||
self.e_servings.text(),
|
||||
self.e_time.text(),
|
||||
self.e_rating_overall.value(),
|
||||
self.e_url.text())
|
||||
|
||||
# Categories
|
||||
for row in range(self.v_categories.count()):
|
||||
current_recipe.add_category(self.v_categories.item(row).text())
|
||||
|
||||
# Ingredients
|
||||
for row in range(self.v_ingredients.rowCount()):
|
||||
current_recipe.add_ingredient(
|
||||
self.v_ingredients.item(row, 0).text(),
|
||||
self.v_ingredients.item(row, 1).text()
|
||||
)
|
||||
|
||||
# Utensils
|
||||
for row in range(self.v_utensils.count()):
|
||||
current_recipe.add_utensil(self.v_utensils.item(row).text())
|
||||
|
||||
# Steps
|
||||
for row in range(self.v_steps.count()):
|
||||
current_recipe.add_step(self.v_steps.item(row).text())
|
||||
|
||||
# Notes
|
||||
for row in range(self.v_notes.count()):
|
||||
current_recipe.add_note(self.v_notes.item(row).text())
|
||||
|
||||
# Tips
|
||||
for row in range(self.v_tips.count()):
|
||||
current_recipe.add_tip(self.v_tips.item(row).text())
|
||||
|
||||
# Variations
|
||||
for row in range(self.v_variations.count()):
|
||||
current_recipe.add_variation(self.v_variations.item(row).text())
|
||||
|
||||
# Ratings
|
||||
for row in range(self.v_ratings.count()):
|
||||
current_recipe.add_rating(self.v_ratings.item(row).text())
|
||||
|
||||
writer = MoinMoinWriter()
|
||||
code = current_recipe.wikicode(writer)
|
||||
|
||||
dialog = CodeDialog(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):
|
||||
"""
|
||||
Show an about dialog.
|
||||
"""
|
||||
dialog = AboutDialog()
|
||||
dialog.exec_()
|
||||
|
||||
def ask_close(self):
|
||||
"""
|
||||
Close the application. A warning is shown before.
|
||||
"""
|
||||
dialog = CloseDialog()
|
||||
dialog.accepted.connect(self.close)
|
||||
dialog.exec_()
|
||||
|
||||
|
||||
def main():
|
||||
app = QApplication([])
|
||||
app.setApplicationName("WikiCookBook")
|
||||
window = MainWindow()
|
||||
return app.exec_()
|
Reference in a new issue