Skip to content
New issue

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

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

Already on GitHub? Sign in 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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in 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