def set_cursor(self, new=False, reset_view=True): focus_widget = None if reset_view or not self.widget.has_focus(): if reset_view: for notebook in self.notebooks: notebook.set_current_page(0) if self.attributes.get('cursor') in self.widgets: focus_widget = find_focusable_child(self.widgets[ self.attributes['cursor']][0].widget) else: child = find_focusable_child(self._viewport) if child: child.grab_focus() record = self.screen.current_record if record: invalid_widgets = [] for name in record.invalid_fields: widgets = self.widgets.get(name, []) for widget in widgets: invalid_widget = find_focusable_child(widget.widget) if invalid_widget: invalid_widgets.append(invalid_widget) if invalid_widgets: focus_widget = find_first_focus_widget( self._viewport, invalid_widgets) if focus_widget: for notebook in self.notebooks: for i in range(notebook.get_n_pages()): child = notebook.get_nth_page(i) if focus_widget.is_ancestor(child): notebook.set_current_page(i) focus_widget.grab_focus()
def set_cursor(self, new=False, reset_view=True): focus_widget = None if reset_view or not self.widget.has_focus(): if reset_view: for notebook in self.notebooks: notebook.set_current_page(0) if self.attributes.get('cursor') in self.widgets: focus_widget = find_focusable_child( self.widgets[self.attributes['cursor']][0].widget) else: child = find_focusable_child(self.viewport) if child: child.grab_focus() record = self.record if record: invalid_widgets = [] for name in record.invalid_fields: widgets = self.widgets.get(name, []) for widget in widgets: invalid_widget = find_focusable_child(widget.widget) if invalid_widget: invalid_widgets.append(invalid_widget) if invalid_widgets: focus_widget = find_first_focus_widget(self.viewport, invalid_widgets) if focus_widget: for notebook in self.notebooks: for i in range(notebook.get_n_pages()): child = notebook.get_nth_page(i) if focus_widget.is_ancestor(child): notebook.set_current_page(i) for group in self.expandables: if focus_widget.is_ancestor(group): group.set_expanded(True) focus_widget.grab_focus()