Procházet zdrojové kódy

accent marks on signs

David Rose před 23 roky
rodič
revize
b234ee8e29
1 změnil soubory, kde provedl 14 přidání a 4 odebrání
  1. 14 4
      direct/src/leveleditor/LevelEditor.py

+ 14 - 4
direct/src/leveleditor/LevelEditor.py

@@ -377,9 +377,18 @@ def DNASetBaselineString(baseline, text):
     # This should allow inlined graphics to stay in place.
     # end of todo.
     DNARemoveAllChildrenOfClass(baseline, DNA_SIGN_TEXT);
-    for i in text:
+
+    # We can't just blindly iterate through the text, because it might
+    # be utf-8 encoded, meaning some characters are represented using
+    # multi-byte sequences.  Instead, create a TextNode and use it to
+    # iterate through the characters of the text.
+    t = TextNode('')
+    t.setText(text)
+    for i in range(t.getNumChars()):
+        ch = t.getEncodedChar(i)
+        print "adding ch: %s" % (ch)
         text=DNASignText("text")
-        text.setLetters(i)
+        text.setLetters(ch)
         baseline.add(text)
 
 
@@ -5381,7 +5390,8 @@ class LevelEditorPanel(Pmw.MegaToplevel):
             target=DNAGetChild(self.currentSignDNA, DNA_SIGN_BASELINE, index-1)
             if target:
                 # Update panel info:
-                self.baselineString.set(DNAGetBaselineString(target))
+                s = DNAGetBaselineString(target)
+                self.baselineString.set(s)
                 self.fontMenu.selectitem(target.getCode())
                 try:
                     val = 1.0/target.getWidth()
@@ -5436,7 +5446,7 @@ class LevelEditorPanel(Pmw.MegaToplevel):
         #print self, a, b, mode, self.baselineString.get()
         baseline=self.currentBaselineDNA
         if baseline:
-            s=self.baselineString.get()
+            s = self.baselineString.get()
             self.setBaselineString(s)
 
     def addSignGraphic(self, code):