def process_input(self, keys): """ This function will pass keyboard input and mouse events to self.widget. This function is called automatically from the run() method when there is input, but may also be called to simulate input from the user. keys -- list of input returned from self.screen.get_input() Returns True if any key was handled by a widget or the unhandled_input() method. >>> w = _refl("widget") >>> w.selectable_rval = True >>> scr = _refl("screen") >>> scr.get_cols_rows_rval = (10, 5) >>> ml = MainLoop(w, [], scr) >>> ml.process_input(['enter', ('mouse drag', 1, 14, 20)]) screen.get_cols_rows() widget.selectable() widget.keypress((10, 5), 'enter') widget.mouse_event((10, 5), 'mouse drag', 1, 14, 20, focus=True) True """ if not self.screen_size: self.screen_size = self.screen.get_cols_rows() something_handled = False for k in keys: if is_mouse_event(k): event, button, col, row = k if self._topmost_widget.mouse_event(self.screen_size, event, button, col, row, focus=True): k = None elif self._topmost_widget.selectable(): k = self._topmost_widget.keypress(self.screen_size, k) if k: if command_map[k] == 'redraw screen': self.screen.clear() something_handled = True else: something_handled |= bool(self.unhandled_input(k)) else: something_handled = True return something_handled
def process_input(self, keys): """ This function will pass keyboard input and mouse events to self.widget. This function is called automatically from the run() method when there is input, but may also be called to simulate input from the user. keys -- list of input returned from self.screen.get_input() Returns True if any key was handled by a widget or the unhandled_input() method. This return value is used by update to determine if it should redraw the screen. When calling this method yourself you will need to also call draw_screen() as well if you want the screen updated. >>> w = _refl("widget") >>> w.selectable_rval = True >>> scr = _refl("screen") >>> scr.get_cols_rows_rval = (10, 5) >>> ml = MainLoop(w, [], scr) >>> ml.process_input(['enter', ('mouse drag', 1, 14, 20)]) screen.get_cols_rows() widget.selectable() widget.keypress((10, 5), 'enter') widget.mouse_event((10, 5), 'mouse drag', 1, 14, 20, focus=True) True """ if not self.screen_size: self.screen_size = self.screen.get_cols_rows() something_handled = False for k in keys: if is_mouse_event(k): event, button, col, row = k if self.widget.mouse_event(self.screen_size, event, button, col, row, focus=True ): k = None elif self.widget.selectable(): k = self.widget.keypress(self.screen_size, k) if k: if command_map[k] == 'redraw screen': self.screen.clear() something_handled = True else: something_handled |= bool(self.unhandled_input(k)) else: something_handled = True return something_handled
def process_input(self, keys): """ This method will pass keyboard input and mouse events to :attr:`widget`. This method is called automatically from the :meth:`run` method when there is input, but may also be called to simulate input from the user. *keys* is a list of input returned from :attr:`screen`'s get_input() or get_input_nonblocking() methods. Returns ``True`` if any key was handled by a widget or the :meth:`unhandled_input` method. """ if not self.screen_size: self.screen_size = self.screen.get_cols_rows() something_handled = False for k in keys: if k == 'window resize': continue if is_mouse_event(k): event, button, col, row = k if hasattr(self._topmost_widget, "mouse_event"): if self._topmost_widget.mouse_event(self.screen_size, event, button, col, row, focus=True): k = None elif self._topmost_widget.selectable(): k = self._topmost_widget.keypress(self.screen_size, k) if k: if command_map[k] == REDRAW_SCREEN: self.screen.clear() something_handled = True else: something_handled |= bool(self.unhandled_input(k)) else: something_handled = True return something_handled
def process_input(self, keys): """ This method will pass keyboard input and mouse events to :attr:`widget`. This method is called automatically from the :meth:`run` method when there is input, but may also be called to simulate input from the user. *keys* is a list of input returned from :attr:`screen`'s get_input() or get_input_nonblocking() methods. Returns ``True`` if any key was handled by a widget or the :meth:`unhandled_input` method. """ if not self.screen_size: self.screen_size = self.screen.get_cols_rows() something_handled = False for k in keys: if k == 'window resize': continue if is_mouse_event(k): event, button, col, row = k if self._topmost_widget.mouse_event(self.screen_size, event, button, col, row, focus=True ): k = None elif self._topmost_widget.selectable(): k = self._topmost_widget.keypress(self.screen_size, k) if k: if command_map[k] == REDRAW_SCREEN: self.screen.clear() something_handled = True else: something_handled |= bool(self.unhandled_input(k)) else: something_handled = True return something_handled