Introducing table sayall commands (#13670)
Fixes #13469
Summary of the issue:
Feature request: add table sayAll commands to read rows and columns.
Description of how this pull request fixes the issue:
Adds 4 commands:
- SayAll from current cell horizontally to the right.
- SayAll from current cell vertically down.
- Speak current column from top to bottom without moving caret.
- speak current row from left to right without moving caret.
Additionally:
Refactored class _TextReader in sayAll.py:
Refactored out a few methods for different types of cursor and made them abstract.
Added implementations for review and caret cursor types and also for new table cursor type.
Refactored class DocumentWithTableNavigation:
Refactored cell moving logic as method _tableFindNewCell, which is used in both simple table commands and sayAll commands.
Added _TableCell class to replace 5-element tuples that contain information about table cells.