From a5575408bfa527d0881674fbbdaa1e628b84e2c0 Mon Sep 17 00:00:00 2001 From: Walter Bender Date: Mon, 14 Oct 2013 18:48:10 +0000 Subject: sync with 192 --- (limited to 'plugins/turtle_blocks_extras/turtle_blocks_extras.py') 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") 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: -- cgit v0.9.1