mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-04-26 04:19:27 -07:00
fix: correct session help subtitle binding labels
This commit is contained in:
29
src/renderer/modals/session-help.test.ts
Normal file
29
src/renderer/modals/session-help.test.ts
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
import assert from 'node:assert/strict';
|
||||||
|
import test from 'node:test';
|
||||||
|
|
||||||
|
import { SPECIAL_COMMANDS } from '../../config/definitions';
|
||||||
|
import {
|
||||||
|
describeSessionHelpCommand,
|
||||||
|
formatSessionHelpKeybinding,
|
||||||
|
} from './session-help.js';
|
||||||
|
|
||||||
|
test('session help describes sub-seek commands as subtitle-line navigation', () => {
|
||||||
|
assert.equal(describeSessionHelpCommand(['sub-seek', 1]), 'Jump to next subtitle');
|
||||||
|
assert.equal(describeSessionHelpCommand(['sub-seek', -1]), 'Jump to previous subtitle');
|
||||||
|
});
|
||||||
|
|
||||||
|
test('session help describes subtitle-delay shift special commands separately from sub-seek', () => {
|
||||||
|
assert.equal(
|
||||||
|
describeSessionHelpCommand([SPECIAL_COMMANDS.SHIFT_SUB_DELAY_TO_NEXT_SUBTITLE_START]),
|
||||||
|
'Shift subtitle delay to next cue',
|
||||||
|
);
|
||||||
|
assert.equal(
|
||||||
|
describeSessionHelpCommand([SPECIAL_COMMANDS.SHIFT_SUB_DELAY_TO_PREVIOUS_SUBTITLE_START]),
|
||||||
|
'Shift subtitle delay to previous cue',
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('session help formats bracket keybindings as physical keys', () => {
|
||||||
|
assert.equal(formatSessionHelpKeybinding('Shift+BracketRight'), 'Shift + ]');
|
||||||
|
assert.equal(formatSessionHelpKeybinding('Shift+BracketLeft'), 'Shift + [');
|
||||||
|
});
|
||||||
@@ -44,6 +44,8 @@ const KEY_NAME_MAP: Record<string, string> = {
|
|||||||
Escape: 'Esc',
|
Escape: 'Esc',
|
||||||
Tab: 'Tab',
|
Tab: 'Tab',
|
||||||
Enter: 'Enter',
|
Enter: 'Enter',
|
||||||
|
BracketLeft: '[',
|
||||||
|
BracketRight: ']',
|
||||||
CommandOrControl: 'Cmd/Ctrl',
|
CommandOrControl: 'Cmd/Ctrl',
|
||||||
Ctrl: 'Ctrl',
|
Ctrl: 'Ctrl',
|
||||||
Control: 'Ctrl',
|
Control: 'Ctrl',
|
||||||
@@ -132,7 +134,9 @@ function describeCommand(command: (string | number)[]): string {
|
|||||||
return `Seek ${command[1] > 0 ? '+' : ''}${command[1]} second(s)`;
|
return `Seek ${command[1] > 0 ? '+' : ''}${command[1]} second(s)`;
|
||||||
}
|
}
|
||||||
if (first === 'sub-seek' && typeof command[1] === 'number') {
|
if (first === 'sub-seek' && typeof command[1] === 'number') {
|
||||||
return `Shift subtitle by ${command[1]} ms`;
|
if (command[1] > 0) return 'Jump to next subtitle';
|
||||||
|
if (command[1] < 0) return 'Jump to previous subtitle';
|
||||||
|
return 'Reload current subtitle timing';
|
||||||
}
|
}
|
||||||
if (first === SPECIAL_COMMANDS.SUBSYNC_TRIGGER) return 'Open subtitle sync controls';
|
if (first === SPECIAL_COMMANDS.SUBSYNC_TRIGGER) return 'Open subtitle sync controls';
|
||||||
if (first === SPECIAL_COMMANDS.RUNTIME_OPTIONS_OPEN) return 'Open runtime options';
|
if (first === SPECIAL_COMMANDS.RUNTIME_OPTIONS_OPEN) return 'Open runtime options';
|
||||||
@@ -140,6 +144,12 @@ function describeCommand(command: (string | number)[]): string {
|
|||||||
if (first === SPECIAL_COMMANDS.PLAYLIST_BROWSER_OPEN) return 'Open playlist browser';
|
if (first === SPECIAL_COMMANDS.PLAYLIST_BROWSER_OPEN) return 'Open playlist browser';
|
||||||
if (first === SPECIAL_COMMANDS.REPLAY_SUBTITLE) return 'Replay current subtitle';
|
if (first === SPECIAL_COMMANDS.REPLAY_SUBTITLE) return 'Replay current subtitle';
|
||||||
if (first === SPECIAL_COMMANDS.PLAY_NEXT_SUBTITLE) return 'Play next subtitle';
|
if (first === SPECIAL_COMMANDS.PLAY_NEXT_SUBTITLE) return 'Play next subtitle';
|
||||||
|
if (first === SPECIAL_COMMANDS.SHIFT_SUB_DELAY_TO_NEXT_SUBTITLE_START) {
|
||||||
|
return 'Shift subtitle delay to next cue';
|
||||||
|
}
|
||||||
|
if (first === SPECIAL_COMMANDS.SHIFT_SUB_DELAY_TO_PREVIOUS_SUBTITLE_START) {
|
||||||
|
return 'Shift subtitle delay to previous cue';
|
||||||
|
}
|
||||||
if (first.startsWith(SPECIAL_COMMANDS.RUNTIME_OPTION_CYCLE_PREFIX)) {
|
if (first.startsWith(SPECIAL_COMMANDS.RUNTIME_OPTION_CYCLE_PREFIX)) {
|
||||||
const [, rawId, rawDirection] = first.split(':');
|
const [, rawId, rawDirection] = first.split(':');
|
||||||
return `Cycle runtime option ${rawId || 'option'} ${rawDirection === 'prev' ? 'previous' : 'next'}`;
|
return `Cycle runtime option ${rawId || 'option'} ${rawDirection === 'prev' ? 'previous' : 'next'}`;
|
||||||
@@ -148,6 +158,11 @@ function describeCommand(command: (string | number)[]): string {
|
|||||||
return `MPV command: ${command.map((entry) => String(entry)).join(' ')}`;
|
return `MPV command: ${command.map((entry) => String(entry)).join(' ')}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export {
|
||||||
|
describeCommand as describeSessionHelpCommand,
|
||||||
|
formatKeybinding as formatSessionHelpKeybinding,
|
||||||
|
};
|
||||||
|
|
||||||
function sectionForCommand(command: (string | number)[]): string {
|
function sectionForCommand(command: (string | number)[]): string {
|
||||||
const first = command[0];
|
const first = command[0];
|
||||||
if (typeof first !== 'string') return 'Other shortcuts';
|
if (typeof first !== 'string') return 'Other shortcuts';
|
||||||
|
|||||||
Reference in New Issue
Block a user