def test_size(self): ib = gui.InputBox("Some Long Default Text", (0, 0)) fr = ib.render_text.font.get_rect("Some Default Text") self.assertTrue(ib.w > fr.w) self.assertTrue(ib.h > fr.h) ib.text = "Less Text" self.assertTrue(ib.render_text.hitbox.topleft[0] in (1, 0)) ib.text = "More Text Than The Default Text To Align Right" self.assertTrue(ib.render_text.hitbox.topright[0] in (ib.hitbox.w, ib.hitbox.w - 1)) ib = gui.InputBox("Some Default Text", (0, 0, 30)) fr = ib.render_text.font.get_rect("Some Default Text") self.assertTrue(ib.w > fr.w) self.assertEqual(ib.h, 30)
def test_select_deselect(self): ib = gui.InputBox("Some Long Default Text", (0, 0)) l = [] md = gui.interfaces.new_event( gui.pygame.event.Event(gui.pygame.MOUSEBUTTONDOWN, { "pos": (1, 1), "button": 1 })) l.append(md) ib.update([ib], [0], l) self.assertTrue(ib.selected) self.assertEqual(ib.text, "") l.pop() mu = gui.interfaces.new_event( gui.pygame.event.Event(gui.pygame.MOUSEBUTTONUP, { "pos": (1, 1), "button": 1 })) l.append(mu) ib.update([ib], [0], l) self.assertTrue(ib.selected) l.pop() md = gui.interfaces.new_event( gui.pygame.event.Event(gui.pygame.MOUSEBUTTONDOWN, { "pos": (-1, -1), "button": 1 })) l.append(md) ib.update([ib], [0], l) self.assertFalse(ib.selected) self.assertEqual(ib.text, ib._default_text)
def input_func(): global input_box input_box = gui.InputBox(625 - 240, 200, 480, 200, (255, 200, 0), lambda n: render_canvas.save(n), 'Save file as:', gameDisplay, evManager=controller) controller.registerListener(input_box)
def test_key_presses(self): ib = gui.InputBox("Some Long Default Text", (0, 0)) l = [] md = gui.interfaces.new_event( gui.pygame.event.Event(gui.pygame.MOUSEBUTTONDOWN, { "pos": (1, 1), "button": 1 })) l.append(md) ib.update([ib], [0], l) l.pop() old_text = ib.text kd = gui.interfaces.new_event( gui.pygame.event.Event(gui.pygame.KEYDOWN, { "key": 0, "unicode": chr(0) })) l.append(kd) ib.update([ib], [1], l) self.assertEqual(old_text, ib.text) kd = gui.interfaces.new_event( gui.pygame.event.Event(gui.pygame.KEYDOWN, { "key": ord("A"), "unicode": "A" })) l.append(kd) ib.update([ib], [1], l) self.assertEqual(ib.text, "A") kd = gui.interfaces.new_event( gui.pygame.event.Event(gui.pygame.KEYDOWN, { "key": ord("B"), "unicode": "B" })) l.append(kd) ib.update([ib], [1], l) self.assertEqual(ib.text, "AB") kd = gui.interfaces.new_event( gui.pygame.event.Event( gui.pygame.KEYDOWN, { "key": gui.pygame.K_BACKSPACE, "unicode": chr(gui.pygame.K_BACKSPACE) })) l.append(kd) ib.update([ib], [1], l) self.assertEqual(ib.text, "A") kd = gui.interfaces.new_event( gui.pygame.event.Event(gui.pygame.KEYDOWN, { "key": gui.pygame.K_DELETE, "unicode": chr(gui.pygame.K_DELETE) })) l.append(kd) ib.update([ib], [1], l) self.assertEqual(ib.text, "") kd = gui.interfaces.new_event( gui.pygame.event.Event(gui.pygame.KEYDOWN, { "key": gui.pygame.K_RETURN, "unicode": chr(gui.pygame.K_RETURN) })) l.append(kd) ib.update([ib], [1], l) self.assertFalse(ib.selected) self.assertEqual(ib.text, ib._default_text)
def __init__(self, win, win_scale, user_id, icons): """ Class for the login screen. :param win: The current window, all objects must be blitted to this window to be displayed. :param win_scale: Window Scale (How large the window is - must be multiplied by all size related variables). :param user_id: UserID if the user has signed in (they don't have to be signed in to play Classic). :param icons: List of icon objects from the StartScreen. """ # Essential super().__init__(win, win_scale, user_id, icons) self.sub_program_name = 'loginscreen' if user_id is None else 'accounts' self.enter_pressed = False # Login Title self.login_title = gui.Word('Login!', (188, 90), (255, 255, 30), 80, win_scale, centre=True) # Username Input Box self.username_input_box = gui.InputBox(168, 206, 150, 30, 30, win_scale, 'Username', centre=True) # Password Input Box self.password_input_box = gui.InputBox(168, 246, 150, 30, 30, win_scale, 'Password', centre=True, private=True) # Login Button self.login_button = gui.Button('Login', (168, 286), (160, 30), 30, (255, 255, 30), 2, win_scale, centre=True) # SignUp Button self.signup_button = gui.Button('SignUp', (168, 286), (160, 30), 30, (255, 255, 30), 2, win_scale, centre=True) self.boxes = [ self.username_input_box, self.password_input_box, self.signup_button ] # Remember me Buttons self.remember_me = False self.remember_me_green = gui.Button('Remember me', (168, 326), (160, 30), 24, (0, 222, 222), 2, win_scale, centre=True) self.remember_me_red = gui.Button('Remember me', (168, 326), (160, 30), 24, (222, 0, 0), 2, win_scale, centre=True) self.remember_me_buttons = [ self.remember_me_red, self.remember_me_green ]
def __init__(self, win, win_scale, user_id, icons): """ Uses words and input boxes to display a sign up screen. It also updates the input boxes and calls the local database to check whether the details are valid, then (if they are) asks the local database to save the details. :param win: The current window, all objects must be blitted to this window to be displayed. :param win_scale: Window Scale (How large the window is - must be multiplied by all size related variables). :param user_id: UserID if the user has signed in (they don't have to be signed in to play Classic). :param icons: List of icon objects from the StartScreen. """ super().__init__(win, win_scale, user_id, icons) self.sub_program_name = 'signupscreen' self.error_message = None self.enter_pressed = False # Sign Up Title self.signup_title = gui.Word('Sign Up!', (188, 90), (255, 255, 30), 80, win_scale, centre=True) # Username Input Box self.username_input_box = gui.InputBox(168, 206, 160, 30, 30, win_scale, 'Username', centre=True) # Password Input Box self.password_input_box = gui.InputBox(168, 246, 160, 30, 30, win_scale, 'Password', centre=True, private=True) # Password Confirm Box self.password_confirm_input_box = gui.InputBox(168, 286, 160, 30, 30, win_scale, 'Password', centre=True, private=True) # Sign Up Button self.signup_button = gui.Button('Sign Up', (168, 326), (160, 30), 30, (255, 255, 30), 2, win_scale, centre=True) self.boxes = [ self.username_input_box, self.password_input_box, self.password_confirm_input_box, self.signup_button ]