1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
from datetime import date
from PyQt5.QtCore import QDate, Qt
from PyQt5.QtGui import QFont
from PyQt5.QtWidgets import QHBoxLayout, QLabel
import src.globals as Globals
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")
# Check rules
relevant_rules = list(filter(lambda r: r.entry_id == self.id, Globals.rules))
for r in relevant_rules:
if (r.when.lower() == "before" and r.date > QDate.currentDate()) or (r.when.lower() == "after" and r.date <= QDate.currentDate()):
if r.color:
self.color = r.color
if r.highlight:
self.highlight = r.highlight
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()
))
elif self.due_alt:
body.setText("{0}: ".format(
self.due_alt
))
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
|