Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/plugins/turtle_blocks_extras
diff options
context:
space:
mode:
authorWalter Bender <walter@sugarlabs.org>2013-10-14 18:48:10 (GMT)
committer Walter Bender <walter@sugarlabs.org>2013-10-14 18:48:10 (GMT)
commita5575408bfa527d0881674fbbdaa1e628b84e2c0 (patch)
treeec78495d433a1eac235ebf488a4da63753712392 /plugins/turtle_blocks_extras
parent29dc5ff0949b7254745a7cd3f20ab67c030c7838 (diff)
sync with 192
Diffstat (limited to 'plugins/turtle_blocks_extras')
-rw-r--r--plugins/turtle_blocks_extras/turtle_blocks_extras.py138
1 files changed, 102 insertions, 36 deletions
diff --git a/plugins/turtle_blocks_extras/turtle_blocks_extras.py b/plugins/turtle_blocks_extras/turtle_blocks_extras.py
index 1f910fd..3cb4fb9 100644
--- a/plugins/turtle_blocks_extras/turtle_blocks_extras.py
+++ b/plugins/turtle_blocks_extras/turtle_blocks_extras.py
@@ -337,6 +337,7 @@ pressed'))
lambda self:
primitive_dictionary['mousebutton2']())
+ primitive_dictionary['mousex'] = self._prim_mouse_x
palette.add_block('mousex',
style='box-style',
label=_('mouse x'),
@@ -345,8 +346,9 @@ pressed'))
help_string=_('returns mouse x coordinate'))
self.tw.lc.def_prim('mousex', 0,
lambda self:
- self.tw.mouse_x - (self.tw.canvas.width / 2))
+ primitive_dictionary['mousex']())
+ primitive_dictionary['mousey'] = self._prim_mouse_y
palette.add_block('mousey',
style='box-style',
label=_('mouse y'),
@@ -355,7 +357,7 @@ pressed'))
help_string=_('returns mouse y coordinate'))
self.tw.lc.def_prim('mousey', 0,
lambda self:
- (self.tw.canvas.height / 2) - self.tw.mouse_y)
+ primitive_dictionary['mousey']())
primitive_dictionary['kbinput'] = self._prim_kbinput
palette.add_block('kbinput',
@@ -367,6 +369,7 @@ stored in keyboard block)'))
self.tw.lc.def_prim('kbinput', 0,
lambda self: primitive_dictionary['kbinput']())
+ primitive_dictionary['keyboard'] = self._prim_keyboard
palette.add_block('keyboard',
style='box-style',
label=_('keyboard'),
@@ -375,32 +378,8 @@ stored in keyboard block)'))
logo_command='make "keyboard readchar',
help_string=_('holds results of query-keyboard \
block as ASCII'))
- self.tw.lc.def_prim('keyboard', 0, lambda self: self.tw.lc.keyboard)
-
- '''
- palette.add_block('keyboard_chr',
- style='box-style',
- label='chr(%s)' % (_('keyboard')),
- prim_name='keyboard_chr',
- value_block=True,
- logo_command='make "keyboard readchar',
- help_string=_('holds results of query-keyboard \
-block as character'))
- self.tw.lc.def_prim('keyboard_chr', 0,
- lambda self: chr(self.tw.lc.keyboard))
-
- primitive_dictionary['keyboardnum'] = self._prim_keyboard_num
- palette.add_block('keyboard_num',
- style='box-style',
- label='num(%s)' % (_('keyboard')),
- prim_name='keyboard_num',
- value_block=True,
- logo_command='make "keyboard readchar',
- help_string=_('holds results of query-keyboard \
-block as number'))
- self.tw.lc.def_prim('keyboard_num', 0,
- lambda self: primitive_dictionary['keyboardnum']())
- '''
+ self.tw.lc.def_prim('keyboard', 0,
+ lambda self: primitive_dictionary['keyboard']())
primitive_dictionary['readpixel'] = self._prim_readpixel
palette.add_block('readpixel',
@@ -1021,20 +1000,93 @@ Journal objects'))
""" Empty FILO """
self.tw.lc.heap = []
+ def _prim_keyboard(self):
+ """ Return last character typed """
+ return self.tw.lc.keyboard
+
def _prim_kbinput(self):
""" Query keyboard """
+ DICT = {
+ 'Left': 1,
+ 'KP_Left': 1,
+ 'Up': 2,
+ 'KP_Up': 2,
+ 'Right': 3,
+ 'KP_Right': 3,
+ 'Down': 4,
+ 'KP_Down': 4,
+ 'BackSpace': 8,
+ 'Tab': 9,
+ 'Return': 13,
+ 'Escape': 27,
+ 'space': 32,
+ ' ': 32,
+ 'exclam': 33,
+ 'quotedbl': 34,
+ 'numbersign': 35,
+ 'dollar': 36,
+ 'percent': 37,
+ 'ampersand': 38,
+ 'apostrophe': 39,
+ 'parenleft': 40,
+ 'parenright': 41,
+ 'asterisk': 42,
+ 'plus': 43,
+ 'comma': 44,
+ 'minus': 45,
+ 'period': 46,
+ 'slash': 47,
+ 'colon': 58,
+ 'semicolon': 59,
+ 'less': 60,
+ 'equal': 61,
+ 'greater': 62,
+ 'question': 63,
+ 'at': 64,
+ 'underscore': 95,
+ 'bracketleft': 91,
+ 'backslash': 92,
+ 'bracketright': 93,
+ 'asciicircum': 94,
+ 'grave': 96,
+ 'braceleft': 123,
+ 'bar': 124,
+ 'braceright': 125,
+ 'asciitilde': 126,
+ 'Delete': 127,
+ }
+ REVERSE_DICT = {
+ 1: _('left'),
+ 2: _('up'),
+ 3: _('right'),
+ 4: _('down'),
+ 8: _('backspace'),
+ 9: _('tab'),
+ # TRANS: enter is the name of the enter (or return) key
+ 13: _('enter'),
+ 27: 'esc',
+ # TRANS: space is the name of the space key
+ 32: _('space'),
+ 127: _('delete')
+ }
+
if len(self.tw.keypress) == 1:
self.tw.lc.keyboard = ord(self.tw.keypress[0])
+ elif self.tw.keypress in DICT:
+ self.tw.lc.keyboard = DICT[self.tw.keypress]
else:
- try:
- self.tw.lc.keyboard = {
- 'Escape': 27, 'space': 32, ' ': 32,
- 'Return': 13, 'KP_Up': 2, 'KP_Down': 4, 'KP_Left': 1,
- 'KP_Right': 3}[self.tw.keypress]
- except KeyError:
- self.tw.lc.keyboard = 0
+ self.tw.lc.keyboard = 0
if self.tw.lc.update_values:
- self.tw.lc.update_label_value('keyboard', self.tw.lc.keyboard)
+ if self.tw.keypress in DICT:
+ if DICT[self.tw.keypress] in REVERSE_DICT:
+ self.tw.lc.update_label_value(
+ 'keyboard', REVERSE_DICT[DICT[self.tw.keypress]])
+ else:
+ self.tw.lc.update_label_value('keyboard',
+ chr(DICT[self.tw.keypress]))
+ elif self.tw.lc.keyboard > 0:
+ self.tw.lc.update_label_value('keyboard',
+ chr(self.tw.lc.keyboard))
self.tw.keypress = ''
def _prim_list(self, blklist):
@@ -1339,6 +1391,20 @@ Journal objects'))
csd.write("\n</CsoundSynthesizer>")
csd.close()
+ def _prim_mouse_x(self):
+ """ Return mouse x coordinate """
+ mousex = int(self.tw.mouse_x - (self.tw.canvas.width / 2))
+ if self.tw.lc.update_values:
+ self.tw.lc.update_label_value('mousex', mousex)
+ return mousex
+
+ def _prim_mouse_y(self):
+ """ Return mouse y coordinate """
+ mousey = int((self.tw.canvas.height / 2) - self.tw.mouse_y)
+ if self.tw.lc.update_values:
+ self.tw.lc.update_label_value('mousey', mousey)
+ return mousey
+
def _prim_mouse_button(self):
""" Return 1 if mouse button is pressed """
if self.tw.mouse_flag == 1: