Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

[EPIC] Shell UI #75

Open
retailcoder opened this issue Dec 21, 2023 · 0 comments
Open

[EPIC] Shell UI #75

retailcoder opened this issue Dec 21, 2023 · 0 comments
Labels
component: Rubbeduck.UI Issue involves UI components skill:xaml Issues that involve XAML markup and WPF

Comments

@retailcoder
Copy link
Member

retailcoder commented Dec 21, 2023

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

    • Opens workspace provided by command-line args on startup
  • 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
  • Docking panels (side, bottom)

    • Can be hidden/collapsed
    • Can be expanded
    • Can be pinned to remain expanded
    • Option to expand on hover (vs only on click)
    • Looks awesome
  • Tooltabs

    • Can be pinned from frame header
    • Can be closed from frame header
    • Can be dragged from frame header
    • Tooltab header styling respects theme
    • Shows title in frame header
    • Shows settings command in frame header
    • Frame header context menu
      • Can undock tooltab
      • Can pin tooltab
      • Can close tooltab
  • Document/editor tabs

    • Can be pinned (from tab header)
    • Can be closed (from tab header)
    • Tab header styling respects theme
    • Tab header context menu
      • Can undock tab
      • Can pin tab
      • Can close tab
      • Can close all tabs but this one
      • Can close all unpinned tabs
  • Status bar UI

    • Shows server connection status
      • Icon/button shows the server trace toolwindow
    • Shows progress indicator for server-side (LSP) progress reports
      • Can cancel cancellable server operations
    • Document status template
      • Document name
      • Document type
      • IsModified indicator
      • Number of lines
      • Number of characters (bytes?)
      • L1C1 caret location / current selection
    • Source file status template
      • Shows module/component type
      • Shows number of diagnostics in module
        • Button shows diagnostics toolwindow
  • Menu bar UI

    • 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
  • Floating/undocked document windows

    • Can be re-docked to main window's document tab host
    • Can accept/dock other document tabs
    • Has a status bar
    • Looks awesome
  • Floating/undocked toolwindows

    • Can be re-docked on either side or bottom tooltab areas
      • Toolwindows have a horizontal template when docked at the bottom
    • Can accept/dock other document tabs
    • Looks awesome
  • Base toolwindow UI ("ThunderFrame")

    • Can bind close, pin, and show [that tool's] settings commands
    • Shows title
    • Can bind accept/cancel commands
    • Looks awesome
  • Document tab templates

    • Text document template
    • Markdown document template
      • Shows a preview pane
    • JSON document template
    • Source file document template
    • Looks awesome
  • MessageBox dialog +service

    • ShowMessage/ShowMessageRequest LSP handlers
    • Can render markdown
    • Can be ignored ("do not show again")
    • Can be expanded to show additional markdown content
    • Looks awesome
  • New Project dialog

    • Shows VBA projects from VBE add-in
    • Hides projects drop-down when running without the VBE add-in
    • Can create a project from a template
    • Creates workspace folders
    • Opens the created project
    • Looks awesome
  • Workspace Explorer toolwindow

    • Represents workspaces in a tree view
      • ...without glitchy nodes that shouldn't be there
    • Toolbar shortcuts to create new project/workspace, open existing
    • Open file command (LSP)
      • Bind ENTER and double-click
      • Bind drop into editor document tab host
    • Folder icons change on expand
    • 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
  • Settings dialog

    • Boolean settings template
    • String setting template
    • Numeric setting template
    • TimeSpan setting template
    • Enum setting template (per enum)
    • List setting template
      • Can remove items from UI
    • Merge and serialize settings, defaults
    • 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
    • Can show+focus specific settings
    • Looks awesome
  • Language Server toolwindow

    • Can be paused
    • Can select verbosity
    • 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
@retailcoder retailcoder added skill:xaml Issues that involve XAML markup and WPF component: Rubbeduck.UI Issue involves UI components labels Dec 23, 2023
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
component: Rubbeduck.UI Issue involves UI components skill:xaml Issues that involve XAML markup and WPF
Projects
None yet
Development

No branches or pull requests

1 participant