def __init__(self): DataTemplate.__init__(self) # Set the birthday to be False by default self._is_birthday_valid = False box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) # This data contains the saved username and birthday data = self.get_cached_username_and_birthday() self._username = LabelledEntry("Username", data["username"]) self._username.connect("key-release-event", self.validate_username) logger.debug("Checking for internet") # Do not fill this in self._password = LabelledEntry(_("Password")) self._password.connect("key-release-event", self.validate_password) self.bday_widget = BirthdayWidget( data['birthday_day'], data['birthday_month'], data['birthday_year'] ) self.bday_widget.connect('birthday-valid', self._birthday_valid) self.bday_widget.connect('birthday-invalid', self._birthday_invalid) self.update_birthday_widget_from_cache() self.validate_username() self.show_password = Gtk.CheckButton.new_with_label(_("Show password")) self.show_password.get_style_context().add_class("show_password") self.show_password.connect("toggled", self.make_password_entry_visible) self.show_password.set_active(True) self.show_password.set_margin_left(30) self.bday_widget.connect("bday-key-release-event", self.widgets_full) box.pack_start(self._username, False, False, 15) box.pack_start(self._password, False, False, 5) box.pack_start(self.show_password, False, False, 0) box.pack_start(self.bday_widget, False, False, 15) box.set_margin_top(20) self.add(box)
class GetData2(DataTemplate): """This second class registration box is to get the username, password and birthday of the user. """ def __init__(self): DataTemplate.__init__(self) box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) # This data contains the saved username and birthday data = self.get_cached_username_and_birthday() self.username_entry = LabelledEntry("Username", data["username"]) self.username_entry.connect("key-release-event", self.validate_username) logger.debug("Checking for internet") # Do not fill this in self.password_entry = LabelledEntry(_("Password")) self.password_entry.connect("key-release-event", self.validate_password) self.bday_widget = BirthdayWidget(data["birthday_day"], data["birthday_month"], data["birthday_year"]) self.bday_widget.connect("birthday-valid", self._birthday_valid) self.bday_widget.connect("birthday-invalid", self._birthday_invalid) self.bday_widget.validate() self.validate_username() self.show_password = Gtk.CheckButton.new_with_label(_("Show password")) self.show_password.get_style_context().add_class("show_password") self.show_password.connect("toggled", self.make_password_entry_visible) self.show_password.set_active(True) self.show_password.set_margin_left(30) self.bday_widget.connect("bday-key-release-event", self.widgets_full) box.pack_start(self.username_entry, False, False, 15) box.pack_start(self.password_entry, False, False, 5) box.pack_start(self.show_password, False, False, 0) box.pack_start(self.bday_widget, False, False, 15) box.set_margin_top(20) self.add(box) def make_password_entry_visible(self, widget): visibility = self.show_password.get_active() self.password_entry.set_visibility(visibility) def validate_password(self, widget=None, event=None): """widget is the password entry """ password = self.password_entry.get_text() if len(password) == 0: self.password_entry.label_success("") elif check_password(password): self.password_entry.label_success(_("looks good!"), "success") else: self.password_entry.label_success(_("is not valid"), "fail") self.widgets_full() def validate_username(self, widget=None, event=None): """widget is the username entry as is conencted to the key-release-event """ username = self.username_entry.get_text() if len(username) == 0: self.username_entry.label_success("") elif check_username(username): self.username_entry.label_success(_("is valid"), "success") else: self.username_entry.label_success(_("is invalid"), "fail") self.widgets_full() def _birthday_valid(self, widget=None, event=None): self._is_birthday_valid = True self.widgets_full() def _birthday_invalid(self, widget=None, event=None): self._is_birthday_valid = False self.widgets_full() def calculate_age(self): return self.bday_widget.calculate_age() def enable_all(self): self.checkbutton.set_sensitive(True) self.username_entry.set_sensitive(True) self.password_entry.set_sensitive(True) self.tc_button.set_sensitive(True) def get_entry_data(self): data = {} data["username"] = self.username_entry.get_text() data["password"] = self.password_entry.get_text() bday_data = self.bday_widget.get_birthday_data()[1] data.update(bday_data) data["age"] = self.bday_widget.calculate_age() logger.debug("data from data screen 1 {}".format(data)) return data # To be passed to the registration screen def save_username_and_birthday(self): data = self.get_entry_data() cache_data("username", data["username"]) cache_data("birthday_day", data["day"]) cache_data("birthday_month", data["month"]) cache_data("birthday_year", data["year"]) def get_cached_username_and_birthday(self): username = get_cached_data("username") birthday_day = get_cached_data("birthday_day") birthday_month = get_cached_data("birthday_month") birthday_year = get_cached_data("birthday_year") return { "username": username, "birthday_day": birthday_day, "birthday_month": birthday_month, "birthday_year": birthday_year, } def widgets_full(self, widget=None, event=None): if self.username_entry.validated and self.password_entry.validated and self._is_birthday_valid: logger.debug("emiting widgets-full") self.emit("widgets-filled") else: logger.debug("emiting widgets-empty") self.emit("widgets-empty")
class GetData1(DataTemplate): '''This second class registration box is to get the username, password and birthday of the user. ''' def __init__(self): DataTemplate.__init__(self) # Set the birthday to be False by default self._is_birthday_valid = False box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) # This data contains the saved username and birthday data = self.get_cached_username_and_birthday() self._username = LabelledEntry("Username", data["username"]) self._username.connect("key-release-event", self.validate_username) logger.debug("Checking for internet") # Do not fill this in self._password = LabelledEntry(_("Password")) self._password.connect("key-release-event", self.validate_password) self.bday_widget = BirthdayWidget( data['birthday_day'], data['birthday_month'], data['birthday_year'] ) self.bday_widget.connect('birthday-valid', self._birthday_valid) self.bday_widget.connect('birthday-invalid', self._birthday_invalid) self.update_birthday_widget_from_cache() self.validate_username() self.show_password = Gtk.CheckButton.new_with_label(_("Show password")) self.show_password.get_style_context().add_class("show_password") self.show_password.connect("toggled", self.make_password_entry_visible) self.show_password.set_active(True) self.show_password.set_margin_left(30) self.bday_widget.connect("bday-key-release-event", self.widgets_full) box.pack_start(self._username, False, False, 15) box.pack_start(self._password, False, False, 5) box.pack_start(self.show_password, False, False, 0) box.pack_start(self.bday_widget, False, False, 15) box.set_margin_top(20) self.add(box) @property def username(self): return self._username def make_password_entry_visible(self, widget): visibility = self.show_password.get_active() self._password.set_visibility(visibility) def validate_password(self, widget=None, event=None): '''widget is the password entry ''' password = self._password.get_text() if len(password) == 0: self._password.label_success("") elif check_password(password): self._password.label_success(_("looks good!"), "success") else: self._password.label_success(_("is not valid"), "fail") self.widgets_full() def validate_username(self, widget=None, event=None): username = self._username.get_text() if len(username) == 0: self._username.label_success("") elif check_username(username): self._username.label_success(_(""), "success") else: self._username.label_success(_("is invalid"), "fail") self.widgets_full() def _birthday_valid(self, widget=None, event=None): self._is_birthday_valid = True self.widgets_full() def _birthday_invalid(self, widget=None, event=None): self._is_birthday_valid = False self.widgets_full() def calculate_age(self): return self.bday_widget.calculate_age() def enable_all(self): self.checkbutton.set_sensitive(True) self._username.set_sensitive(True) self._password.set_sensitive(True) self.tc_button.set_sensitive(True) def get_widget_data(self): data = {} data['username'] = self._username.get_text() data['password'] = self._password.get_text() bday_data = self.bday_widget.get_birthday_data() data.update(bday_data) data['age'] = self.bday_widget.calculate_age() logger.debug("data from data screen 1 {}".format(data)) return data # To be passed to the registration screen def save_username_and_birthday(self): # Birthday should not strictly be got in entry data data = self.get_widget_data() cache_data("username", data['username']) cache_data("birthday_day", data['day']) cache_data("birthday_day_index", data["day_index"]) cache_data("birthday_month", data['month']) cache_data("birthday_month_index", data["month_index"]) cache_data("birthday_year", data['year']) cache_data("birthday_year_index", data["year_index"]) def update_birthday_widget_from_cache(self): self.bday_widget.set_birthday_data( get_cached_data("birthday_year_index"), get_cached_data("birthday_month_index"), get_cached_data("birthday_day_index") ) def get_cached_username_and_birthday(self): username = get_cached_data("username") birthday_day = get_cached_data("birthday_day") birthday_month = get_cached_data("birthday_month") birthday_year = get_cached_data("birthday_year") return { "username": username, "birthday_day": birthday_day, "birthday_month": birthday_month, "birthday_year": birthday_year } def widgets_full(self, widget=None, event=None): if (self._username.validated and self._password.validated and self._is_birthday_valid): logger.debug("emitting widgets-full") self.emit('widgets-filled') else: logger.debug("emitting widgets-empty") self.emit('widgets-empty')