示例#1
0
    def _create_line_label(self, text):
        # Create a label from a text, using line options
        ntext = text.replace('\n', '').replace('\t', ' ' * self.tab_width)
        if self.password:
            ntext = '*' * len(ntext)
        ntext = self._get_bbcode(ntext)
        kw = self._get_line_options()
        cid = '%s\0%s' % (ntext, str(kw))
        texture = Cache_get('textinput.label', cid)

        if not texture:
            # FIXME right now, we can't render very long line...
            # if we move on "VBO" version as fallback, we won't need to do this.
            # try to found the maximum text we can handle
            label = Label(text=ntext, **kw)
            if text.find('\n') > 0:
                label.text = ''
            else:
                label.text = ntext
            try:
                label.refresh()
            except ValueError:
                return

            # ok, we found it.
            texture = label.texture
            Cache_append('textinput.label', cid, texture)
            label.text = ''
        return texture
示例#2
0
    def _create_line_label(self, text, hint=False):
        # Create a label from a text, using line options
        ntext = text.replace(u'\n', u'').replace(u'\t', u' ' * self.tab_width)
        if self.password and not hint:  # Don't replace hint_text with *
            ntext = u'*' * len(ntext)
        ntext = self._get_bbcode(ntext)
        kw = self._get_line_options()
        cid = u'{}\0{}\0{}'.format(ntext, self.password, kw)
        texture = Cache_get('textinput.label', cid)

        if texture is None:
            # FIXME right now, we can't render very long line...
            # if we move on "VBO" version as fallback, we won't need to
            # do this.
            # try to find the maximum text we can handle
            label = Label(text=ntext, **kw)
            if text.find(u'\n') > 0:
                label.text = u''
            else:
                label.text = ntext
            label.refresh()

            # ok, we found it.
            texture = label.texture
            Cache_append('textinput.label', cid, texture)
            label.text = ''
        return texture
示例#3
0
 def __init__(self, **kwargs):
     self.formatter = BBCodeFormatter()
     self.lexer = lexers.PythonLexer()
     self.text_color = '#000000'
     self._label_cached = Label()
     self.use_text_color = True
     super(CodeInput, self).__init__(**kwargs)
     self._line_options = kw = self._get_line_options()
     self._label_cached = Label(**kw)
     # use text_color as foreground color
     text_color = kwargs.get('foreground_color')
     if text_color:
         self.text_color = get_hex_from_color(text_color)
     # set foreground to white to allow text colors to show
     # use text_color as the default color in bbcodes
     self.use_text_color = False
     self.foreground_color = [1, 1, 1, .999]
     if not kwargs.get('background_color'):
         self.background_color = [.9, .92, .92, 1]