class TestInput(TestPygletGUI):
    def setUp(self):
        TestPygletGUI.setUp(self)
        self.input = TextInput(text="test")
        self.manager = Manager(self.input,
                               window=self.window,
                               batch=self.batch,
                               theme=self.theme)

    def test_focus(self):
        self.input.on_gain_focus()

        self.assertEqual(self.input.is_focus(), True)

        self.input.on_lose_focus()
        self.assertEqual(self.input.is_focus(), False)

    def test_input(self):
        self.assertEqual(self.input.get_text(), "test")
        self.input.on_gain_focus()
        self.input.on_text("text")
        self.assertEqual(
            self.input.get_text(),
            "text")  # it starts with all text selected, so 'test' is erased.
        self.input.on_text(" text")
        self.assertEqual(self.input.get_text(), "text text")

    def test_motion(self):
        self.input.on_gain_focus()

        self.input.on_text_motion(pyglet.window.key.MOTION_RIGHT)
        # 'test|' where | is the carret.
        self.assertEqual(self.input.get_text(), "test")

        self.input.on_text_motion(pyglet.window.key.MOTION_BACKSPACE)
        # 'tes|'
        self.assertEqual(self.input.get_text(), "tes")

        self.input.on_text_motion(pyglet.window.key.MOTION_LEFT)
        # 't|es'
        self.input.on_text_motion(pyglet.window.key.MOTION_LEFT)

        self.input.on_text_motion(pyglet.window.key.MOTION_DELETE)
        # 't|s'
        self.assertEqual(self.input.get_text(), "ts")

    def test_delete(self):
        self.manager.delete()

    def test_delete_without_focus(self):
        self.input.on_gain_focus()
        self.input.on_lose_focus()
        self.manager.delete()

    def test_delete_with_focus(self):
        self.input.on_gain_focus()
        self.manager.delete()
Пример #2
0
class TestInput(TestPygletGUI):

    def setUp(self):
        TestPygletGUI.setUp(self)
        self.input = TextInput(text="test")
        self.manager = Manager(self.input, window=self.window, batch=self.batch, theme=self.theme)

    def test_focus(self):
        self.input.on_gain_focus()

        self.assertEqual(self.input.is_focus(), True)

        self.input.on_lose_focus()
        self.assertEqual(self.input.is_focus(), False)

    def test_input(self):
        self.assertEqual(self.input.get_text(), "test")
        self.input.on_gain_focus()
        self.input.on_text("text")
        self.assertEqual(self.input.get_text(), "text")  # it starts with all text selected, so 'test' is erased.
        self.input.on_text(" text")
        self.assertEqual(self.input.get_text(), "text text")

    def test_motion(self):
        self.input.on_gain_focus()

        self.input.on_text_motion(pyglet.window.key.MOTION_RIGHT)
        # 'test|' where | is the carret.
        self.assertEqual(self.input.get_text(), "test")

        self.input.on_text_motion(pyglet.window.key.MOTION_BACKSPACE)
        # 'tes|'
        self.assertEqual(self.input.get_text(), "tes")

        self.input.on_text_motion(pyglet.window.key.MOTION_LEFT)
        # 't|es'
        self.input.on_text_motion(pyglet.window.key.MOTION_LEFT)

        self.input.on_text_motion(pyglet.window.key.MOTION_DELETE)
        # 't|s'
        self.assertEqual(self.input.get_text(), "ts")

    def test_delete(self):
        self.manager.delete()

    def test_delete_without_focus(self):
        self.input.on_gain_focus()
        self.input.on_lose_focus()
        self.manager.delete()

    def test_delete_with_focus(self):
        self.input.on_gain_focus()
        self.manager.delete()
Пример #3
0
class Chat(Manager):
    def __init__(self):
        w1 = int(350 * (g.SCREEN_WIDTH / 1920.))
        h1 = int(300 * (g.SCREEN_HEIGHT / 1080.))
        if w1 > 300:
            g.chatTheme["font_size"] = 11
            g.theme["font_size"] = 11
            g.theme["button"]["font_size"] = 11
        elif w1 > 250:
            g.chatTheme["font_size"] = 12
            g.theme["font_size"] = 12
            g.theme["button"]["font_size"] = 12
            w1 = int(w1 * 1.1)
        elif w1 > 200:
            g.chatTheme["font_size"] = 11
            g.theme["font_size"] = 11
            g.theme["button"]["font_size"] = 11
            w1 = int(w1 * 1.2)
        elif w1 > 175:
            g.chatTheme["font_size"] = 10
            g.theme["font_size"] = 10
            g.theme["button"]["font_size"] = 10
            w1 = int(w1 * 1.3)
        else:
            g.chatTheme["font_size"] = 9
            g.theme["font_size"] = 9
            g.theme["button"]["font_size"] = 9
            w1 = int(w1 * 1.3)
        self.chatInput = TextInput(text="",
                                   padding=0,
                                   length=16,
                                   max_length=MAX_CHAT_INPUT,
                                   width=w1 - 5 - 50)
        sendButton = HighlightedButton(label="Send",
                                       on_release=self.sendMessage,
                                       width=50,
                                       height=35)
        realtext = '{font_size ' + str(
            g.chatTheme["font_size"]) + '}{background_color ' + str(
                g.postBgColor
            ) + '}{font_name "' + g.chatTheme["font"] + '"}{wrap "char"} '
        document = pyglet.text.decode_attributed(realtext)
        self.textArea = Document(document,
                                 width=w1,
                                 height=h1,
                                 background=True,
                                 font_size=g.chatTheme["font_size"],
                                 font_name=g.chatTheme["font"],
                                 chat=True)

        vertCont = VerticalContainer(content=[
            self.textArea,
            HorizontalContainer(content=[self.chatInput, sendButton])
        ],
                                     align=HALIGN_LEFT)
        Manager.__init__(self,
                         vertCont,
                         window=g.screen,
                         batch=g.guiBatch,
                         theme=g.chatTheme,
                         anchor=ANCHOR_BOTTOM_LEFT,
                         offset=(g.SCREEN_WIDTH * 0.05, g.SCREEN_HEIGHT * 0.1),
                         is_movable=False)
        #print self.__dict__
    def setPos(self, x, y):
        self.set_position(x, y)

    def sendMessage(self, event):
        g.chatReloaded = False
        text = self.chatInput.get_text()

        if text != "":
            sendChatMsg(text)
        else:
            g.chatting = None
        if not g.chatReloaded:
            self.chatInput.set_text("")
            if self._focus == self.chatInput:
                self._focus = None
                self.chatInput.on_lose_focus()
        self.chatInput.focused = False

    def delete(self):
        super(Manager, self).delete()

    def addText(self, constructedText):
        len1 = len(self.textArea._document.text)
        attributes = {}
        for c in constructedText._style_runs:
            for d in constructedText._style_runs[c]:
                if d[2] is not None:
                    attributes.update({str(c): d[2]})
        self.textArea._document.insert_text(len1, constructedText._text,
                                            attributes)