예제 #1
0
 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()
예제 #2
0
 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()