wxMaxima
Loading...
Searching...
No Matches
Data Structures | Functions
OutputNavigation.h File Reference

The output of a cell as a tree the keyboard can walk through (GH #2382). More...

#include "cells/MatrixBlock.h"
#include <vector>
Include dependency graph for OutputNavigation.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  OutputNavigation::Item
 One node of the tree: a run of sibling cells, or one entry of a matrix. More...
 
struct  OutputNavigation::Location
 Where an item sits in the tree. More...
 
struct  OutputNavigation::RunLocation
 Where a run of several siblings sits: the level holding both of its ends. More...
 

Functions

Item OutputNavigation::Run (Cell *first, Cell *last)
 The item a run of cells forms.
 
Item OutputNavigation::Entry (MatrCell *matrix, MatrixEntry entry)
 The item one entry of a matrix forms.
 
std::vector< Item > OutputNavigation::Results (const GroupCell *group)
 The top level: the results of this cell's output, as items.
 
std::vector< Item > OutputNavigation::Children (const Item &item)
 The parts of an item, in reading order; empty if it has none.
 
Location OutputNavigation::Locate (const GroupCell *group, const Item &item)
 
RunLocation OutputNavigation::LocateRun (const GroupCell *group, const Cell *first, const Cell *last)
 

Detailed Description

The output of a cell as a tree the keyboard can walk through (GH #2382).

The worksheet's output cursor is its ordinary selection. This file only answers the structural questions the arrow keys need: what the parts of a selected expression are (Enter goes into them), which part it is itself a part of (Escape goes back out) and which parts sit next to it (Left and Right). It knows nothing about key events or the worksheet, so it can be tested on parsed output alone.

The tree follows the expression's structure, Cell::GetInnerCell(), not the draw list: whether a wide expression happens to be broken into lines must not change what a key press does. Its levels are:

Anything that isn't drawn – hidden cells, empty ones, elided matrix entries – is left out.

Function Documentation

◆ Children()

std::vector< Item > OutputNavigation::Children ( const Item &  item)

The parts of an item, in reading order; empty if it has none.

What Enter goes into.