mirror of
https://github.com/storytold/gridcraft.git
synced 2026-11-09 03:49:54 -06:00
The Insert tab gains Button, Slider and Spin Button beside Cell Controls › Checkbox, which is unchanged. Each arms placement: a drag on the grid draws the control at that size (a tall drag makes a vertical slider), a click places it at its default size, and Escape disarms. Key tips (N B U, N S L, N S B) place one at the active cell. A new button opens Assign Action, as Excel opens Assign Macro. form_controls.rs draws the controls in the sheet tokens, so they look the same in both themes: buttons with hover and pressed states, sliders with a track, a filled part and a thumb (and the value beside the thumb while it is dragged), spin buttons with two arrows, stacked or side by side. A plain click works a control: dragging the thumb, clicking the track (a page), clicking or holding an arrow (it repeats after 0.4 s), pressing a button (it runs on release over it). A drag or a hold is one undo step. The control last worked takes the arrows, Page Up and Page Down, Home and End, and Space or Enter for a button. Ctrl or Cmd+click or a right-click selects a control to move or resize it; a right-click opens the object menu, which for a control adds Edit Text and Assign Action (buttons) and Format Control before Delete. Double-clicking a selected control opens its editor. On a right-to-left sheet a control moves as a whole and works where it is drawn. Assign Action runs a macro (from the list or typed, on the selection or a fixed range, with an optional output cell) or a command (searched among those a macro may run, with JSON parameters). Format Control edits the value, limits, incremental and page change, cell link, orientation, name and the locked and print flags, checking the same rules as the engine. A button whose action needs approval, or whose macro would write over data, asks in a prompt whose buttons press it again with the answer. New theme tokens (thumb, hover, pressed, fill, focus ring) are in the contrast test; Button, Slider and Spin icons are drawn in code; the new labels are translated in every interface language. The catalog gains Developer › Controls (280 / 296).
412 lines
15 KiB
Markdown
412 lines
15 KiB
Markdown
# Excel parity checklist
|
|
|
|
<!-- Generated by `cargo xtask parity` from crates/engine/src/catalog.rs. Don't edit by hand. -->
|
|
|
|
Each entry is an Excel ribbon or menu command (feature names only). It counts as implemented when GridCraft registers a command with the same id. This measures breadth only; the overall assessment (depth, fidelity, effort) is in [target-app-parity.md](target-app-parity.md).
|
|
|
|
**Overall: 280 / 296 commands implemented (94.6%).**
|
|
|
|
| Tab | Implemented | Total | Parity |
|
|
|---|---|---|---|
|
|
| File | 11 | 11 | 100% |
|
|
| Home | 94 | 94 | 100% |
|
|
| Insert | 17 | 25 | 68% |
|
|
| Draw | 4 | 4 | 100% |
|
|
| Page Layout | 23 | 23 | 100% |
|
|
| Formulas | 23 | 23 | 100% |
|
|
| Data | 23 | 28 | 82% |
|
|
| Review | 15 | 18 | 83% |
|
|
| View | 21 | 21 | 100% |
|
|
| Automate | 4 | 4 | 100% |
|
|
| Developer | 4 | 4 | 100% |
|
|
| Table Design | 13 | 13 | 100% |
|
|
| Chart Design | 8 | 8 | 100% |
|
|
| Format | 3 | 3 | 100% |
|
|
| PivotTable Analyze | 13 | 13 | 100% |
|
|
| PivotTable Design | 4 | 4 | 100% |
|
|
|
|
## File (11 / 11, 100%)
|
|
|
|
Implemented:
|
|
|
|
- `file.new` New (File)
|
|
- `file.open` Open (File)
|
|
- `file.save` Save (File)
|
|
- `file.saveAs` Save As (File)
|
|
- `file.close` Close (File)
|
|
- `file.print` Print (File)
|
|
- `file.exportPdf` Export to PDF (Export)
|
|
- `file.exportCsv` CSV (Export)
|
|
- `file.exportHtml` Web Page (Export)
|
|
- `file.properties` Properties (Info)
|
|
- `file.options` Options (Options)
|
|
|
|
## Home (94 / 94, 100%)
|
|
|
|
Implemented:
|
|
|
|
- `edit.paste` Paste (Clipboard)
|
|
- `edit.pasteSpecial` Paste Special (Clipboard)
|
|
- `edit.cut` Cut (Clipboard)
|
|
- `edit.copy` Copy (Clipboard)
|
|
- `edit.formatPainter` Format Painter (Clipboard)
|
|
- `home.fontName` Font (Font)
|
|
- `home.fontSize` Font Size (Font)
|
|
- `home.increaseFontSize` Increase Font Size (Font)
|
|
- `home.decreaseFontSize` Decrease Font Size (Font)
|
|
- `home.bold` Bold (Font)
|
|
- `home.italic` Italic (Font)
|
|
- `home.underline` Underline (Font)
|
|
- `home.doubleUnderline` Double Underline (Font)
|
|
- `home.strikethrough` Strikethrough (Font)
|
|
- `home.superscript` Superscript (Font)
|
|
- `home.subscript` Subscript (Font)
|
|
- `home.borders` Borders (Font)
|
|
- `home.drawBorder` Draw Border (Font)
|
|
- `home.fillColor` Fill Color (Font)
|
|
- `home.fontColor` Font Color (Font)
|
|
- `home.alignTop` Top Align (Alignment)
|
|
- `home.alignMiddle` Middle Align (Alignment)
|
|
- `home.alignBottom` Bottom Align (Alignment)
|
|
- `home.orientation` Orientation (Alignment)
|
|
- `home.alignLeft` Align Left (Alignment)
|
|
- `home.alignCenter` Center (Alignment)
|
|
- `home.alignRight` Align Right (Alignment)
|
|
- `home.decreaseIndent` Decrease Indent (Alignment)
|
|
- `home.increaseIndent` Increase Indent (Alignment)
|
|
- `home.wrapText` Wrap Text (Alignment)
|
|
- `home.mergeCenter` Merge & Center (Alignment)
|
|
- `home.mergeAcross` Merge Across (Alignment)
|
|
- `home.mergeCells` Merge Cells (Alignment)
|
|
- `home.unmergeCells` Unmerge Cells (Alignment)
|
|
- `home.numberFormat` Number Format (Number)
|
|
- `home.accounting` Accounting Number Format (Number)
|
|
- `home.percent` Percent Style (Number)
|
|
- `home.comma` Comma Style (Number)
|
|
- `home.increaseDecimal` Increase Decimal (Number)
|
|
- `home.decreaseDecimal` Decrease Decimal (Number)
|
|
- `home.conditionalFormat` Conditional Formatting (Styles)
|
|
- `home.clearRules` Clear Rules (Styles)
|
|
- `home.manageRules` Manage Rules (Styles)
|
|
- `home.formatAsTable` Format as Table (Styles)
|
|
- `home.cellStyle` Cell Styles (Styles)
|
|
- `home.newCellStyle` New Cell Style (Styles)
|
|
- `home.insertCells` Insert Cells (Cells)
|
|
- `home.insertRows` Insert Sheet Rows (Cells)
|
|
- `home.insertColumns` Insert Sheet Columns (Cells)
|
|
- `home.insertSheet` Insert Sheet (Cells)
|
|
- `home.deleteCells` Delete Cells (Cells)
|
|
- `home.deleteRows` Delete Sheet Rows (Cells)
|
|
- `home.deleteColumns` Delete Sheet Columns (Cells)
|
|
- `home.deleteSheet` Delete Sheet (Cells)
|
|
- `home.rowHeight` Row Height (Cells)
|
|
- `home.autofitRowHeight` AutoFit Row Height (Cells)
|
|
- `home.columnWidth` Column Width (Cells)
|
|
- `home.autofitColumnWidth` AutoFit Column Width (Cells)
|
|
- `home.defaultWidth` Default Width (Cells)
|
|
- `home.hideRows` Hide Rows (Cells)
|
|
- `home.hideColumns` Hide Columns (Cells)
|
|
- `home.unhideRows` Unhide Rows (Cells)
|
|
- `home.unhideColumns` Unhide Columns (Cells)
|
|
- `sheet.hide` Hide Sheet (Cells)
|
|
- `sheet.unhide` Unhide Sheet (Cells)
|
|
- `sheet.rename` Rename Sheet (Cells)
|
|
- `sheet.move` Move or Copy Sheet (Cells)
|
|
- `sheet.tabColor` Tab Color (Cells)
|
|
- `review.protectSheet` Protect Sheet (Cells)
|
|
- `home.lockCell` Lock Cell (Cells)
|
|
- `home.formatCells` Format Cells (Cells)
|
|
- `formulas.autoSum` AutoSum (Editing)
|
|
- `edit.fillDown` Fill Down (Editing)
|
|
- `edit.fillRight` Fill Right (Editing)
|
|
- `edit.fillUp` Fill Up (Editing)
|
|
- `edit.fillLeft` Fill Left (Editing)
|
|
- `edit.fillSeries` Series (Editing)
|
|
- `edit.flashFill` Flash Fill (Editing)
|
|
- `edit.clearAll` Clear All (Editing)
|
|
- `edit.clearFormats` Clear Formats (Editing)
|
|
- `edit.clearContents` Clear Contents (Editing)
|
|
- `edit.clearComments` Clear Comments (Editing)
|
|
- `edit.clearHyperlinks` Clear Hyperlinks (Editing)
|
|
- `data.sortAscending` Sort A to Z (Editing)
|
|
- `data.sortDescending` Sort Z to A (Editing)
|
|
- `data.sort` Custom Sort (Editing)
|
|
- `data.filter` Filter (Editing)
|
|
- `data.clearFilter` Clear Filter (Editing)
|
|
- `data.reapply` Reapply (Editing)
|
|
- `edit.find` Find (Editing)
|
|
- `edit.replace` Replace (Editing)
|
|
- `edit.goTo` Go To (Editing)
|
|
- `edit.goToSpecial` Go To Special (Editing)
|
|
- `home.addIns` Add-ins (Add-ins)
|
|
|
|
## Insert (17 / 25, 68%)
|
|
|
|
Implemented:
|
|
|
|
- `insert.pivotTable` PivotTable (Tables)
|
|
- `insert.recommendedPivotTables` Recommended PivotTables (Tables)
|
|
- `insert.table` Table (Tables)
|
|
- `insert.picture` Pictures (Illustrations)
|
|
- `insert.shape` Shapes (Illustrations)
|
|
- `insert.icons` Icons (Illustrations)
|
|
- `insert.recommendedCharts` Recommended Charts (Charts)
|
|
- `insert.chart` Charts (Charts)
|
|
- `insert.pivotChart` PivotChart (Charts)
|
|
- `insert.sparkline` Sparklines (Sparklines)
|
|
- `insert.slicer` Slicer (Filters)
|
|
- `insert.link` Link (Links)
|
|
- `review.newComment` Comment (Comments)
|
|
- `insert.textBox` Text Box (Text)
|
|
- `pageLayout.headerFooter` Header & Footer (Text)
|
|
- `insert.symbol` Symbol (Symbols)
|
|
- `insert.checkbox` Checkbox (Cell Controls)
|
|
|
|
Missing:
|
|
|
|
- `insert.smartArt` SmartArt (Illustrations)
|
|
- `insert.screenshot` Screenshot (Illustrations)
|
|
- `insert.map` Maps (Charts)
|
|
- `insert.timeline` Timeline (Filters)
|
|
- `insert.wordArt` WordArt (Text)
|
|
- `insert.signatureLine` Signature Line (Text)
|
|
- `insert.object` Object (Text)
|
|
- `insert.equation` Equation (Symbols)
|
|
|
|
## Draw (4 / 4, 100%)
|
|
|
|
Implemented:
|
|
|
|
- `draw.pen` Pen (Tools)
|
|
- `draw.eraser` Eraser (Tools)
|
|
- `draw.lasso` Lasso Select (Tools)
|
|
- `draw.inkToShape` Ink to Shape (Convert)
|
|
|
|
## Page Layout (23 / 23, 100%)
|
|
|
|
Implemented:
|
|
|
|
- `pageLayout.theme` Themes (Themes)
|
|
- `pageLayout.themeColors` Colors (Themes)
|
|
- `pageLayout.themeFonts` Fonts (Themes)
|
|
- `pageLayout.themeEffects` Effects (Themes)
|
|
- `pageLayout.margins` Margins (Page Setup)
|
|
- `pageLayout.orientation` Orientation (Page Setup)
|
|
- `pageLayout.size` Size (Page Setup)
|
|
- `pageLayout.printArea` Print Area (Page Setup)
|
|
- `pageLayout.breaks` Breaks (Page Setup)
|
|
- `pageLayout.background` Background (Page Setup)
|
|
- `pageLayout.printTitles` Print Titles (Page Setup)
|
|
- `pageLayout.pageSetup` Page Setup (Page Setup)
|
|
- `pageLayout.scaleToFit` Scale to Fit (Scale to Fit)
|
|
- `view.gridlines` View Gridlines (Sheet Options)
|
|
- `pageLayout.printGridlines` Print Gridlines (Sheet Options)
|
|
- `view.headings` View Headings (Sheet Options)
|
|
- `pageLayout.printHeadings` Print Headings (Sheet Options)
|
|
- `arrange.bringForward` Bring Forward (Arrange)
|
|
- `arrange.sendBackward` Send Backward (Arrange)
|
|
- `arrange.selectionPane` Selection Pane (Arrange)
|
|
- `arrange.align` Align (Arrange)
|
|
- `arrange.group` Group (Arrange)
|
|
- `arrange.rotate` Rotate (Arrange)
|
|
|
|
## Formulas (23 / 23, 100%)
|
|
|
|
Implemented:
|
|
|
|
- `formulas.insertFunction` Insert Function (Function Library)
|
|
- `formulas.recentlyUsed` Recently Used (Function Library)
|
|
- `formulas.financial` Financial (Function Library)
|
|
- `formulas.logical` Logical (Function Library)
|
|
- `formulas.text` Text (Function Library)
|
|
- `formulas.dateTime` Date & Time (Function Library)
|
|
- `formulas.lookupReference` Lookup & Reference (Function Library)
|
|
- `formulas.mathTrig` Math & Trig (Function Library)
|
|
- `formulas.moreFunctions` More Functions (Function Library)
|
|
- `formulas.nameManager` Name Manager (Defined Names)
|
|
- `formulas.defineName` Define Name (Defined Names)
|
|
- `formulas.useInFormula` Use in Formula (Defined Names)
|
|
- `formulas.createFromSelection` Create from Selection (Defined Names)
|
|
- `formulas.tracePrecedents` Trace Precedents (Formula Auditing)
|
|
- `formulas.traceDependents` Trace Dependents (Formula Auditing)
|
|
- `formulas.removeArrows` Remove Arrows (Formula Auditing)
|
|
- `formulas.showFormulas` Show Formulas (Formula Auditing)
|
|
- `formulas.errorChecking` Error Checking (Formula Auditing)
|
|
- `formulas.evaluateFormula` Evaluate Formula (Formula Auditing)
|
|
- `formulas.watchWindow` Watch Window (Formula Auditing)
|
|
- `formulas.calculationOptions` Calculation Options (Calculation)
|
|
- `formulas.calculateNow` Calculate Now (Calculation)
|
|
- `formulas.calculateSheet` Calculate Sheet (Calculation)
|
|
|
|
## Data (23 / 28, 82%)
|
|
|
|
Implemented:
|
|
|
|
- `data.getData` Get Data (Get & Transform Data)
|
|
- `data.fromTextCsv` From Text/CSV (Get & Transform Data)
|
|
- `data.fromTableRange` From Table/Range (Get & Transform Data)
|
|
- `data.refreshAll` Refresh All (Queries & Connections)
|
|
- `data.queriesConnections` Queries & Connections (Queries & Connections)
|
|
- `data.advancedFilter` Advanced (Sort & Filter)
|
|
- `data.textToColumns` Text to Columns (Data Tools)
|
|
- `data.flashFill` Flash Fill (Data Tools)
|
|
- `data.removeDuplicates` Remove Duplicates (Data Tools)
|
|
- `data.validation` Data Validation (Data Tools)
|
|
- `data.circleInvalid` Circle Invalid Data (Data Tools)
|
|
- `data.consolidate` Consolidate (Data Tools)
|
|
- `data.scenarioManager` Scenario Manager (Forecast)
|
|
- `data.goalSeek` Goal Seek (Forecast)
|
|
- `data.dataTable` Data Table (Forecast)
|
|
- `data.forecastSheet` Forecast Sheet (Forecast)
|
|
- `data.group` Group (Outline)
|
|
- `data.ungroup` Ungroup (Outline)
|
|
- `data.subtotal` Subtotal (Outline)
|
|
- `data.showDetail` Show Detail (Outline)
|
|
- `data.hideDetail` Hide Detail (Outline)
|
|
- `data.solver` Solver (Analysis)
|
|
- `data.analysisToolPak` Data Analysis (Analysis)
|
|
|
|
Missing:
|
|
|
|
- `data.fromWeb` From Web (Get & Transform Data)
|
|
- `data.stocks` Stocks (Data Types)
|
|
- `data.geography` Geography (Data Types)
|
|
- `data.relationships` Relationships (Data Tools)
|
|
- `data.analyzeData` Analyze Data (Analysis)
|
|
|
|
## Review (15 / 18, 83%)
|
|
|
|
Implemented:
|
|
|
|
- `review.spelling` Spelling (Proofing)
|
|
- `review.thesaurus` Thesaurus (Proofing)
|
|
- `review.workbookStatistics` Workbook Statistics (Proofing)
|
|
- `review.checkAccessibility` Check Accessibility (Accessibility)
|
|
- `review.deleteComment` Delete Comment (Comments)
|
|
- `review.previousComment` Previous Comment (Comments)
|
|
- `review.nextComment` Next Comment (Comments)
|
|
- `review.showComments` Show Comments (Comments)
|
|
- `review.newNote` New Note (Notes)
|
|
- `review.showNote` Show/Hide Note (Notes)
|
|
- `review.showAllNotes` Show All Notes (Notes)
|
|
- `review.convertToComments` Convert to Comments (Notes)
|
|
- `review.unprotectSheet` Unprotect Sheet (Protect)
|
|
- `review.protectWorkbook` Protect Workbook (Protect)
|
|
- `review.allowEditRanges` Allow Edit Ranges (Protect)
|
|
|
|
Missing:
|
|
|
|
- `review.smartLookup` Smart Lookup (Insights)
|
|
- `review.translate` Translate (Language)
|
|
- `review.showChanges` Show Changes (Changes)
|
|
|
|
## View (21 / 21, 100%)
|
|
|
|
Implemented:
|
|
|
|
- `view.normal` Normal (Workbook Views)
|
|
- `view.pageBreakPreview` Page Break Preview (Workbook Views)
|
|
- `view.pageLayout` Page Layout (Workbook Views)
|
|
- `view.customViews` Custom Views (Workbook Views)
|
|
- `view.ruler` Ruler (Show)
|
|
- `view.formulaBar` Formula Bar (Show)
|
|
- `view.zoom` Zoom (Zoom)
|
|
- `view.zoom100` 100% (Zoom)
|
|
- `view.zoomToSelection` Zoom to Selection (Zoom)
|
|
- `view.newWindow` New Window (Window)
|
|
- `view.arrangeAll` Arrange All (Window)
|
|
- `view.freezePanes` Freeze Panes (Window)
|
|
- `view.freezeTopRow` Freeze Top Row (Window)
|
|
- `view.freezeFirstColumn` Freeze First Column (Window)
|
|
- `view.unfreezePanes` Unfreeze Panes (Window)
|
|
- `view.split` Split (Window)
|
|
- `view.hideWindow` Hide (Window)
|
|
- `view.unhideWindow` Unhide (Window)
|
|
- `view.switchWindows` Switch Windows (Window)
|
|
- `view.macros` Macros (Macros)
|
|
- `macro.record` Record Macro (Macros)
|
|
|
|
## Automate (4 / 4, 100%)
|
|
|
|
Implemented:
|
|
|
|
- `automate.newScript` New Script (Scripting Tools)
|
|
- `automate.allScripts` All Scripts (Scripting Tools)
|
|
- `automate.recordActions` Record Actions (Scripting Tools)
|
|
- `automate.trustScripts` Trust Scripts (Scripting Tools)
|
|
|
|
## Developer (4 / 4, 100%)
|
|
|
|
Implemented:
|
|
|
|
- `insert.button` Button (Form Control) (Controls)
|
|
- `insert.spinButton` Spin Button (Form Control) (Controls)
|
|
- `insert.slider` Scroll Bar (Form Control) (Controls)
|
|
- `control.format` Properties (Controls)
|
|
|
|
## Table Design (13 / 13, 100%)
|
|
|
|
Implemented:
|
|
|
|
- `table.rename` Table Name (Properties)
|
|
- `table.resize` Resize Table (Properties)
|
|
- `table.summarizePivot` Summarize with PivotTable (Tools)
|
|
- `table.removeDuplicates` Remove Duplicates (Tools)
|
|
- `table.convertToRange` Convert to Range (Tools)
|
|
- `table.insertSlicer` Insert Slicer (Tools)
|
|
- `table.headerRow` Header Row (Table Style Options)
|
|
- `table.totalRow` Total Row (Table Style Options)
|
|
- `table.bandedRows` Banded Rows (Table Style Options)
|
|
- `table.firstColumn` First Column (Table Style Options)
|
|
- `table.lastColumn` Last Column (Table Style Options)
|
|
- `table.bandedColumns` Banded Columns (Table Style Options)
|
|
- `table.style` Table Styles (Table Styles)
|
|
|
|
## Chart Design (8 / 8, 100%)
|
|
|
|
Implemented:
|
|
|
|
- `chart.addElement` Add Chart Element (Chart Layouts)
|
|
- `chart.quickLayout` Quick Layout (Chart Layouts)
|
|
- `chart.changeColors` Change Colors (Chart Styles)
|
|
- `chart.set` Chart Styles (Chart Styles)
|
|
- `chart.switchRowColumn` Switch Row/Column (Data)
|
|
- `chart.selectData` Select Data (Data)
|
|
- `chart.changeType` Change Chart Type (Type)
|
|
- `chart.move` Move Chart (Location)
|
|
|
|
## Format (3 / 3, 100%)
|
|
|
|
Implemented:
|
|
|
|
- `chart.formatSelection` Format Selection (Current Selection)
|
|
- `chart.shapeFill` Shape Fill (Shape Styles)
|
|
- `chart.shapeOutline` Shape Outline (Shape Styles)
|
|
|
|
## PivotTable Analyze (13 / 13, 100%)
|
|
|
|
Implemented:
|
|
|
|
- `pivot.fieldList` Field List (Show)
|
|
- `pivot.refresh` Refresh (Data)
|
|
- `pivot.changeSource` Change Data Source (Data)
|
|
- `pivot.calculatedField` Fields, Items & Sets (Calculations)
|
|
- `pivot.addField` Add Field (Fields)
|
|
- `pivot.removeField` Remove Field (Fields)
|
|
- `pivot.moveField` Move Field (Fields)
|
|
- `pivot.valueSettings` Value Field Settings (Active Field)
|
|
- `pivot.filter` Filter (Filter)
|
|
- `pivot.sort` Sort (Sort)
|
|
- `pivot.group` Group Field (Group)
|
|
- `pivot.collapse` Collapse Field (Active Field)
|
|
- `pivot.delete` Clear All (Actions)
|
|
|
|
## PivotTable Design (4 / 4, 100%)
|
|
|
|
Implemented:
|
|
|
|
- `pivot.grandTotals` Grand Totals (Layout)
|
|
- `pivot.subtotals` Subtotals (Layout)
|
|
- `pivot.reportLayout` Report Layout (Layout)
|
|
- `pivot.style` PivotTable Styles (PivotTable Styles)
|