transparently interpret Unicode strings

This commit is contained in:
David Rose 2006-01-24 17:23:03 +00:00
parent c3810fc782
commit 7f35c53ae5
2 changed files with 39 additions and 7 deletions

View File

@ -1,4 +1,5 @@
from DirectFrame import *
import types
# DirectEntry States:
ENTRY_FOCUS_STATE = PGEntry.SFocus # 0
@ -96,6 +97,7 @@ class DirectEntry(DirectFrame):
self.guiItem.setTextDef(i, self.onscreenText.textNode)
# Update initial text
self.unicodeText = 0
if self['initialText']:
self.set(self['initialText'])
@ -147,10 +149,29 @@ class DirectEntry(DirectFrame):
apply(self['focusOutCommand'], self['focusOutExtraArgs'])
def set(self, text):
self.guiItem.setText(text)
self.unicodeText = isinstance(text, types.UnicodeType)
if self.unicodeText:
self.guiItem.setWtext(text)
else:
self.guiItem.setText(text)
def get(self):
return self.guiItem.getText()
if self.unicodeText:
return self.guiItem.getWtext()
else:
# Although we weren't expecting a wide character, the user
# might give us one. If this happens, we have to return a
# wide string.
wtext = self.guiItem.getWtext()
text = self.guiItem.getText()
try:
matches = (wtext == unicode(text))
except:
return wtext
if matches:
return text
else:
return wtext
def setCursorPosition(self, pos):
if (pos < 0):

View File

@ -191,8 +191,7 @@ class OnscreenText(DirectObject, NodePath):
textNode.setBin('fixed')
textNode.setDrawOrder(drawOrder)
textNode.setText(text)
self.setText(text)
if not text:
# If we don't have any text, assume we'll be changing it later.
self.mayChange = 1
@ -243,13 +242,25 @@ class OnscreenText(DirectObject, NodePath):
self.textNode.clearText()
def setText(self, text):
self.textNode.setText(text)
self.unicodeText = isinstance(text, types.UnicodeType)
if self.unicodeText:
self.textNode.setWtext(text)
else:
self.textNode.setText(text)
def appendText(self, text):
self.textNode.appendText(text)
if isinstance(text, types.UnicodeType):
self.unicodeText = 1
if self.unicodeText:
self.textNode.appendWtext(text)
else:
self.textNode.appendText(text)
def getText(self):
return self.textNode.getText()
if self.unicodeText:
return self.textNode.getWtext()
else:
return self.textNode.getText()
def setX(self, x):
self.setPos(x, self.pos[1])