From eb3711f6afd40cfc69e5648619ff83c8ed63df59 Mon Sep 17 00:00:00 2001 From: himeditator Date: Sun, 15 Jun 2025 22:59:45 +0800 Subject: [PATCH] =?UTF-8?q?feat(renderer):=20=E5=88=9D=E6=AD=A5=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E5=AD=97=E5=B9=95=E6=98=BE=E7=A4=BA=E7=AA=97=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 22 ++++++++ package.json | 1 + src/main/index.ts | 36 ++++++++++++- src/renderer/caption/index.html | 17 ------ src/renderer/caption/src/App.vue | 6 --- .../caption/src/assets/styles/reset.css | 5 -- src/renderer/caption/src/env.d.ts | 1 - src/renderer/caption/src/main.ts | 8 --- src/renderer/caption/src/stores/caption.ts | 9 ---- src/renderer/src/App.vue | 52 +------------------ .../src/components/CaptionControl.vue | 13 ++++- src/renderer/src/main.ts | 3 ++ src/renderer/src/router/index.ts | 21 ++++++++ .../views/CaptionPage.vue} | 2 +- src/renderer/src/views/HomePage.vue | 52 +++++++++++++++++++ 15 files changed, 147 insertions(+), 101 deletions(-) delete mode 100644 src/renderer/caption/index.html delete mode 100644 src/renderer/caption/src/App.vue delete mode 100644 src/renderer/caption/src/assets/styles/reset.css delete mode 100644 src/renderer/caption/src/env.d.ts delete mode 100644 src/renderer/caption/src/main.ts delete mode 100644 src/renderer/caption/src/stores/caption.ts create mode 100644 src/renderer/src/router/index.ts rename src/renderer/{caption/src/assets/Template.vue => src/views/CaptionPage.vue} (62%) create mode 100644 src/renderer/src/views/HomePage.vue diff --git a/package-lock.json b/package-lock.json index 03eba26..f7dce7d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,6 +13,7 @@ "@electron-toolkit/utils": "^4.0.0", "ant-design-vue": "^4.2.6", "pinia": "^3.0.2", + "vue-router": "^4.5.1", "ws": "^8.18.2" }, "devDependencies": { @@ -9429,6 +9430,27 @@ "node": ">=10" } }, + "node_modules/vue-router": { + "version": "4.5.1", + "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.5.1.tgz", + "integrity": "sha512-ogAF3P97NPm8fJsE4by9dwSYtDwXIY1nFY9T6DyQnGHd1E2Da94w9JIolpe42LJGIl0DwOHBi8TcRPlPGwbTtw==", + "license": "MIT", + "dependencies": { + "@vue/devtools-api": "^6.6.4" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/vue-router/node_modules/@vue/devtools-api": { + "version": "6.6.4", + "resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.6.4.tgz", + "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==", + "license": "MIT" + }, "node_modules/vue-tsc": { "version": "2.2.10", "resolved": "https://registry.npmmirror.com/vue-tsc/-/vue-tsc-2.2.10.tgz", diff --git a/package.json b/package.json index 62a1b4b..bb7e4c5 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "@electron-toolkit/utils": "^4.0.0", "ant-design-vue": "^4.2.6", "pinia": "^3.0.2", + "vue-router": "^4.5.1", "ws": "^8.18.2" }, "devDependencies": { diff --git a/src/main/index.ts b/src/main/index.ts index 0e2eec8..0f51936 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -4,7 +4,7 @@ import { electronApp, optimizer, is } from '@electron-toolkit/utils' import icon from '../../resources/icon.png?asset' let mainWindow: BrowserWindow | undefined - +let captionWindow: BrowserWindow | undefined function createMainWindow(): void { mainWindow = new BrowserWindow({ icon: icon, @@ -36,6 +36,39 @@ function createMainWindow(): void { } } +function createCaptionWindow(): void { + captionWindow = new BrowserWindow({ + icon: icon, + width: 900, + height: 670, + show: false, + center: true, + autoHideMenuBar: true, + ...(process.platform === 'linux' ? { icon } : {}), + webPreferences: { + preload: path.join(__dirname, '../preload/index.js'), + sandbox: false + } + }) + + captionWindow.on('ready-to-show', () => { + captionWindow?.show() + }) + + captionWindow.webContents.setWindowOpenHandler((details) => { + shell.openExternal(details.url) + return { action: 'deny' } + }) + + if (is.dev && process.env['ELECTRON_RENDERER_URL']) { + captionWindow.loadURL(`${process.env['ELECTRON_RENDERER_URL']}/#/caption`) + } else { + captionWindow.loadFile(path.join(__dirname, '../renderer/index.html'), { + hash: 'caption' + }) + } +} + app.whenReady().then(() => { electronApp.setAppUserModelId('com.himeditator.autocaption') @@ -44,6 +77,7 @@ app.whenReady().then(() => { }) createMainWindow() + createCaptionWindow() app.on('activate', function () { if (BrowserWindow.getAllWindows().length === 0) createMainWindow() diff --git a/src/renderer/caption/index.html b/src/renderer/caption/index.html deleted file mode 100644 index 00b0f01..0000000 --- a/src/renderer/caption/index.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - Auto Caption Player - - - - - -
- - - diff --git a/src/renderer/caption/src/App.vue b/src/renderer/caption/src/App.vue deleted file mode 100644 index ce66d92..0000000 --- a/src/renderer/caption/src/App.vue +++ /dev/null @@ -1,6 +0,0 @@ - - - diff --git a/src/renderer/caption/src/assets/styles/reset.css b/src/renderer/caption/src/assets/styles/reset.css deleted file mode 100644 index 93152d2..0000000 --- a/src/renderer/caption/src/assets/styles/reset.css +++ /dev/null @@ -1,5 +0,0 @@ -body { - margin: 0; - padding: 0; - background-color: black; -} \ No newline at end of file diff --git a/src/renderer/caption/src/env.d.ts b/src/renderer/caption/src/env.d.ts deleted file mode 100644 index 11f02fe..0000000 --- a/src/renderer/caption/src/env.d.ts +++ /dev/null @@ -1 +0,0 @@ -/// diff --git a/src/renderer/caption/src/main.ts b/src/renderer/caption/src/main.ts deleted file mode 100644 index d8c9746..0000000 --- a/src/renderer/caption/src/main.ts +++ /dev/null @@ -1,8 +0,0 @@ -import './assets/styles/reset.css' -import { createPinia } from 'pinia' -import { createApp } from 'vue' -import App from './App.vue' - -const app = createApp(App) -app.use(createPinia()) -app.mount('#app') \ No newline at end of file diff --git a/src/renderer/caption/src/stores/caption.ts b/src/renderer/caption/src/stores/caption.ts deleted file mode 100644 index 3027019..0000000 --- a/src/renderer/caption/src/stores/caption.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { ref } from 'vue' -import { defineStore } from 'pinia' - -export const useCaptionStore = defineStore('caption', () => { - const captionFontFamily = ref('sans-serif') - const captionFontSize = ref(24) - const captionFontColor = ref('#ffffff') - return { captionFontFamily, captionFontSize, captionFontColor } -}) \ No newline at end of file diff --git a/src/renderer/src/App.vue b/src/renderer/src/App.vue index c733876..270a927 100644 --- a/src/renderer/src/App.vue +++ b/src/renderer/src/App.vue @@ -1,56 +1,6 @@ - - \ No newline at end of file diff --git a/src/renderer/src/components/CaptionControl.vue b/src/renderer/src/components/CaptionControl.vue index 2998377..102e5ea 100644 --- a/src/renderer/src/components/CaptionControl.vue +++ b/src/renderer/src/components/CaptionControl.vue @@ -2,7 +2,8 @@
源语言 @@ -71,13 +72,21 @@ const langList = computed(() => { return [] }) -function applyControl(){ +function applyChange(){ captionControl.sourceLang = currentSourceLang.value captionControl.targetLang = currentTargetLang.value captionControl.engine = currentEngine.value captionControl.port = currentPort.value captionControl.translation = currentTranslation.value } + +function cancelChange(){ + currentSourceLang.value = captionControl.sourceLang + currentTargetLang.value = captionControl.targetLang + currentEngine.value = captionControl.engine + currentPort.value = captionControl.port + currentTranslation.value = captionControl.translation +} \ No newline at end of file