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

IMGUI: Implement feature-parity with Qt GUI #600

Open
41 of 89 tasks
GPMueller opened this issue Jun 30, 2021 · 1 comment
Open
41 of 89 tasks

IMGUI: Implement feature-parity with Qt GUI #600

GPMueller opened this issue Jun 30, 2021 · 1 comment

Comments

@GPMueller
Copy link
Member

GPMueller commented Jun 30, 2021

General

  • save the GUI layout and settings and read it back in on startup
  • dockable and floatable windows

Visualisation

  • take a screenshot and take screenshots of the entire chain
  • camera (see, set, save and load), esp. FOV
  • bounding box
  • coordinate cross
  • spin sphere
  • arrows
  • surface (including z-shift for 2D surfaces)
  • isosurface
  • colormap: selection, phase for HSV-map, set cardinal (i.e. symmetry-) axis, invert theta/phi
  • light direction
  • filter visualised spins by script (at least by "every N'th")

System controls

  • start/stop button
  • image selection and chain length setter
  • method and solver selection, with solver only available where applicable
  • (maybe) camera reset buttons: x/y/z/default

Methods with full set of parameters

  • LLG
  • MC
  • GNEB
  • MMF
  • EMA
  • for each, apply to current image
  • for each, apply to all images

Hamiltonian Parameters

  • Heisenberg
  • (on corresp. branch) Micromagnetic
  • Gaussian
  • for each, apply to current image
  • for each, apply to all images

Spin configurations window

  • Settings: add noise, position, rect./cylindrical/spherical border, inverted, atom type, pinning
    Note: if we can implement this as scriptable, that might be even better, as it would allow for ellipses etc.
  • Random, +z, -z
  • Homogeneous: direction
  • Domain wall (finally implement a proper one): width
  • Spiral: angle, axis, q, q2, w.r.t. reciprocal lattice/real lattice/real space
  • Skyrmion: radius, DW width, order, phase, up/down, R/L, achiral
  • Hopfion: radius, order
  • Homogeneous transition: add noise, range
  • Increase chain length with interpolated images

Keybindings

UI controls

  • F1-F4: Show help, settings, plots, log, ?
  • F5-F7: toggle dragging, defects, pinning modes
  • F10 or ctrl+f: toggle large visualisation (hide menu bar, requires functionality to restore it without keybinding)
  • F11 or ctrl+shift+f: toggle fullscreen
  • F12 or home: screenshot
  • i: toggle info-widgets
  • (maybe)ctrl+shift+v: toggle visualisation

Camera controls

  • Left/right/scroll mouse
  • wasdqe
  • tfgh
  • xyz: set camera direction (ctrl or shift to invert)

Control simulations

  • space: start/stop
  • (maybe) ctrl+m: cycle method
  • (maybe) ctrl+s: cycle solver

Manipulate the current image

  • ctrl+r: randomize
  • ctrl+n: add noise
  • enter: insert last used configuration

Manipulate the chain

  • left/right arrows: switch between images
  • ctrl+x: cut image
  • ctrl+c: copy image
  • ctrl+v: paste image at current image
  • ctrl+left/right: insert image left/right of current image
  • delete: delete current image

Visualisation:

  • +/-: increment/decrement N, visualising every N'th spin
  • 1: regular visualisation mode
  • 2: isosurface visualisation mode
  • 3-5: x/y/z slab visualisation
  • /: cycle visualisation mode
  • ,/., move slab (shift to go faster)

Log

Viewer

  • display gathered log text
  • select minimum level
  • filter senders: "all"-button, checkboxes
  • filter by image index: "all"-checkbox, "from"-index "to"-index

Settings

  • accept level
  • print level
  • output folder

Menu

File

  • save/load input config file
  • save/load spin configuration
  • save/load chains
  • save/load eigenmodes
  • save energy per spin, energies of chain, interpolated energies of chain

Edit

  • cut/copy/paste, insert left/right, delete

Controls

  • start/stop
  • randomize
  • toggle dragging/defect/pinning modes

View

  • toggle widgets: info, settings, plots, configurations, geometry, visualisation, debug
  • toggle camera projection
  • switch visualisation modes: regular, isosurface, slab x/y/z
  • toggle: visualisation, larger visualisation (hide menu bar), fullscreen visualisation

Help

  • Keybindings
  • About
@GPMueller
Copy link
Member Author

When this GUI is more stable, it could be placed as an alternative to the mobile GUI, on https://spirit-code.github.io and the current web-UI would simply be the mobile variant.
Then, issues #12, #13, #14 and #15 could be closed.

Note, to be properly usable as a web-UI, it should support up-/downloading of images/chains. That would require some calls from C++ into the DOM to trigger what the current web-UI does to up-/download files.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant