Esempio n. 1
0
    def display_buffer(self, start=None, end=None, raw=False):
       if raw:
           self.caller.msg(self.get_buffer())
           return
       # Generate a title string
       title = '{CText Editor'
       if self.key:
           title += ' {C[{c%s{C]' % self.key
       title = evennia_color.evennia_color_trunc_dots(title, 78)
       # Generate a footer statistic string
       nlines = len(self.text_buffer)
       if self.maxlines and nlines > self.maxlines:
           slines = '{r%d{C/%d' % (nlines, self.maxlines)
       elif self.maxlines:
           slines = '{C%d/%d' % (nlines, self.maxlines)
       else:
           slines = '{C%d' % (nlines)
       nwords = len([ word for word in re.split(r'\s+', '\n'.join(self.text_buffer)) if word != ''])
       if self.maxwords and nwords > self.maxwords:
           swords = '{r%d{C/%d' % (nwords, self.maxwords)
       elif self.maxwords:
           swords = '{C%d/%d' % (nwords, self.maxwords)
       else:
           swords = '{C%d' % (nwords)
       nchars = len('\n'.join(self.text_buffer))
       if self.maxchars and nchars > self.maxchars:
           schars = '{r%d{C/%d' % (nchars, self.maxchars)
       elif self.maxchars:
           schars = '{C%d/%d' % (nchars, self.maxchars)
       else:
           schars = '{C%d' % (nchars)
       footer_info = '{C[l:%s {Cw:%s {Cc:%s{C]' % (slines, swords, schars)

       # Combine the strings into a header and footer
       header = evennia_color.EvenniaColorCanvas()
       header.evennia_import('{w------------------------------------------------------------------------------')
       header.draw_string(header.width() / 2 - (evennia_color.evennia_color_len(title) / 2), 0, title)
       footer = evennia_color.EvenniaColorCanvas()
       footer.evennia_import('{w---------------------------------------------------------------{b[{c:h{b for help]{w--')
       footer.draw_string(3, 0, footer_info)
       self.caller.msg(header.evennia_export())
       if self.text_buffer == []:
           self.caller.msg('      {rEmpty Buffer')
       else:
           for lineno, line in enumerate(self.text_buffer):
               if self.color:
                   self.caller.msg('{c%5s {n%s' % (lineno + 1, line))
               else:
                   self.caller.msg('{c%5s {n%s' % (lineno + 1, line.replace('%', '%%').replace('{', '{{')))
       self.caller.msg(footer.evennia_export())