# Crossword Editor Panel Widgets
**Status:** Proposed

## Summary

The crossword editor has migrated to over to use libpanel. As a
result, we have collection of `PanelWidgets` to go in the frames
around the outside of the dock.

### Approach

We have a Panel Frames on the left, right, and bottom. The bottom one
is informational, while the left and right have controls.

Different Panel Widgets can affect the behavior of other, as can the
central dock widget. For example, `EditSymmetry` exports the current
selected symmetry of the puzzle, and other widgets can read from
it. Similarly, `EditClueDetails` exports a substring of a clue that
can be queried.

| **Widget**             | **Location**            | **Description**                 |
|------------------------|-------------------------|---------------------------------|
| EditWordList           | Grid Left               | Shows potential words that fit in the grid |
| EditClueList           | Clue Left               | Selects the list of answers to set a clue |
| EditSymmetry           | Grid Right              | Sets the symmetry of bars and blocks. **Exports Symmetry** |
| EditBars               | Grid Right & IPuzBarred | Sets barred lines between cells |
| _**EditCellType**_     | Grid Right              | Selects a cell type for the current cell (block, regular, empty, initial val) |
| _**EditShapes**_       | Grid Right              | Lets the user set a background shape for the current cell |
| EditClueDetails        | Clue Right              | Edits the details of the currently selected clue. **Exports clue substring** |
| _**EditStyleList**_    | Style Left              | Shows the list of current named styles |
| _**EditStyleDetails**_ | Style Right             | Edits the style of the current cell |
| _**EditGridInfo**_     | Grid Bottom             | Shows statistics about the current grid, such as distribution of clue lengths and letters. |
| _**EditAnagram**_      | Clue Bottom             | Shows anagrams of the selected clue or subclue |
| _**EditDict**_         | Clue Bottom             | Gives a definition of the selected clue or subclue |
| _**EditThesaurus**_    | Clue Bottom             | Gives a synonym of the selected clue or subclue |
| _**EditHint**_         | Clue Bottom             | Shows potential clue fragments for selected clue or subclue |


**NOTE:** _**Widgets**_ marked as bold/italic are proposed and not written

## Implementation issues

### Hiding Panel Frame

Currently, we swap the visible PanelWidgets depending on what mode
we're in. That makes the interface bounce around. We'll have to change
PanelWidget to avoid this.

### Setting the PuzzleStack etc
