summaryrefslogtreecommitdiff
path: root/src/entry.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/entry.py')
-rw-r--r--src/entry.py84
1 files changed, 84 insertions, 0 deletions
diff --git a/src/entry.py b/src/entry.py
new file mode 100644
index 0000000..addc96a
--- /dev/null
+++ b/src/entry.py
@@ -0,0 +1,84 @@
+from datetime import date, datetime
+from PyQt5.QtCore import Qt
+from PyQt5.QtGui import QFont
+from PyQt5.QtWidgets import QHBoxLayout, QLabel
+
+class Entry:
+ def __init__(self, id, parent_id, desc, due = "", due_alt = "", link = "", color = "", highlight = "", done = False, hidden = False):
+ self.id = id
+ self.parent_id = parent_id
+ self.desc = desc
+ self.due = due
+ self.due_alt = due_alt
+ self.link = link
+ self.color = color
+ self.highlight = highlight
+ self.done = done
+ self.hidden = hidden
+
+ def buildLayout(self):
+ output = QHBoxLayout()
+ bullet = QLabel()
+ body = QLabel()
+
+ bullet.setFont(QFont("Arial", 11))
+
+ body.setTextInteractionFlags(Qt.TextSelectableByMouse | Qt.LinksAccessibleByMouse)
+ body.setFont(QFont("Arial", 11))
+ body.setWordWrap(True)
+ body.setToolTip("Right-Click for actions")
+
+ if self.done:
+ bullet.setText("\u2713 ")
+ bullet.setStyleSheet("""
+ QLabel{
+ color: green;
+ }
+ """)
+ else:
+ bullet.setText("- ")
+ output.addWidget(bullet)
+
+ if self.due:
+ body.setText("{0}/{1}/{2}: ".format(
+ self.due.month(),
+ self.due.day(),
+ self.due.year()
+ ))
+ if self.link:
+ body.setOpenExternalLinks(True)
+ body.setText(body.text() + "<a href=\"{0}\" style=\"color: {1};\">".format(
+ self.link,
+ self.color if self.color else "default"
+ ))
+ body.setText(body.text() + self.desc)
+ if self.link:
+ body.setText(body.text() + "</a>")
+ body.setToolTip("{}".format(self.link))
+ output.addWidget(body)
+
+ output.addStretch()
+
+ if self.done:
+ font = body.font()
+ font.setStrikeOut(True)
+ body.setFont(font)
+ body.setStyleSheet("""
+ QLabel{
+ color: green;
+ }
+ """)
+
+ else:
+ body.setStyleSheet("""
+ QLabel{{
+ color: {0};
+ background-color: {1};
+ font-weight: {2};
+ }}""".format(
+ self.color if self.color else "default",
+ self.highlight if self.highlight else "none",
+ "bold" if self.due and self.due <= date.today() else "normal"
+ ))
+
+ return output