Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWalter Bender <walter@walter-laptop.(none)>2009-07-18 00:40:59 (GMT)
committer Walter Bender <walter@walter-laptop.(none)>2009-07-18 00:40:59 (GMT)
commit19d464d591f664ebce4472f706d6c01a5774501c (patch)
tree336431ce0ef3d7c02882420eaa32601f0f90c7cc
parent35137c3856627a752e6d4ae4d5248bf79e22e557 (diff)
dead key workaround
-rw-r--r--tasprites.py4
-rw-r--r--taturtle.py15
-rw-r--r--tawindow.py82
3 files changed, 94 insertions, 7 deletions
diff --git a/tasprites.py b/tasprites.py
index 08c5f83..b4fc67a 100644
--- a/tasprites.py
+++ b/tasprites.py
@@ -133,8 +133,10 @@ def hit(spr,pos):
def draw_label(spr, label, myscale, center_flag):
fd = pango.FontDescription('Sans')
fd.set_size(int(myscale*spr.tw.scale*pango.SCALE))
+ # print label
+ # print type(label)
if type(label) == str or type(label) == unicode:
- pl = spr.tw.window.create_pango_layout(str(label))
+ pl = spr.tw.window.create_pango_layout(label.replace("\0"," "))
pl.set_font_description(fd)
if center_flag:
swidth = pl.get_size()[0]/pango.SCALE
diff --git a/taturtle.py b/taturtle.py
index 39f4570..9479c97 100644
--- a/taturtle.py
+++ b/taturtle.py
@@ -252,12 +252,15 @@ def draw_text(t, label, x, y, size, w):
fd.set_size(int(size)*pango.SCALE)
except:
pass
- pl = t.tw.window.create_pango_layout(str(label))
- pl.set_font_description(fd)
- pl.set_width(int(w)*pango.SCALE)
- t.canvas.image.draw_layout(t.gc,int(x),int(y),pl)
- w,h = pl.get_pixel_size()
- invalt(t,x,y,w,h)
+ if type(label) == str or type(label) == unicode:
+ pl = t.tw.window.create_pango_layout(label.replace("\0"," "))
+ pl.set_font_description(fd)
+ pl.set_width(int(w)*pango.SCALE)
+ t.canvas.image.draw_layout(t.gc,int(x),int(y),pl)
+ w,h = pl.get_pixel_size()
+ invalt(t,x,y,w,h)
+ else:
+ print type(label)
def draw_line(t,x1,y1,x2,y2):
x1,y1 = t.width/2+int(x1), t.height/2-int(y1)
diff --git a/tawindow.py b/tawindow.py
index bfca132..7989406 100644
--- a/tawindow.py
+++ b/tawindow.py
@@ -44,6 +44,33 @@ from taturtle import *
from taproject import *
from sugar.graphics.objectchooser import ObjectChooser
+# from palettes import ContentInvoker
+# from gettext import gettext as _
+"""
+class PopupHandler():
+
+ def __init__(self):
+ self.table = {}
+
+ def getInvoker(self, block_name):
+ if block_name in self.table:
+ return self.table[block_name]
+
+ msg = self._getHelpMessage(block_name)
+ if msg != "":
+ self.table[block_name] = ContentInvoker(msg)
+ return self.table[block_name]
+
+ print("no hay invoker para" + block_name)
+ return None
+
+ def _getHelpMessage(self, block_name):
+ help_msg_name = "popup_help_" + block_name
+ return _(help_msg_name)
+
+popupHandler = PopupHandler()
+"""
+
#
# Setup
#
@@ -77,6 +104,8 @@ def twNew(win, path, lang, parent=None):
win.connect("key_press_event", keypress_cb, tw)
tw.keypress = ""
tw.keyvalue = 0
+ tw.dead_tilde = 0
+ tw.dead_acute = 0
tw.area = win.window
tw.gc = tw.area.new_gc()
# tw.window.textentry = gtk.Entry()
@@ -263,6 +292,12 @@ def mouse_move(tw, x, y, verbose=False, mdx=0, mdy=0):
if verbose:
print "processing remote mouse move: " + str(x) + " " + str(y)
if tw.draggroup is None:
+ # popup help from RGS
+# spr = findsprite(tw,(x,y))
+# if spr and spr.type == 'category':
+# proto = get_proto_from_category(tw,x,y)
+# if proto and proto!='hide':
+# showPopup(proto.name)
return
tw.block_operation = 'move'
spr = tw.draggroup[0]
@@ -539,6 +574,15 @@ def key_press(tw, alt_mask, keyname, keyunicode, verbose=False):
'Alt_L', 'Alt_R', 'KP_Enter', 'ISO_Level3_Shift']:
keyname = ''
keyunicode = 0
+ # Hack until I sort out input and unicode + dead keys
+ if keyname == 'dead_tilde':
+ tw.dead_tilde = True
+ keyname = ''
+ keyunicode = 0
+ elif keyname == 'dead_acute':
+ tw.dead_acute = True
+ keyname = ''
+ keyunicode = 0
if keyname == 'Tab':
keyunicode = 32 # substitute a space for a tab
oldnum = tw.selected_block.label
@@ -552,6 +596,39 @@ def key_press(tw, alt_mask, keyname, keyunicode, verbose=False):
if len(newnum) > 0:
tw.firstkey = False
elif keyname is not '':
+ # Hack until I sort out input and unicode + dead keys
+ if tw.dead_tilde == True:
+ if keyname == 'n':
+ keyunicode = 241
+ elif keyname == 'N':
+ keyunicode = 209
+ elif keyname == 'a':
+ keyunicode = 227
+ elif keyname == 'A':
+ keyunicode = 195
+ tw.dead_tilde = False
+ elif tw.dead_acute == True:
+ if keyname == 'a':
+ keyunicode = 225
+ elif keyname == 'A':
+ keyunicode = 193
+ elif keyname == 'e':
+ keyunicode = 233
+ elif keyname == 'E':
+ keyunicode = 201
+ elif keyname == 'i':
+ keyunicode = 237
+ elif keyname == 'I':
+ keyunicode = 205
+ elif keyname == 'o':
+ keyunicode = 243
+ elif keyname == 'O':
+ keyunicode = 211
+ elif keyname == 'u':
+ keyunicode = 250
+ elif keyname == 'U':
+ keyunicode = 218
+ tw.dead_acute = False
if tw.firstkey:
newnum = selblock.check(unichr(keyunicode), \
tw.defdict[selblock.name])
@@ -664,4 +741,9 @@ def blocks(tw):
def xy(event):
return map(int, event.get_coords())
+def showPopup(block_name):
+ i = popupHandler.getInvoker(block_name)
+ if i:
+ i.showPopup()
+