From 9fd188f2356e01300ef88ddf6e9731ed246f2997 Mon Sep 17 00:00:00 2001 From: kwaroran Date: Fri, 21 Mar 2025 10:28:10 +0900 Subject: [PATCH] Add new hotkey functionalitys --- src/lib/Others/QuickSettingsGUI.svelte | 29 ++++++++ src/lib/SideBars/Sidebar.svelte | 10 ++- src/ts/defaulthotkeys.ts | 10 --- src/ts/hotkey.ts | 95 ++++++++++++++++++++++---- src/ts/stores.svelte.ts | 5 ++ 5 files changed, 123 insertions(+), 26 deletions(-) create mode 100644 src/lib/Others/QuickSettingsGUI.svelte diff --git a/src/lib/Others/QuickSettingsGUI.svelte b/src/lib/Others/QuickSettingsGUI.svelte new file mode 100644 index 00000000..2df772f0 --- /dev/null +++ b/src/lib/Others/QuickSettingsGUI.svelte @@ -0,0 +1,29 @@ + + +
+ + + +
+ +
+ {#if QuickSettings.index === 0} + + {:else if QuickSettings.index === 1} + + {:else if QuickSettings.index === 2} + + {/if} +
\ No newline at end of file diff --git a/src/lib/SideBars/Sidebar.svelte b/src/lib/SideBars/Sidebar.svelte index da5e6d83..4f9850ef 100644 --- a/src/lib/SideBars/Sidebar.svelte +++ b/src/lib/SideBars/Sidebar.svelte @@ -8,7 +8,10 @@ sideBarClosing, sideBarStore, OpenRealmStore, - PlaygroundStore + PlaygroundStore, + + QuickSettings + } from "../../ts/stores.svelte"; import { setDatabase, type folder } from "../../ts/storage/database.svelte"; import { DBState } from 'src/ts/stores.svelte'; @@ -45,6 +48,7 @@ import { ConnectionIsHost, ConnectionOpenStore, RoomIdStore } from "src/ts/sync/multiuser"; import { sideBarSize } from "src/ts/gui/guisize"; import DevTool from "./DevTool.svelte"; + import QuickSettingsGui from "../Others/QuickSettingsGUI.svelte"; let sideBarMode = $state(0); let editMode = $state(false); let menuMode = $state(0); @@ -751,7 +755,9 @@ {/if} - {#if devTool} + {#if QuickSettings.open} + + {:else if devTool} {:else if $botMakerMode} diff --git a/src/ts/defaulthotkeys.ts b/src/ts/defaulthotkeys.ts index c02c5b25..5578d108 100644 --- a/src/ts/defaulthotkeys.ts +++ b/src/ts/defaulthotkeys.ts @@ -119,16 +119,6 @@ export const defaultHotkeys: Hotkey[] = [ ctrl: true, action: 'previewRequest' }, - { - key: 'i', - ctrl: true, - action: 'import' - }, - { - key: 'x', - ctrl: true, - action: 'export' - }, { key: 'w', ctrl: true, diff --git a/src/ts/hotkey.ts b/src/ts/hotkey.ts index 1a4159cb..a24b7c42 100644 --- a/src/ts/hotkey.ts +++ b/src/ts/hotkey.ts @@ -1,10 +1,12 @@ import { get } from "svelte/store" -import { alertSelect, alertToast, doingAlert } from "./alert" +import { alertMd, alertSelect, alertToast, alertWait, doingAlert } from "./alert" import { changeToPreset as changeToPreset2, getDatabase } from "./storage/database.svelte" -import { alertStore, MobileGUIStack, MobileSideBar, openPersonaList, openPresetList, SafeModeStore, selectedCharID, settingsOpen } from "./stores.svelte" +import { alertStore, MobileGUIStack, MobileSideBar, openPersonaList, openPresetList, OpenRealmStore, PlaygroundStore, QuickSettings, SafeModeStore, selectedCharID, settingsOpen } from "./stores.svelte" import { language } from "src/lang" import { updateTextThemeAndCSS } from "./gui/colorscheme" import { defaultHotkeys } from "./defaulthotkeys" +import { doingChat, previewBody, sendChat } from "./process/index.svelte" +import { getRequestLog } from "./globalApi.svelte" export function initHotkey(){ document.addEventListener('keydown', (ev) => { @@ -111,6 +113,67 @@ export function initHotkey(){ updateTextThemeAndCSS() break } + case 'prevChar':{ + const sorted = database.characters.map((v, i) => { + return {name: v.name, i} + }).sort((a, b) => a.name.localeCompare(b.name)) + const currentIndex = sorted.findIndex(v => v.i === get(selectedCharID)) + if(currentIndex === 0){ + return + } + if(currentIndex >= sorted.length - 1){ + return + } + selectedCharID.set(sorted[currentIndex - 1].i) + PlaygroundStore.set(0) + OpenRealmStore.set(false) + break + } + case 'nextChar':{ + const sorted = database.characters.map((v, i) => { + return {name: v.name, i} + }).sort((a, b) => a.name.localeCompare(b.name)) + const currentIndex = sorted.findIndex(v => v.i === get(selectedCharID)) + if(currentIndex === 0){ + return + } + if(currentIndex >= sorted.length - 1){ + return + } + selectedCharID.set(sorted[currentIndex + 1].i) + PlaygroundStore.set(0) + OpenRealmStore.set(false) + break + } + case 'quickMenu':{ + quickMenu() + break + } + case 'previewRequest':{ + if(get(doingChat) && get(selectedCharID) !== -1){ + return false + } + alertWait("Loading...") + sendChat(-1, { + previewPrompt: true + }) + + let md = '' + md += '### Prompt\n' + md += '```json\n' + JSON.stringify(JSON.parse(previewBody), null, 2).replaceAll('```', '\\`\\`\\`') + '\n```\n' + doingChat.set(false) + alertMd(md) + break + } + case 'toggleLog':{ + alertMd(getRequestLog()) + break + } + case 'quickSettings':{ + QuickSettings.open = !QuickSettings.open + QuickSettings.index = 0 + break + } default:{ hotKeyRanThisTime = false } @@ -221,18 +284,7 @@ export function initHotkey(){ if(doingAlert()){ return } - const selStr = await alertSelect([ - language.presets, - language.persona, - language.cancel - ]) - const sel = parseInt(selStr) - if(sel === 0){ - openPresetList.set(!get(openPresetList)) - } - if(sel === 1){ - openPersonaList.set(!get(openPersonaList)) - } + quickMenu() } if(touchs === 1){ touchStartTime = Date.now() @@ -243,6 +295,21 @@ export function initHotkey(){ }) } +async function quickMenu(){ + const selStr = await alertSelect([ + language.presets, + language.persona, + language.cancel + ]) + const sel = parseInt(selStr) + if(sel === 0){ + openPresetList.set(!get(openPresetList)) + } + if(sel === 1){ + openPersonaList.set(!get(openPersonaList)) + } +} + function clickQuery(query:string){ let ele = document.querySelector(query) as HTMLElement console.log(ele) diff --git a/src/ts/stores.svelte.ts b/src/ts/stores.svelte.ts index 6ac312ca..ba714e6c 100644 --- a/src/ts/stores.svelte.ts +++ b/src/ts/stores.svelte.ts @@ -98,6 +98,11 @@ export const LoadingStatusState = $state({ text: '', }) +export const QuickSettings = $state({ + open: false, + index: 0 +}) + export const disableHighlight = writable(true) ReloadGUIPointer.subscribe(() => {