summaryrefslogtreecommitdiff
path: root/src/edit_entry_form.py
diff options
context:
space:
mode:
authorLouie S <louie@example.com>2023-09-16 09:36:14 -0400
committerLouie S <louie@example.com>2023-09-16 09:36:14 -0400
commit604b485fab100785c4def10dc7242e6408e1f1c6 (patch)
tree916831dbe3e06c5165369e8bd0193753bba3274a /src/edit_entry_form.py
parentfe34cdaa6bd0efdc605ae89c96d7075645eaa5fd (diff)
Create project using setuptools
Diffstat (limited to 'src/edit_entry_form.py')
-rw-r--r--src/edit_entry_form.py120
1 files changed, 120 insertions, 0 deletions
diff --git a/src/edit_entry_form.py b/src/edit_entry_form.py
new file mode 100644
index 0000000..55c388c
--- /dev/null
+++ b/src/edit_entry_form.py
@@ -0,0 +1,120 @@
+import sys
+from PyQt5.QtWidgets import QApplication, QCheckBox, QDateTimeEdit, QDialog, QFormLayout, QHBoxLayout, QLabel, QLineEdit, QMessageBox, QPushButton
+from PyQt5.QtGui import QFont
+from PyQt5.QtCore import QDate, Qt
+
+import src.globals as Globals
+from src.entry import Entry
+import src.db_sqlite as DB
+
+class editEntryForm(QDialog):
+ """
+ Form to edit/update an entry
+ """
+ def __init__(self, id):
+ self.id = id
+ super().__init__()
+ self.initializeUI()
+
+ def initializeUI(self):
+ self.resize(400, 1)
+ self.setWindowTitle("Edit Entry")
+ self.displayWidgets()
+ self.exec()
+
+ def displayWidgets(self):
+ entry_form_layout = QFormLayout()
+ entry = list(filter(lambda e: e.id == self.id, Globals.entries))[0]
+
+ title = QLabel("Edit Entry")
+ title.setFont(QFont("Arial", 18))
+ title.setAlignment(Qt.AlignCenter)
+ entry_form_layout.addRow(title)
+
+ self.entry_desc = QLineEdit()
+ self.entry_desc.setText(entry.desc)
+ entry_form_layout.addRow("Description:", self.entry_desc)
+
+ self.due_hbox = QHBoxLayout()
+ self.entry_due = QDateTimeEdit(QDate.currentDate())
+ self.entry_due.setDisplayFormat("MM/dd/yyyy")
+ if entry.due:
+ self.entry_due.setDate(entry.due)
+ self.due_hbox.addWidget(self.entry_due)
+ self.entry_due_checkbox = QCheckBox()
+ if entry.due:
+ self.entry_due_checkbox.setChecked(True)
+ else:
+ self.entry_due_checkbox.setChecked(False)
+ self.due_hbox.addWidget(self.entry_due_checkbox)
+ entry_form_layout.addRow("Due Date:", self.due_hbox)
+
+ self.entry_due_alt = QLineEdit()
+ self.entry_due_alt.setText(entry.due_alt)
+ entry_form_layout.addRow("Due Date (Alt):", self.entry_due_alt)
+
+ self.entry_link = QLineEdit() # TODO see if there is a widget specifically for URLs
+ self.entry_link.setText(entry.link)
+ entry_form_layout.addRow("Link:", self.entry_link)
+
+ self.entry_color = QLineEdit()
+ self.entry_color.setText(entry.color)
+ entry_form_layout.addRow("Color:", self.entry_color)
+
+ self.entry_highlight = QLineEdit()
+ self.entry_highlight.setText(entry.highlight)
+ entry_form_layout.addRow("Highlight:", self.entry_highlight)
+
+ # Submit and cancel buttons
+ buttons_h_box = QHBoxLayout()
+ buttons_h_box.addStretch()
+ close_button = QPushButton("Cancel")
+ close_button.clicked.connect(self.close)
+ buttons_h_box.addWidget(close_button)
+ submit_button = QPushButton("Submit")
+ submit_button.clicked.connect(self.handleSubmit)
+ buttons_h_box.addWidget(submit_button)
+ buttons_h_box.addStretch()
+
+ entry_form_layout.addRow(buttons_h_box)
+
+ self.setLayout(entry_form_layout)
+
+ def handleSubmit(self):
+ desc_text = self.entry_desc.text()
+ if self.entry_due_checkbox.isChecked():
+ due_text = self.entry_due.date() # due_text is a QDate
+ else:
+ due_text = "" # due is unchecked
+ due_alt_text = self.entry_due_alt.text()
+ link_text = self.entry_link.text()
+ color_text = self.entry_color.text()
+ highlight_text = self.entry_highlight.text()
+
+ if not desc_text:
+ QMessageBox.warning(self, "Error Message",
+ "Name cannot be blank",
+ QMessageBox.Close,
+ QMessageBox.Close)
+ return
+
+ # Update DB
+ entry = list(filter(lambda e: e.id == self.id, Globals.entries))[0]
+ entry.desc = desc_text
+ entry.due = due_text
+ entry.due_alt = due_alt_text
+ entry.link = link_text
+ entry.color = color_text
+ entry.highlight = highlight_text
+ DB.updateEntry(entry)
+
+ # Update global variables
+ Globals.entries = list(filter(lambda e: e.id != self.id, Globals.entries))
+ Globals.entries.append(Entry(self.id, entry.parent_id, desc_text, due_text, due_alt_text, link_text, color_text, highlight_text, entry.done, entry.hidden))
+ self.close()
+
+if __name__ == "__main__":
+ app = QApplication(sys.argv)
+ window = editEntryForm()
+ sys.exit(app.exec_())
+