@@ -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