UI work to do around the Rubberduck Editor main window, at a high level. - [x] Initializes LSP server (client: addin process) - [x] Initializes VBA LSP client - [ ] Initializes JSON LSP client - [x] Accepts workspace root and client process id as command-line arguments - [x] Opens workspace provided by command-line args on startup - [x] Can load settings from file - [ ] Can merge with defaults - [ ] Selectable/dynamic theming (JSON) - [ ] Light/blue theme (ref.Visual Studio) - [ ] Looks awesome - [ ] Dark theme (ref.Visual Studio) - [ ] Looks awesome - [ ] Dark/blue theme (ref.VSC/"Abyss") - [ ] Looks awesome - [ ] Theme settings - [ ] ThemeColorSetting record and UI (color picker?) - [ ] Can render a preview - [ ] Accents (4) - [ ] Gradients (4) (auto?) - [ ] Syntax highlighting palette - [ ] Client-side regex-based simple rules - [ ] Semantic highlighting from LSP server - [ ] Looks awesome - [x] Docking panels (side, bottom) - [x] Can be hidden/collapsed - [x] Can be expanded - [x] Can be pinned to remain expanded - [ ] Option to expand on hover (vs only on click) - [ ] Looks awesome - [x] Tooltabs - [x] Can be pinned from frame header - [x] Can be closed from frame header - [ ] Can be dragged from frame header - [ ] Tooltab header styling respects theme - [x] Shows title in frame header - [x] Shows settings command in frame header - [x] Frame header context menu - [ ] Can undock tooltab - [x] Can pin tooltab - [x] Can close tooltab - [x] Document/editor tabs - [ ] Can be pinned (from tab header) - [x] Can be closed (from tab header) - [ ] Tab header styling respects theme - [x] Tab header context menu - [ ] Can undock tab - [ ] Can pin tab - [x] Can close tab - [ ] Can close all tabs but this one - [ ] Can close all unpinned tabs - [x] Status bar UI - [x] Shows server connection status - [x] Icon/button shows the server trace toolwindow - [x] Shows progress indicator for server-side (LSP) progress reports - [x] Can cancel cancellable server operations - [x] Document status template - [x] Document name - [x] Document type - [ ] IsModified indicator - [x] Number of lines - [ ] Number of characters (bytes?) - [x] L1C1 caret location / current selection - [ ] Source file status template - [ ] Shows module/component type - [ ] Shows number of diagnostics in module - [ ] Button shows diagnostics toolwindow - [x] Menu bar UI - [x] File menu commands - [ ] Synchronize workspace - [ ] Edit menu commands - [ ] View menu commands - [ ] Project menu commands - [ ] Debug menu commands - [ ] Test menu commands - [ ] Analyze menu commands - [ ] Tools menu commands - [ ] Windows menu commands - [ ] Help menu commands - [ ] Looks awesome - [x] Floating/undocked document windows - [x] Can be re-docked to main window's document tab host - [x] Can accept/dock other document tabs - [x] Has a status bar - [ ] Looks awesome - [x] Floating/undocked toolwindows - [x] Can be re-docked on either side or bottom tooltab areas - [ ] Toolwindows have a horizontal template when docked at the bottom - [x] Can accept/dock other document tabs - [ ] Looks awesome - [x] Base toolwindow UI ("ThunderFrame") - [x] Can bind close, pin, and show [that tool's] settings commands - [x] Shows title - [x] Can bind accept/cancel commands - [x] Looks awesome - [x] Document tab templates - [x] Text document template - [x] Markdown document template - [x] Shows a preview pane - [x] JSON document template - [x] Source file document template - [ ] Looks awesome - [x] MessageBox dialog +service - [x] ShowMessage/ShowMessageRequest LSP handlers - [x] Can render markdown - [x] Can be ignored ("do not show again") - [x] Can be expanded to show additional markdown content - [ ] Looks awesome - [x] New Project dialog - [x] Shows VBA projects from VBE add-in - [x] Hides projects drop-down when running without the VBE add-in - [x] Can create a project from a template - [x] Creates workspace folders - [x] Opens the created project - [ ] Looks awesome - [x] Workspace Explorer toolwindow - [x] Represents workspaces in a tree view - [x] ...without glitchy nodes that shouldn't be there - [x] Toolbar shortcuts to create new project/workspace, open existing - [x] Open file command (LSP) - [ ] Bind ENTER and double-click - [ ] Bind drop into editor document tab host - [ ] Folder icons change on expand - [x] Can be shown (empty) on startup - [ ] Can rename files/folders - [ ] Bind to F2 and selected-click - [ ] Sends LSP notifications - [ ] Can create files/folders - [ ] Sends LSP notifications - [ ] Can delete files/folders - [ ] Bind to DELETE key - [ ] Sends LSP notifications - [ ] Can move (drag/drop) files/folders - [ ] Sends LSP notifications - [ ] Can drop files/folders from Windows Explorer (copies them to workspace) - [ ] Looks awesome - [ ] Code (Project?) Explorer toolwindow - [ ] Shows project folders and source files in a tree view - [ ] Can show all opened projects (like workspaces for workspace explorer) - [ ] Can show module members - [ ] Can show/hide signatures - [ ] Can search/filter nodes - [ ] Can add/remove modules (LSP) - [ ] Can add/remove forms (LSP) - [ ] Can add/remove folders (LSP) - [ ] Can open documents (LSP) - [ ] Looks awesome - [x] Settings dialog - [x] Boolean settings template - [x] String setting template - [x] Numeric setting template - [x] TimeSpan setting template - [x] Enum setting template (per enum) - [x] List setting template - [x] Can remove items from UI - [ ] Merge and serialize settings, defaults - [x] Saves to disk/apply on change - [ ] Option to save/apply on close - [ ] Can drag-resize sections - [ ] Can drag-move/reorder sections - [ ] Can save/load section layout - [x] Can show+focus specific settings - [x] Looks awesome - [x] Language Server toolwindow - [x] Can be paused - [x] Can select verbosity - [x] Command to open log file - [ ] Shows LSP LogTrace messages - [ ] Autoscrolls to bottom - [ ] Looks awesome - [ ] Update Server Toolwindow - [ ] Can be stopped, restarted - [ ] Can select verbosity - [ ] Command to open log file - [ ] Shows update server stdout - [ ] Autoscrolls to bottom - [ ] Can check for updates - [ ] Can schedule to update on close - [ ] Can skip an update (that would be a "list"-type setting, already exists) - [ ] Can browse tags, release notes - [ ] Can rollback an update, install any previous release - [ ] Looks awesome - [ ] About dialog - [ ] Shows version info for RD Editor - [ ] Shows version info for all servers - [ ] Lists contributors - [ ] Lists libraries - [ ] Credits artworks - [ ] Links to website, repo, org, shop/ko-fi - [ ] Looks awesome
UI work to do around the Rubberduck Editor main window, at a high level.
Initializes LSP server (client: addin process)
Initializes VBA LSP client
Initializes JSON LSP client
Accepts workspace root and client process id as command-line arguments
Can load settings from file
Selectable/dynamic theming (JSON)
Docking panels (side, bottom)
Tooltabs
Document/editor tabs
Status bar UI
Menu bar UI
Floating/undocked document windows
Floating/undocked toolwindows
Base toolwindow UI ("ThunderFrame")
Document tab templates
MessageBox dialog +service
New Project dialog
Workspace Explorer toolwindow
Code (Project?) Explorer toolwindow
Settings dialog
Language Server toolwindow
Update Server Toolwindow
About dialog