Пример #1
0
    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)
Пример #2
0
    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)
Пример #3
0
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)
Пример #4
0
    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
        ]