Skip to content

Commit 8e8e226

Browse files
more button formatting
1 parent da02952 commit 8e8e226

5 files changed

Lines changed: 58 additions & 17 deletions

File tree

src/views/check_in_manual.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ def _build(self, controller):
5151
entry_row = QHBoxLayout()
5252
self.pid_entry = StyledEntry()
5353
self.pid_entry.setMaximumWidth(800)
54+
self.pid_entry.returnPressed.connect(lambda: self._call_check_in(controller))
5455
entry_row.addStretch()
5556
entry_row.addWidget(self.pid_entry)
5657
entry_row.addStretch()
@@ -59,14 +60,19 @@ def _build(self, controller):
5960
inner.addStretch(2)
6061

6162
btn_row = QHBoxLayout()
62-
check_in_btn = StyledButton("Check In")
63-
check_in_btn.setFixedWidth(349)
64-
check_in_btn.clicked.connect(lambda: self._call_check_in(controller))
63+
self.check_in_btn = StyledButton("Check In")
64+
self.check_in_btn.setFixedWidth(349)
65+
self.check_in_btn.setEnabled(False)
66+
self.check_in_btn.clicked.connect(lambda: self._call_check_in(controller))
67+
self.pid_entry.textChanged.connect(self._update_btn_state)
6568
btn_row.addStretch()
66-
btn_row.addWidget(check_in_btn)
69+
btn_row.addWidget(self.check_in_btn)
6770
btn_row.addStretch()
6871
inner.addLayout(btn_row)
6972

73+
def _update_btn_state(self):
74+
self.check_in_btn.setEnabled(bool(self.pid_entry.text().strip()))
75+
7076
def on_show(self):
7177
self.pid_entry.setFocus()
7278

src/views/components/styled_button.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,10 +63,12 @@ def paintEvent(self, event):
6363
painter.setPen(QColor("#F5F0E6"))
6464
painter.drawText(self.rect(), Qt.AlignmentFlag.AlignCenter, self.text())
6565
else:
66+
if not self.isEnabled():
67+
painter.setOpacity(0.75)
6668
rect = QRectF(self.rect()).adjusted(1, 1, -1, -1)
6769
path = QPainterPath()
6870
path.addRoundedRect(rect, self._radius, self._radius)
69-
painter.fillPath(path, QColor("#E8E4DA") if self._hovered else QColor("#F5F0E6"))
71+
painter.fillPath(path, QColor("#E8E4DA") if self._hovered and self.isEnabled() else QColor("#F5F0E6"))
7072

7173
painter.setFont(QFont("Montserrat", self._font_size))
7274
painter.setPen(QColor("#4EBEEE"))

src/views/create_account_manual.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ def _build(self, controller):
3737
entry_row = QHBoxLayout()
3838
self.pid_entry = StyledEntry()
3939
self.pid_entry.setMaximumWidth(800)
40+
self.pid_entry.returnPressed.connect(self._go_to_review)
4041
entry_row.addStretch()
4142
entry_row.addWidget(self.pid_entry)
4243
entry_row.addStretch()
@@ -45,11 +46,13 @@ def _build(self, controller):
4546
inner.addStretch(2)
4647

4748
btn_row = QHBoxLayout()
48-
register_btn = StyledButton("Register")
49-
register_btn.setFixedWidth(349)
50-
register_btn.clicked.connect(self._go_to_review)
49+
self.register_btn = StyledButton("Register")
50+
self.register_btn.setFixedWidth(349)
51+
self.register_btn.setEnabled(False)
52+
self.register_btn.clicked.connect(self._go_to_review)
53+
self.pid_entry.textChanged.connect(self._update_btn_state)
5154
btn_row.addStretch()
52-
btn_row.addWidget(register_btn)
55+
btn_row.addWidget(self.register_btn)
5356
btn_row.addStretch()
5457
inner.addLayout(btn_row)
5558

@@ -65,6 +68,9 @@ def _build(self, controller):
6568
no_pid_row.addStretch()
6669
inner.addLayout(no_pid_row)
6770

71+
def _update_btn_state(self):
72+
self.register_btn.setEnabled(bool(self.pid_entry.text().strip()))
73+
6874
def on_show(self):
6975
self.pid_entry.setFocus()
7076

src/views/create_account_no_pid.py

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,17 +50,27 @@ def _field_row(label_text):
5050
self.last_name_entry = _field_row("Last Name")
5151
self.email_entry = _field_row("Email")
5252

53+
for entry in (self.first_name_entry, self.last_name_entry, self.email_entry):
54+
entry.returnPressed.connect(self._submit)
55+
entry.textChanged.connect(self._update_btn_state)
56+
5357
inner.addStretch(1)
5458

5559
btn_row = QHBoxLayout()
56-
register_btn = StyledButton("Register")
57-
register_btn.setFixedWidth(349)
58-
register_btn.clicked.connect(self._submit)
60+
self.register_btn = StyledButton("Register")
61+
self.register_btn.setFixedWidth(349)
62+
self.register_btn.setEnabled(False)
63+
self.register_btn.clicked.connect(self._submit)
5964
btn_row.addStretch()
60-
btn_row.addWidget(register_btn)
65+
btn_row.addWidget(self.register_btn)
6166
btn_row.addStretch()
6267
inner.addLayout(btn_row)
6368

69+
def _update_btn_state(self):
70+
self.register_btn.setEnabled(all(
71+
e.text().strip() for e in (self.first_name_entry, self.last_name_entry, self.email_entry)
72+
))
73+
6474
def on_show(self):
6575
self.first_name_entry.setFocus()
6676

@@ -76,6 +86,8 @@ def _submit(self):
7686
first = self.first_name_entry.text().strip()
7787
last = self.last_name_entry.text().strip()
7888
email = self.email_entry.text().strip()
89+
if not all([first, last, email]):
90+
return
7991
self.clear_entries()
8092
try:
8193
self.controller.ctx.account.create_account_from_review(

src/views/create_account_review.py

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,14 +51,20 @@ def _field_row(label_text):
5151
self.email_entry = _field_row("Email")
5252
self.pid_entry = _field_row("PID")
5353

54+
for entry in (self.first_name_entry, self.last_name_entry,
55+
self.email_entry, self.pid_entry):
56+
entry.returnPressed.connect(self._submit)
57+
entry.textChanged.connect(self._update_btn_state)
58+
5459
inner.addStretch(1)
5560

5661
btn_row = QHBoxLayout()
57-
register_btn = StyledButton("Register")
58-
register_btn.setFixedWidth(349)
59-
register_btn.clicked.connect(self._submit)
62+
self.register_btn = StyledButton("Register")
63+
self.register_btn.setFixedWidth(349)
64+
self.register_btn.setEnabled(False)
65+
self.register_btn.clicked.connect(self._submit)
6066
btn_row.addStretch()
61-
btn_row.addWidget(register_btn)
67+
btn_row.addWidget(self.register_btn)
6268
btn_row.addStretch()
6369
inner.addLayout(btn_row)
6470

@@ -73,6 +79,13 @@ def setup(self, first_name="", last_name="", email="", pid="", pid_locked=False)
7379
if pid:
7480
self.pid_entry.setText(pid.upper())
7581
self.pid_entry.set_readonly(pid_locked)
82+
self._update_btn_state()
83+
84+
def _update_btn_state(self):
85+
self.register_btn.setEnabled(all(
86+
e.text().strip() for e in (self.first_name_entry, self.last_name_entry,
87+
self.email_entry, self.pid_entry)
88+
))
7689

7790
def on_show(self):
7891
self.first_name_entry.setFocus()
@@ -93,6 +106,8 @@ def _submit(self):
93106
last = self.last_name_entry.text().strip()
94107
email = self.email_entry.text().strip()
95108
pid = self.pid_entry.text().strip().upper()
109+
if not all([first, last, email, pid]):
110+
return
96111
self.clear_entries()
97112
try:
98113
self.controller.ctx.account.create_account_from_review(

0 commit comments

Comments
 (0)