Pygame components for text input and display
TextDisplayer displays any data it receives on a Pygame surface. Every new piece of data is displayed on its own line, and lines wrap automatically.
Textbox displays user input while the user types, and sends its string buffer to its 'outbox' when it receives a ' '.
To take user input in Textbox and display it in TextDisplayer:
Pipeline(Textbox(size = (800, 300), position = (0,0)), TextDisplayer(size = (800, 300), position = (0,340)) ).run()
TextDisplayer requests a display from the Pygame Display service and requests that Pygame Display send all keypresses to it. Every time TextDisplayer receives a keypress, it updates its string buffer and the display.
If it receives a newline, or if text must wrap, it moves the existing text upwards and blits the new line onto the bottom.
The line wrapping length is specified by the width of the display divided by the width of the letter 'a' in the displayed font, so lines may wrap too far off the edge of the screen if the user types very narrow text (i.e. just spaces with no other charachters), or too far inside the edge of the screen (usually).
TextDisplayer(...) -> new TextDisplayer Pygame component.
Methods defined here
requests a display surface from the PygameDisplay service, fills the color in, and copies it
Checks for control messages
Updates text to the bottom of the screen while scrolling old text upwards. Delegates most of the work to updateLine
Updates one line of text to bottom of screen, scrolling old text upwards.
Textbox(...) -> New Pygame Textbox component
Reads keyboard input and updates it on the screen. Flushes string buffer and sends it to outbox when a newline is encountered.
Methods defined here
Requests a surface from PygameDisplay and registers to listen for events Then enters the main loop, which checks for Pygame events and updates them to the screen.
erases the screen and updates it with text
Got a problem with the documentation? Something unclear that could be clearer? Want to help improve it? Constructive criticism is very welcome - especially if you can suggest a better rewording!
Please leave you feedback here in reply to the documentation thread in the Kamaelia blog.
-- Automatic documentation generator, 05 Jun 2009 at 03:01:38 UTC/GMT
This is an ongoing community based development site. As a result the contents of this page is the opinions of the contributors of the pages involved not the organisations involved. Specificially, this page may contain personal views which are not the views of the BBC. (the site is powered by a wiki engine)
(C) Copyright 2008 Kamaelia Contributors, including the British Broadcasting Corporation, All Rights Reserved.