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