package funkin.ui.debug.charting.handlers; import funkin.util.PlatformUtil; /** * Handles modifying the shortcut text of menu items based on the current platform. * On MacOS, `Ctrl`, `Alt`, and `Shift` are replaced with `⌘` (or `^`), `⌥`, and `⇧`, respectively. */ @:access(funkin.ui.debug.charting.ChartEditorState) class ChartEditorShortcutHandler { public static function applyPlatformShortcutText(state:ChartEditorState):Void { state.menubarItemNewChart.shortcutText = ctrlOrCmd('N'); state.menubarItemOpenChart.shortcutText = ctrlOrCmd('O'); state.menubarItemSaveChartAs.shortcutText = ctrlOrCmd(shift('S')); state.menubarItemExit.shortcutText = ctrlOrCmd('Q'); state.menubarItemUndo.shortcutText = ctrlOrCmd('Z'); state.menubarItemRedo.shortcutText = ctrlOrCmd('Y'); state.menubarItemCut.shortcutText = ctrlOrCmd('X'); state.menubarItemCopy.shortcutText = ctrlOrCmd('C'); state.menubarItemPaste.shortcutText = ctrlOrCmd('V'); state.menubarItemSelectAllNotes.shortcutText = ctrlOrCmd('A'); state.menubarItemSelectAllEvents.shortcutText = ctrlOrCmd(alt('A')); state.menubarItemSelectInverse.shortcutText = ctrlOrCmd('I'); state.menubarItemSelectNone.shortcutText = ctrlOrCmd('D'); state.menubarItemSelectBeforeCursor.shortcutText = shift('Home'); state.menubarItemSelectAfterCursor.shortcutText = shift('End'); state.menubarItemDifficultyDown.shortcutText = ctrlOrCmd('←'); state.menubarItemDifficultyUp.shortcutText = ctrlOrCmd('→'); state.menubarItemPlaytestFull.shortcutText = 'Enter'; state.menubarItemPlaytestMinimal.shortcutText = shift('Enter'); } /** * Display `Ctrl` on Windows and `⌘` (Command) on macOS. * @param input */ static inline function ctrlOrCmd(input:String) { return (PlatformUtil.isMacOS()) ? '⌘+${input}' : 'Ctrl+${input}'; } /** * Display `Ctrl` on Windows and `^` (Control) on macOS. * @param input */ static inline function ctrl(input:String) { return (PlatformUtil.isMacOS()) ? '^+${input}' : 'Ctrl+${input}'; } static inline function alt(input:String) { return (PlatformUtil.isMacOS()) ? '⌥+${input}' : 'Alt+${input}'; } static inline function shift(input:String) { return (PlatformUtil.isMacOS()) ? '⇧+${input}' : 'Shift+${input}'; } }