diff --git a/electron.vite.config.1710168376515.mjs b/electron.vite.config.1710168376515.mjs
index fdf9f40..31d658d 100644
--- a/electron.vite.config.1710168376515.mjs
+++ b/electron.vite.config.1710168376515.mjs
@@ -2,7 +2,6 @@
import { resolve } from "path";
import { defineConfig, externalizeDepsPlugin } from "electron-vite";
import vue from "@vitejs/plugin-vue";
-import Jsx from "@vitejs/plugin-vue-jsx";
var electron_vite_config_default = defineConfig({
main: {
plugins: [externalizeDepsPlugin()]
diff --git a/package-lock.json b/package-lock.json
index 77c9a99..571406f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "laitool",
- "version": "2.2.8",
+ "version": "2.2.9",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "laitool",
- "version": "2.2.6",
+ "version": "2.2.8",
"hasInstallScript": true,
"dependencies": {
"@alicloud/alimt20181012": "^1.2.0",
@@ -35,6 +35,7 @@
"node-reg": "^0.2.4",
"npm": "^10.7.0",
"paddle": "^1.0.0",
+ "pinia": "^2.1.7",
"sharp": "^0.33.2",
"systeminformation": "^5.22.10",
"tencentcloud-sdk-nodejs": "^4.0.821",
@@ -9281,6 +9282,56 @@
"node": ">=6"
}
},
+ "node_modules/pinia": {
+ "version": "2.1.7",
+ "resolved": "https://registry.npmmirror.com/pinia/-/pinia-2.1.7.tgz",
+ "integrity": "sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==",
+ "dependencies": {
+ "@vue/devtools-api": "^6.5.0",
+ "vue-demi": ">=0.14.5"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/posva"
+ },
+ "peerDependencies": {
+ "@vue/composition-api": "^1.4.0",
+ "typescript": ">=4.4.4",
+ "vue": "^2.6.14 || ^3.3.0"
+ },
+ "peerDependenciesMeta": {
+ "@vue/composition-api": {
+ "optional": true
+ },
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/pinia/node_modules/vue-demi": {
+ "version": "0.14.8",
+ "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.8.tgz",
+ "integrity": "sha512-Uuqnk9YE9SsWeReYqK2alDI5YzciATE0r2SkA6iMAtuXvNTMNACJLJEXNXaEy94ECuBe4Sk6RzRU80kjdbIo1Q==",
+ "hasInstallScript": true,
+ "bin": {
+ "vue-demi-fix": "bin/vue-demi-fix.js",
+ "vue-demi-switch": "bin/vue-demi-switch.js"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ },
+ "peerDependencies": {
+ "@vue/composition-api": "^1.0.0-rc.1",
+ "vue": "^3.0.0-0 || ^2.6.0"
+ },
+ "peerDependenciesMeta": {
+ "@vue/composition-api": {
+ "optional": true
+ }
+ }
+ },
"node_modules/pixelmatch": {
"version": "4.0.2",
"license": "ISC",
diff --git a/package.json b/package.json
index 9dc9a74..f1df5f3 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "laitool",
- "version": "2.2.8",
+ "version": "2.2.9",
"description": "An Electron application with Vue",
"main": "./out/main/index.js",
"author": "example.com",
@@ -43,6 +43,7 @@
"node-reg": "^0.2.4",
"npm": "^10.7.0",
"paddle": "^1.0.0",
+ "pinia": "^2.1.7",
"sharp": "^0.33.2",
"systeminformation": "^5.22.10",
"tencentcloud-sdk-nodejs": "^4.0.821",
@@ -85,8 +86,6 @@
"resources/scripts/model/**",
"resources/scripts/Lai.exe",
"resources/scripts/_internal/**",
- "resources/scripts/lama/lama_inpaint.exe",
- "resources/scripts/lama/model/**",
"resources/scripts/discordScript.js",
"resources/tmp/**",
"resources/icon.ico"
@@ -95,4 +94,4 @@
"icon": "./resources/icon.ico"
}
}
-}
\ No newline at end of file
+}
diff --git a/resources/scripts/requirements.txt b/resources/scripts/requirements.txt
new file mode 100644
index 0000000..b45888f
--- /dev/null
+++ b/resources/scripts/requirements.txt
@@ -0,0 +1,298 @@
+accelerate==0.30.1
+addict==2.4.0
+aiofiles==23.2.1
+aiohttp==3.8.6
+aiosignal==1.3.1
+alibabacloud-bailian20230601==1.6.1
+alibabacloud-credentials==0.3.3
+alibabacloud-endpoint-util==0.0.3
+alibabacloud-gateway-spi==0.0.1
+alibabacloud-openapi-util==0.2.2
+alibabacloud-tea==0.3.6
+alibabacloud-tea-openapi==0.3.9
+alibabacloud-tea-util==0.3.12
+alibabacloud-tea-xml==0.0.2
+aliyun-python-sdk-core==2.15.0
+aliyun-python-sdk-kms==2.16.2
+altair==5.3.0
+altgraph==0.17.4
+annotated-types==0.6.0
+anthropic==0.26.1
+antlr4-python3-runtime==4.9.3
+anyio==4.3.0
+APScheduler==3.10.4
+arxiv==2.1.0
+astor==0.8.1
+asttokens==2.4.1
+async-timeout==4.0.3
+attrdict==2.0.1
+attrs==23.2.0
+av==11.0.0
+azure-cognitiveservices-speech==1.37.0
+Babel==2.15.0
+backports.tarfile==1.1.1
+baidu-aip==4.16.13
+bce-python-sdk==0.9.11
+beautifulsoup4==4.12.3
+bidict==0.23.1
+blinker==1.8.2
+broadscope-bailian==1.3.1
+cachetools==5.3.3
+certifi==2024.2.2
+cffi==1.16.0
+cfgv==3.4.0
+chardet==5.2.0
+charset-normalizer==3.3.2
+chatgpt-tool-hub==0.5.0
+cheroot==10.0.1
+click==8.1.7
+colorama==0.4.6
+coloredlogs==15.0.1
+comtypes==1.4.2
+contourpy==1.2.1
+controlnet-aux==0.0.3
+crcmod==1.7
+cryptography==42.0.5
+cssselect==1.2.0
+cssutils==2.11.0
+ctranslate2==4.1.0
+curl_cffi==0.6.4
+cx-Logging==3.1.0
+cx_Freeze==6.15.16
+cycler==0.12.1
+Cython==3.0.10
+dashscope==1.19.2
+datasets==2.18.0
+decorator==4.4.2
+diffusers==0.27.2
+dill==0.3.8
+dingtalk-stream==0.18.1
+distlib==0.3.8
+distro==1.9.0
+dnspython==2.6.1
+dulwich==0.22.1
+easydict==1.13
+edge-tts==6.1.12
+einops==0.7.0
+elevenlabs==1.0.3
+email_validator==2.1.1
+et-xmlfile==1.1.0
+exceptiongroup==1.2.1
+executing==2.0.1
+fastapi==0.108.0
+fastapi-cli==0.0.2
+faster-whisper==1.0.1
+feedparser==6.0.10
+ffmpy==0.3.2
+filelock==3.13.1
+fire==0.6.0
+Flask==3.0.3
+flask-babel==4.0.0
+flatbuffers==24.3.7
+fonttools==4.53.0
+frozenlist==1.4.1
+fsspec==2024.2.0
+future==1.0.0
+gast==0.5.4
+google-ai-generativelanguage==0.6.4
+google-api-core==2.19.0
+google-api-python-client==2.130.0
+google-auth==2.29.0
+google-auth-httplib2==0.2.0
+google-generativeai==0.5.4
+googleapis-common-protos==1.63.0
+gradio==4.21.0
+gradio_client==0.12.0
+grpcio==1.64.0
+grpcio-status==1.62.2
+gTTS==2.5.1
+h11==0.14.0
+HTMLParser==0.0.2
+httpcore==1.0.5
+httplib2==0.22.0
+httptools==0.6.1
+httpx==0.27.0
+huggingface-hub==0.23.2
+humanfriendly==10.0
+identify==2.5.36
+idna==3.6
+imageio==2.34.0
+imageio-ffmpeg==0.4.9
+imgaug==0.4.0
+importlib_metadata==7.0.2
+importlib_resources==6.4.0
+install==1.3.5
+IOPaint==1.3.3
+ipython==8.24.0
+itsdangerous==2.2.0
+jaraco.context==5.3.0
+jaraco.functools==4.0.1
+jedi==0.19.1
+Jinja2==3.1.3
+jiter==0.4.0
+jmespath==0.10.0
+jsonschema==4.22.0
+jsonschema-specifications==2023.12.1
+kiwisolver==1.4.5
+langid==1.1.6
+lazy_loader==0.4
+lief==0.14.1
+linkai==0.0.6.0
+lmdb==1.4.1
+loguru==0.7.2
+lxml==5.2.2
+markdown-it-py==3.0.0
+MarkupSafe==2.1.5
+matplotlib==3.9.0
+matplotlib-inline==0.1.7
+mdurl==0.1.2
+modelscope==1.13.1
+more-itertools==10.2.0
+moviepy==1.0.3
+mpmath==1.3.0
+multidict==6.0.5
+multiprocess==0.70.16
+networkx==3.2.1
+nodeenv==1.8.0
+Nuitka==2.1.2
+numpy==1.24.2
+omegaconf==2.3.0
+onnxruntime==1.17.1
+openai==0.27.8
+opencv-contrib-python==4.6.0.66
+opencv-python==4.6.0.66
+opencv-python-headless==4.9.0.80
+openpyxl==3.1.2
+opt-einsum==3.3.0
+optionaldict==0.1.2
+ordered-set==4.1.0
+orjson==3.10.3
+oss2==2.18.4
+packaging==24.0
+paddleocr==2.7.3
+paddlepaddle==2.6.1
+pandas==2.2.1
+parso==0.8.4
+pdf2docx==0.5.8
+pefile==2023.2.7
+peft==0.7.1
+piexif==1.1.3
+pillow==10.3.0
+platformdirs==4.2.0
+pre-commit==3.7.1
+premailer==3.10.0
+proglog==0.1.10
+prompt-toolkit==3.0.43
+proto-plus==1.23.0
+protobuf==3.20.2
+psutil==5.9.8
+pure-eval==0.2.2
+pyarrow==15.0.1
+pyarrow-hotfix==0.6
+pyasn1==0.6.0
+pyasn1_modules==0.4.0
+pyclipper==1.3.0.post5
+pycparser==2.21
+pycryptodome==3.20.0
+pydantic==2.5.3
+pydantic_core==2.14.6
+pydub==0.25.1
+Pygments==2.18.0
+pyinstaller==6.5.0
+pyinstaller-hooks-contrib==2024.3
+PyJWT==2.8.0
+PyMuPDF==1.24.5
+PyMuPDFb==1.24.3
+pyOpenSSL==24.1.0
+pyoxidizer==0.24.0
+pyparsing==3.1.2
+pypiwin32==223
+pypng==0.20220715.0
+PyQRCode==1.2.1
+pyreadline3==3.4.1
+pytesseract==0.3.10
+python-dateutil==2.9.0.post0
+python-docx==1.1.2
+python-dotenv==1.0.1
+python-engineio==4.9.1
+python-multipart==0.0.9
+python-socketio==5.7.2
+pyttsx3==2.90
+pytz==2024.1
+pywin32==306
+pywin32-ctypes==0.2.2
+PyYAML==6.0.1
+qrcode==7.4.2
+rapidfuzz==3.9.3
+rarfile==4.2
+referencing==0.35.1
+regex==2024.5.15
+requests==2.31.0
+rich==13.7.1
+rpds-py==0.18.1
+rsa==4.9
+ruff==0.4.7
+safetensors==0.4.3
+scenedetect==0.6.3
+scikit-image==0.23.2
+scipy==1.12.0
+semantic-version==2.10.0
+sgmllib3k==1.0.0
+shapely==2.0.4
+shellingham==1.5.4
+simple-websocket==1.0.0
+simplejson==3.19.2
+six==1.16.0
+sniffio==1.3.1
+sortedcontainers==2.4.0
+soupsieve==2.5
+SpeechRecognition==3.10.4
+stack-data==0.6.3
+starlette==0.32.0.post1
+sympy==1.12
+tenacity==8.2.3
+termcolor==2.4.0
+tifffile==2024.5.22
+tiktoken==0.4.0
+timm==1.0.3
+tokenizers==0.19.1
+tomli==2.0.1
+tomlkit==0.12.0
+toolz==0.12.1
+torch==2.1.2+cu118
+torchvision==0.16.2+cu118
+tqdm==4.66.2
+traitlets==5.14.3
+transformers==4.41.2
+typer==0.12.3
+typer-config==1.4.0
+typing_extensions==4.10.0
+tzdata==2024.1
+tzlocal==5.2
+ujson==5.9.0
+uritemplate==4.1.1
+urllib3==2.2.1
+utility==1.0
+uvicorn==0.29.0
+virtualenv==20.26.2
+visualdl==2.5.3
+watchfiles==0.21.0
+wcwidth==0.2.13
+web.py==0.62
+websocket-client==1.2.0
+websockets==11.0.3
+wechatpy==1.8.18
+Werkzeug==3.0.3
+wikipedia==1.4.0
+win32-setctime==1.1.0
+wolframalpha==5.0.0
+wsproto==1.2.0
+xlrd==2.0.1
+xmltodict==0.13.0
+xxhash==3.4.1
+yacs==0.1.8
+yapf==0.40.2
+yarl==1.9.4
+zhipuai==2.1.0.20240521
+zipp==3.18.1
+zstandard==0.22.0
diff --git a/src/api/discordApi.js b/src/api/discordApi.js
index 467517c..31728f3 100644
--- a/src/api/discordApi.js
+++ b/src/api/discordApi.js
@@ -87,15 +87,7 @@ export class DiscordAPI {
if (typeof res_data == "string") {
res_data = JSON.parse(res_data);
}
- if (res_data && res_data.code != 1) {
- if (res_data.message) {
- throw new Error(res_data.message);
- } else if (res_data.description) {
- throw new Error(res_data.description)
- } else {
- throw new Error("未知错误,可联系管理员排查");
- }
- }
+ // 直接返回,错误信息外面判断
return res_data;
} catch (error) {
throw error;
diff --git a/src/define/define_string.js b/src/define/define_string.js
index 61761c9..64b1bda 100644
--- a/src/define/define_string.js
+++ b/src/define/define_string.js
@@ -6,6 +6,7 @@ export const DEFINE_STRING = {
GET_DEFINE_CONFIG_JSON_BY_PROPERTY: "GET_DEFINE_CONFIG_JSON_BY_PROPERTY",
GET_IMAGE_GENERATE_CATEGORY: "GET_IMAGE_GENERATE_CATEGORY",
SHOW_MAIN_NOTIFICATION: "SHOW_MAIN_NOTIFICATION",
+ SHOW_GLOABAL_MESSAGE: "SHOW_GLOABAL_MESSAGE",
CHECK_MACHINE_ID: "CHECK_MACHINE_ID",
GET_CUSTOMIZE_GPT_PROMPT: "GET_CUSTOMIZE_GPT_PROMPT",
GENERATE_GPT_EXAMPLE_OUT: "GENERATE_GPT_EXAMPLE_OUT",
@@ -159,7 +160,9 @@ export const DEFINE_STRING = {
GET_GENERATED_MJ_IMAGE_AND_SPLIT: "GET_GENERATED_MJ_IMAGE_AND_SPLIT",
DOWNLOAD_IMAGE_URL_AND_SPLIT: "DOWNLOAD_IMAGE_URL_AND_SPLIT",
GET_MJ_IMAGE_SCALE: 'GET_MJ_IMAGE_SCALE',
- GET_MJ_IMAGE_ROBOT_MODEL: "GET_MJ_IMAGE_ROBOT_MODEL"
+ GET_MJ_IMAGE_ROBOT_MODEL: "GET_MJ_IMAGE_ROBOT_MODEL",
+ MACTH_USER_RETURN: "MACTH_USER_RETURN",
+ AUTO_MATCH_USER: "AUTO_MATCH_USER",
},
DISCORD: {
OPERATE_REFRASH_DISCORD_URL: "OPERATE_REFRASH_DISCORD_URL",
@@ -188,5 +191,15 @@ export const DEFINE_STRING = {
},
SYSTEM: {
OPEN_FILE: "OPEN_FILE",
+ },
+ SETTING: {
+ GET_DATA_BY_TYPE_AND_PROPERTY: "GET_DATA_BY_TYPE_AND_PROPERTY",
+ SAVE_DATA_BY_TYPE_AND_PROPERTY: "SAVE_DATA_BY_TYPE_AND_PROPERTY",
+ DELETE_DATA_BY_TYPE_AND_PROPERTY: "DELETE_DATA_BY_TYPE_AND_PROPERTY",
+ },
+ PROMPT: {
+ GET_SORT_OPTIONS: "GET_SORT_OPTIONS",
+ SAVE_PROMPT_SORT_DATA: "SAVE_PROMPT_SORT_DATA",
+ GET_PROMPT_SORT_DATA: "GET_PROMPT_SORT_DATA"
}
}
\ No newline at end of file
diff --git a/src/define/logger_define.js b/src/define/logger_define.js
index da291df..effea38 100644
--- a/src/define/logger_define.js
+++ b/src/define/logger_define.js
@@ -1,3 +1,15 @@
export const LOGGER_DEFINE = {
+
REMOVE_WATERMARK: "去除水印",
+ ORIGINAL_AUTO_MATCH_USER: "原创自动匹配用户",
+
+ PROMPT: {
+ GET_PROMPT_SORT_OPTIONS: "获取所有的排序选项",
+ SAVE_PROMPT_SORT_DATA: "保存提示词排序的数据",
+ GET_PROMPT_SORT_DATA: "获取提示词排序的数据"
+ },
+
+ GLOBAL: {
+ PARAM_ERROR: "参数错误",
+ }
}
\ No newline at end of file
diff --git a/src/define/setting/dynamicSetting.js b/src/define/setting/dynamicSetting.js
index 2e523ee..1570b0e 100644
--- a/src/define/setting/dynamicSetting.js
+++ b/src/define/setting/dynamicSetting.js
@@ -2,6 +2,7 @@
let fspromises = require('fs').promises;
import { get, cloneDeep } from 'lodash';
import { define } from '../define';
+import { errorMessage } from '../../main/generalTools';
export class DynamicSetting {
constructor(global) {
@@ -114,6 +115,71 @@ export class DynamicSetting {
throw error;
}
}
+}
+// 初始化一个对象
+let dynamic = new DynamicSetting(global);
+/**
+ * 将传入的数据和当前的数据进行拼接返回,判断类型
+ * @param {*} value
+ */
+export async function GetDataByTypeAndProperty(value) {
+ try {
+ // 判断value的类型是不是string
+ if (typeof value == "string") {
+ value = JSON.parse(value);
+ }
+ // 判断必要的数据是不是存在
+ if (!value.mainType || !value.property) {
+ throw new Error("传入的数据不完整");
+ }
+ value.defaultData = value.defaultData ? value.defaultData : [];
+ let res = await dynamic.getDataByTypeAndProperty('dynamic', value.mainType, value.property, [], []);
+ return res;
+
+ } catch (error) {
+ return errorMessage(error.toString());
+ }
+
+}
+
+/**
+ * 保存数据,注意,这里不能传递回调函数
+ * @param {*} value
+ */
+export async function SaveDataByTypeAndProperty(value) {
+ try {
+ if (typeof value == "string") {
+ value = JSON.parse(value);
+ }
+ // 判断必要的数据是不是存在
+ if (!value.mainType || !value.property || !value.data) {
+ throw new Error("传入的数据不完整");
+ }
+ let res = await dynamic.saveDataByTypeAndProperty(value.data, value.mainType, value.property, null);
+ return res;
+ } catch (error) {
+ return errorMessage(error.toString());
+ }
+}
+
+/**
+ * 删除数据
+ * @param {*} value
+ */
+export async function DeleteDataByTypeAndProperty(value) {
+ try {
+ if (typeof value == "string") {
+ value = JSON.parse(value);
+ }
+ // 判断必要的数据是不是存在
+ if (!value.id || !value.mainType || !value.property) {
+ throw new Error("传入的数据不完整");
+ }
+ let res = await dynamic.deleteDataByTypeAndProperty(value.id, value.mainType, value.property);
+ return res;
+ } catch (error) {
+ return errorMessage(error.toString());
+ }
}
\ No newline at end of file
diff --git a/src/define/setting/imageSetting.js b/src/define/setting/imageSetting.js
index 2eefdb4..e239128 100644
--- a/src/define/setting/imageSetting.js
+++ b/src/define/setting/imageSetting.js
@@ -214,8 +214,8 @@ export const ImageSetting = {
* @param {*} value
* 0 define中的指定属性(指定的配置文件)
* 1 要获取的什么属性信息 property,property 为null,赶回当前配置文件的所有数据
- * 2 是不是要校验属性不存在
- * 3 属性没有找到的默认值
+ * 2 要写入的值
+ * 3 是不是要校验属性不存在
*/
async SaveDefineConfigJsonByProperty(value) {
try {
diff --git a/src/main/IPCEvent/index.js b/src/main/IPCEvent/index.js
new file mode 100644
index 0000000..1fe1677
--- /dev/null
+++ b/src/main/IPCEvent/index.js
@@ -0,0 +1,32 @@
+import { PromptIpc } from "./promptIpc"
+import { SettingIpc } from './settingIpc.js'
+import { ImageGenerateIpc } from './imageGenerateIpc.js'
+import { WritingIpc } from './writingIpc.js'
+import { VideoGenerateIpc } from './videoGenerateIpc'
+import { TranslateIpc } from './translateIpc.js'
+import { GptIpc } from './gptIpc.js'
+import { MjIpc } from './mjIpc.js'
+import { OriginalImageGenerateIpc } from './originalImageGenerateIpc'
+import { SdIpc } from './sdIpc.js'
+import { MainIpc } from './mainIpc.js'
+import { GlobalIpc } from "./globalIpc.js";
+import { ImageIpc } from "./imageIpc.js";
+import { SystemIpc } from "./system.js";
+
+export function RegisterIpc(createWindow) {
+ PromptIpc()
+ SettingIpc();
+ ImageGenerateIpc();
+ WritingIpc();
+ VideoGenerateIpc();
+ TranslateIpc();
+ GptIpc();
+ SdIpc();
+ MjIpc();
+ MainIpc(createWindow);
+ OriginalImageGenerateIpc();
+ GlobalIpc();
+ ImageIpc();
+ SystemIpc();
+}
+
diff --git a/src/main/IPCEvent/mjIpc.js b/src/main/IPCEvent/mjIpc.js
index c08092d..f92c720 100644
--- a/src/main/IPCEvent/mjIpc.js
+++ b/src/main/IPCEvent/mjIpc.js
@@ -63,6 +63,9 @@ function MjIpc() {
// 获取所有的MJ生图模型
ipcMain.handle(DEFINE_STRING.MJ.GET_MJ_IMAGE_ROBOT_MODEL, async (event) => await mjSimple.GetMJImageRobotModel());
+ // 自动匹配用户表标签
+ ipcMain.handle(DEFINE_STRING.MJ.AUTO_MATCH_USER, async (event, value) => await mJOriginalImageGenerate.AutoMatchUser(value));
+
/**
* 监听DISCORD界面创建消息,并修改数据
*/
diff --git a/src/main/IPCEvent/promptIpc.js b/src/main/IPCEvent/promptIpc.js
new file mode 100644
index 0000000..0cce8a8
--- /dev/null
+++ b/src/main/IPCEvent/promptIpc.js
@@ -0,0 +1,18 @@
+import { ipcMain } from "electron";
+import { DEFINE_STRING } from '../../define/define_string'
+import { Prompt } from "../Public/Prompt";
+let prompt = new Prompt();
+
+function PromptIpc() {
+ // 获取所有的排序选项
+ ipcMain.handle(DEFINE_STRING.PROMPT.GET_SORT_OPTIONS, (event) => prompt.GetPromptSortOptions());
+
+ // 保存提示词排序数据
+ ipcMain.handle(DEFINE_STRING.PROMPT.SAVE_PROMPT_SORT_DATA, (event, value) => prompt.SavePromptSort(value));
+
+ // 获取已经保存的提示词数据
+ ipcMain.handle(DEFINE_STRING.PROMPT.GET_PROMPT_SORT_DATA, (event) => prompt.GetPromptSort())
+}
+export {
+ PromptIpc
+}
\ No newline at end of file
diff --git a/src/main/IPCEvent/settingIpc.js b/src/main/IPCEvent/settingIpc.js
index 2461f43..5589912 100644
--- a/src/main/IPCEvent/settingIpc.js
+++ b/src/main/IPCEvent/settingIpc.js
@@ -2,11 +2,13 @@ const {
ipcMain, app
} = require("electron")
import { DEFINE_STRING } from '../../define/define_string'
+import { GetDataByTypeAndProperty, SaveDataByTypeAndProperty, DeleteDataByTypeAndProperty } from '../../define/setting/dynamicSetting';
import {
Setting
} from '../setting/setting'
let setting = new Setting(global);
+
async function SettingIpc() {
// 获取背景音乐配置列表
@@ -65,6 +67,21 @@ async function SettingIpc() {
// // 保存指定的配置文件里面指定的属性的数据
ipcMain.handle(DEFINE_STRING.SAVE_DEFINE_CONFIG_JSON_BY_PROPERTY, async (event, value) => await setting.SaveDefineConfigJsonByProperty(value))
+
+
+ //#region 动态设置(只是动态设置)
+
+ // 获取动态配置的的指定主分类,指定的属性的数据(只是获取动态的,type定死了dynamic)
+ ipcMain.handle(DEFINE_STRING.SETTING.GET_DATA_BY_TYPE_AND_PROPERTY, async (event, value) => await GetDataByTypeAndProperty(value));
+
+ // 保存动态配置的的指定主分类,指定的属性的数据
+ ipcMain.handle(DEFINE_STRING.SETTING.SAVE_DATA_BY_TYPE_AND_PROPERTY, async (event, value) => await SaveDataByTypeAndProperty(value));
+
+ // 删除动态配置的的指定主分类,指定的属性的数据
+ ipcMain.handle(DEFINE_STRING.SETTING.DELETE_DATA_BY_TYPE_AND_PROPERTY, async (event, value) => await DeleteDataByTypeAndProperty(value));
+
+ //#endregion
+
}
export {
diff --git a/src/main/Original/MJOriginalImageGenerate.js b/src/main/Original/MJOriginalImageGenerate.js
index bbeb19e..138a9b7 100644
--- a/src/main/Original/MJOriginalImageGenerate.js
+++ b/src/main/Original/MJOriginalImageGenerate.js
@@ -8,11 +8,14 @@ import { Tools } from "../tools";
import path from 'path'
import sharp from 'sharp'
import { define } from "../../define/define";
-import { AwesomeRegx } from "awesome-js";
+import { AwesomeHelp } from "awesome-js";
import { checkStringValueAddSuffix, errorMessage, successMessage } from "../generalTools";
import { ImageSetting } from "../../define/setting/imageSetting";
import { DiscordAPI } from "../../api/discordApi";
import { GPT } from "../Public/GPT";
+import { TagDefine } from "../../define/tagDefine";
+import { cloneDeep } from "lodash";
+import { LOGGER_DEFINE } from "../../define/logger_define";
const { v4: uuidv4 } = require('uuid');
/**
@@ -26,15 +29,122 @@ export class MJOriginalImageGenerate {
this.tools = new Tools();
this.discordAPI = new DiscordAPI();
this.gpt = new GPT(global);
+ this.tagDefine = new TagDefine(global);
}
/**
* 返回指定的人物到前端
* @param {*} data
*/
- sendChangeMessage(data) {
- this.global.newWindow[0].win.webContents.send(DEFINE_STRING.DISCORD.MAIN_DISCORD_MESSAGE_CHANGE, data);
+ sendChangeMessage(data, message_name = DEFINE_STRING.DISCORD.MAIN_DISCORD_MESSAGE_CHANGE) {
+ this.global.newWindow[0].win.webContents.send(message_name, data);
}
+ /**
+ * 通过文本自动匹配数据
+ * @param {*} value
+ */
+ async AutoMatchUser(value) {
+ try {
+ value = JSON.parse(value);
+ // 获取所有的角色数据,包括别名
+ // 获取所有的角色数据
+ let character_tags = await this.tagDefine.getTagDataByTypeAndProperty("dynamic", "character_tags");
+ if (character_tags.code == 0) {
+ return errorMessage("获取角色数据错误,错误信息如下:" + character_tags.message, LOGGER_DEFINE.ORIGINAL_AUTO_MATCH_USER)
+ }
+ character_tags = character_tags.data;
+ if (character_tags.length == 0) {
+ return errorMessage("请先添加角色数据", LOGGER_DEFINE.ORIGINAL_AUTO_MATCH_USER)
+ }
+ let character_tags_data = [];
+ for (let i = 0; i < character_tags.length; i++) {
+ let item = character_tags[i];
+ // 这边还要判断是不是显示(只有显示的才hi自动匹配)
+ if (!item.hasOwnProperty("isShow") || !item.isShow) {
+ continue;
+ }
+
+ let temp_name = [item.label];
+ // 判断当前的数是不是存在别名
+ if (item.children && item.children.length > 0) {
+ for (let j = 0; j < item.children.length; j++) {
+ const element = item.children[j];
+ temp_name.push(element.label);
+ }
+ }
+ character_tags_data.push({
+ key: item.key,
+ value: item.value,
+ names: temp_name
+ })
+ }
+ if (character_tags_data.length == 0) {
+ return errorMessage("当前没有显示的角色数据,请先选择哪些是要显示的角色数据", LOGGER_DEFINE.ORIGINAL_AUTO_MATCH_USER)
+ }
+
+
+ for (let i = 0; i < value.length; i++) {
+ const element = value[i];
+
+ let res_data = {
+ code: 1,
+ id: element.id, // 当前 data 的ID
+ match_character: [],
+ }
+
+ // 获取当前的字幕数据
+ let temp_sub = [];
+ for (let j = 0; element.suValue && j < element.suValue.length; j++) {
+ const element = array[j];
+ temp_sub.push(element.srt_value);
+ }
+ let word = "";
+ if (temp_sub.length == 0) {
+ word = element.after_gpt;
+ } else {
+ word = temp_sub.join(",");
+ }
+
+ let match_keys = [];
+
+ // 开始循环判断,只要又一个满足就跳出新婚换
+ for (let j = 0; j < character_tags_data.length; j++) {
+ const item = character_tags_data[j];
+ let names = AwesomeHelp.makeSensitiveMap(item.names);
+ // 开始判断
+ let name_res = AwesomeHelp.checkSensitiveWord(word, false, names);
+ if (name_res.size > 0) {
+ match_keys.push(item.key);
+ }
+ }
+
+ // 判断是不是又匹配到的数据
+ if (match_keys.length > 0) {
+ // 进行数据的处理,通过对应的key,获取对应的数据,将所有的数进行返回
+ for (let i = 0; i < match_keys.length; i++) {
+ const item = match_keys[i];
+ let index = character_tags.findIndex(x => x.key == item);
+ if (index == -1) {
+ continue;
+ }
+ let temp_item_data = cloneDeep(character_tags[index]);
+ if (temp_item_data.children) {
+ delete temp_item_data.children
+ }
+ res_data.match_character.push(temp_item_data)
+ }
+ }
+
+ // 开始往前端传递数据
+ this.sendChangeMessage(res_data, DEFINE_STRING.MJ.MACTH_USER_RETURN);
+ }
+ return successMessage(null, "人物标签自动匹配完成", LOGGER_DEFINE.ORIGINAL_AUTO_MATCH_USER)
+ } catch (error) {
+ return errorMessage("通过文本自动匹配数据错误,错误信息如下:" + error.message, LOGGER_DEFINE.ORIGINAL_AUTO_MATCH_USER)
+ }
+ }
+
+
/**
* 初始化MJ设置
*/
@@ -290,6 +400,11 @@ export class MJOriginalImageGenerate {
"Authorization": mjSetting.api_key
}
res = await this.discordAPI.mjApiImagine(imagine_url, data, headers);
+
+ if (res.code == 24) {
+ throw new Error("提示词包含敏感词,请修改后重试");
+ }
+
} else if (imagine_url.includes("api.ephone.ai")) {
// ePhoneAPI
let headers = {
@@ -306,6 +421,15 @@ export class MJOriginalImageGenerate {
}
res = await this.discordAPI.mjApiImagine(imagine_url, data, headers);
}
+
+ // 错误检查
+ if (res.code == 23) {
+ throw new Error("生图队列已满,请稍后尝试");
+ }
+
+ if (res.code != 1 && res.code != 22) {
+ throw new Error("未知错误,可联系管理员排查" + res.description);
+ }
// 创建成功,开始下一个
this.sendChangeMessage({
code: 1,
@@ -406,7 +530,6 @@ export class MJOriginalImageGenerate {
}
let style_ids = await this.pm.GetConfigJson(JSON.stringify(["image_style", []]), false);
- let image_styles = await ImageStyleDefine.getImageStyleStringByIds(style_ids.data);
// 替换风格的逻辑
let current_task = null;
@@ -419,7 +542,7 @@ export class MJOriginalImageGenerate {
// 拼接提示词
// 图生图的链接
// 获取风格词 + 命令后缀
- let prompt = " " + image_styles + old_prompt + (mjSetting.image_suffix ? mjSetting.image_suffix : "");
+ let prompt = old_prompt + (mjSetting.image_suffix ? mjSetting.image_suffix : "");
// 判断当前生图模式
let request_model = mjSetting.request_model
diff --git a/src/main/Original/OriginalImageGenerate.js b/src/main/Original/OriginalImageGenerate.js
index 3957f3d..a34b063 100644
--- a/src/main/Original/OriginalImageGenerate.js
+++ b/src/main/Original/OriginalImageGenerate.js
@@ -62,13 +62,12 @@ export class OriginalImageGenerate {
let seed = sd_setting.setting.seed;
let style_ids = await this.pm.GetConfigJson(JSON.stringify(["image_style", []]), false);
- let image_styles = await ImageStyleDefine.getImageStyleStringByIds(style_ids.data);
for (let i = 0; i < data.length; i++) {
const element = data[i];
let adetailer = element.adetailer;
let imageJson = JSON.parse(await fspromises.readFile(path.normalize(element.prompt_json), 'utf-8'));
- let prompt = sd_setting.webui.prompt + image_styles + ',' + element.prompt;
+ let prompt = sd_setting.webui.prompt + ',' + element.prompt;
// 添加前缀
if (prefix_prompt) {
prompt = prefix_prompt + ',' + prompt;
diff --git a/src/main/Public/Image.js b/src/main/Public/Image.js
index 29d450b..4f3ee3d 100644
--- a/src/main/Public/Image.js
+++ b/src/main/Public/Image.js
@@ -3,7 +3,7 @@ import path, { resolve } from "path";
import { Tools } from "../tools";
import fs from "fs";
import { ImageSetting } from "../../define/setting/imageSetting";
-import { isEmpty, reject } from "lodash";
+import { isEmpty } from "lodash";
import { basicApi } from "../../api/apiBasic";
import sharp from 'sharp';
import { file, image } from "../../define/Tools";
diff --git a/src/main/Public/Prompt.js b/src/main/Public/Prompt.js
new file mode 100644
index 0000000..16d09bc
--- /dev/null
+++ b/src/main/Public/Prompt.js
@@ -0,0 +1,82 @@
+import { errorMessage, successMessage } from "../generalTools";
+import { LOGGER_DEFINE } from '../../define/logger_define'
+import { Setting } from "../setting/setting";
+
+export class Prompt {
+ constructor() {
+ this.setting = new Setting(global);
+ }
+
+ /**
+ * 获取所有的排序选项
+ */
+ GetPromptSortOptions() {
+ return successMessage([
+ {
+ label: '人物',
+ value: 'character'
+ }, {
+ label: '场景',
+ value: 'scene'
+ }, {
+ label: '提示词',
+ value: 'prompt'
+ }, {
+ label: '风格',
+ value: 'style'
+ }
+ ], null, LOGGER_DEFINE.PROMPT.GET_PROMPT_SORT_OPTIONS);
+ }
+
+
+ /**
+ * 保存SD排序的选项
+ * @param {*} value
+ */
+ async SavePromptSort(value) {
+ try {
+ // 将当前数据保存
+ await this.setting.SaveDefineConfigJsonByProperty(JSON.stringify(['img_base', 'prompt_sort', value]));
+ return successMessage(null, "保存提示词排序顺序成功", LOGGER_DEFINE.PROMPT.SAVE_PROMPT_SORT_DATA);
+
+ } catch (error) {
+ return errorMessage(error.toString(), LOGGER_DEFINE.PROMPT.SAVE_PROMPT_SORT_DATA);
+ }
+ }
+
+ /**
+ * 获取当前的
+ */
+ async GetPromptSort() {
+ try {
+ let res = await this.setting.GetDefineConfigJsonByProperty(JSON.stringify(['img_base', 'prompt_sort', false, []]))
+ if (res.code == 0) {
+ throw new Error(res.message);
+ }
+ res = res.data;
+ if (res && res.length == 0) {
+ res = [
+ {
+ label: '风格',
+ value: 'style'
+ },
+ {
+ label: '人物',
+ value: 'character'
+ },
+ {
+ label: '场景',
+ value: 'scene'
+ },
+ {
+ label: '提示词',
+ value: 'prompt'
+ }
+ ]
+ }
+ return successMessage(res, "获取数据成功", LOGGER_DEFINE.PROMPT.GET_PROMPT_SORT_DATA)
+ } catch (error) {
+ return errorMessage(error.toString(), LOGGER_DEFINE.PROMPT.GET_PROMPT_SORT_DATA)
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/Public/SD.js b/src/main/Public/SD.js
index 36b8399..b2b7aff 100644
--- a/src/main/Public/SD.js
+++ b/src/main/Public/SD.js
@@ -110,7 +110,7 @@ export class SD {
return successMessage(data);
} catch (error) {
- return errorMessage("加载数据失败,错误信息如下:" +error.toString());
+ return errorMessage("加载数据失败,错误信息如下:" + error.toString());
}
}
diff --git a/src/main/backPrompt/imageGenerate.js b/src/main/backPrompt/imageGenerate.js
index fecbbff..448df49 100644
--- a/src/main/backPrompt/imageGenerate.js
+++ b/src/main/backPrompt/imageGenerate.js
@@ -13,6 +13,8 @@ const execAsync = util.promisify(exec);
const { v4: uuidv4 } = require('uuid'); // 引入UUID库来生成唯一标识符
let fspromises = require("fs").promises;
import { ImageSetting } from "../../define/setting/imageSetting";
+import { errorMessage } from "../generalTools";
+import { LOGGER_DEFINE } from "../../define/logger_define";
export class ImageGenerate {
@@ -339,7 +341,7 @@ export class ImageGenerate {
// 监听总批次完成
this.global.requestQuene.setBatchCompletionCallback(batch, (failedTasks) => {
- debugger
+
if (failedTasks.length > 0) {
let message = `
批次生成任务都已完成。
@@ -489,16 +491,10 @@ export class ImageGenerate {
}
else {
- return {
- code: 0,
- message: "参数错误"
- }
+ return errorMessage("参数错误", LOGGER_DEFINE.GLOBAL.PARAM_ERROR)
}
} catch (error) {
- return {
- code: 0,
- message: error.toString()
- }
+ return errorMessage(error.toString(), "imageGenerate_DownloadImageFile");
}
}
}
\ No newline at end of file
diff --git a/src/main/backPrompt/videoGenerate.js b/src/main/backPrompt/videoGenerate.js
index b5b9aa1..a0b7c97 100644
--- a/src/main/backPrompt/videoGenerate.js
+++ b/src/main/backPrompt/videoGenerate.js
@@ -364,8 +364,12 @@ export class VideoGenerate {
await fspromises.writeFile(project_config_path, JSON.stringify(obj));
// let task_list = JSON.parse(await fspromises.readFile(path.join(this.global.config.project_path,'scripts/task_')));
let scriptPath = path.join(define.scripts_path, 'Lai.exe');
+ let gpu = this.global.gpu.type;
+ if (video_config.libx264) {
+ gpu = "OTHER"
+ }
// 执行生成图片的脚本
- let script = `cd "${define.scripts_path}" && "${scriptPath}" -c "${project_config_path.replaceAll('\\', '/')}" "${this.global.gpu.type}"`;
+ let script = `cd "${define.scripts_path}" && "${scriptPath}" -c "${project_config_path.replaceAll('\\', '/')}" "${gpu}"`;
const output = await execAsync(script, { maxBuffer: 1024 * 1024 * 10, encoding: 'utf-8' });
if (output.stderr != '') {
obj.status = "video_error";
diff --git a/src/main/discord/discordScript.js b/src/main/discord/discordScript.js
index fdb4b6b..6c75f3f 100644
--- a/src/main/discord/discordScript.js
+++ b/src/main/discord/discordScript.js
@@ -382,7 +382,7 @@ function startObserving() {
if (window.observer) {
return;
}
- debugger
+
// 没有开始监听
MutationObserverElement();
console.log("开始监听")
diff --git a/src/main/discord/discordSimple.js b/src/main/discord/discordSimple.js
index 35ba607..feb05bf 100644
--- a/src/main/discord/discordSimple.js
+++ b/src/main/discord/discordSimple.js
@@ -507,7 +507,7 @@ export class DiscordSimple {
if (window.observer) {
return;
}
- debugger
+
// 没有开始监听
MutationObserverElement();
console.log("开始监听")
diff --git a/src/main/func.js b/src/main/func.js
index 02c1a91..4592d4d 100644
--- a/src/main/func.js
+++ b/src/main/func.js
@@ -1052,7 +1052,13 @@ async function StartStoryboarding(value) {
global.newWindow[0].win.webContents.send(DEFINE_STRING.GET_FRAME_RETUN, { code: 1, data: "正在调用进程。请勿关闭程序" })
let cc = `${path.join(define.scripts_path, 'Lai.exe')}`;
- let child = spawn(cc, ["-a", value.video_path, frame_path, input_path, value.sensitivity, global.gpu.type], { encoding: 'utf-8' });
+ // 获取生成视频设置
+ let video_config = JSON.parse(await fspromises.readFile(define.video_config, 'utf-8'));
+ let gpu = global.gpu.type;
+ if (video_config.libx264) {
+ gpu = "OTHER";
+ }
+ let child = spawn(cc, ["-a", value.video_path, frame_path, input_path, value.sensitivity, gpu], { encoding: 'utf-8' });
child.on('error', console.error)
child.stdout.on('data', (data) => {
console.log(data.toString());
diff --git a/src/main/generalTools.js b/src/main/generalTools.js
index a3df91f..e17a38e 100644
--- a/src/main/generalTools.js
+++ b/src/main/generalTools.js
@@ -72,8 +72,8 @@ function checkStringValueDeletePrefix(value, prefix) {
* @returns
*/
function successMessage(data, message = null, service = null) {
- if (service && message) {
- global.logger.info(service, `成功返回数据`);
+ if (service) {
+ global.logger.info(service, message ? message : '成功返回数据');
}
return {
code: 1,
@@ -89,8 +89,8 @@ function successMessage(data, message = null, service = null) {
* @returns
*/
function errorMessage(message, service = null) {
- if (service && message) {
- global.logger.error(service, message);
+ if (service) {
+ global.logger.error(service, message ? message : '未知报错,没有捕获的错误');
}
return {
code: 0,
diff --git a/src/main/index.js b/src/main/index.js
index a4c4492..2a421da 100644
--- a/src/main/index.js
+++ b/src/main/index.js
@@ -18,22 +18,9 @@ import { Setting } from './setting/setting.js'
import { has, isEmpty } from 'lodash'
// ipc
-import { SettingIpc } from './IPCEvent/settingIpc.js'
-import { ImageGenerateIpc } from './IPCEvent/imageGenerateIpc.js'
-import { WritingIpc } from './IPCEvent/writingIpc.js'
-import { VideoGenerateIpc } from './IPCEvent/videoGenerateIpc'
-import { TranslateIpc } from './IPCEvent/translateIpc.js'
-import { GptIpc } from './IPCEvent/gptIpc.js'
-import { MjIpc } from './IPCEvent/mjIpc.js'
-import { OriginalImageGenerateIpc } from './IPCEvent/originalImageGenerateIpc'
-import { SdIpc } from './IPCEvent/sdIpc.js'
import { DiscordIpc, RemoveDiscordIpc } from './IPCEvent/discordIpc.js'
-import { MainIpc } from './IPCEvent/mainIpc.js'
-import { GlobalIpc } from "./IPCEvent/globalIpc.js";
-import { ImageIpc } from "./IPCEvent/imageIpc.js";
-import { SystemIpc } from "./IPCEvent/system.js";
-import { system } from "systeminformation";
import { Logger } from "./logger.js";
+import { RegisterIpc } from "./IPCEvent/index.js";
let tools = new Tools();
let imageGenerate = new ImageGenerate(global);
@@ -226,20 +213,7 @@ app.on('window-all-closed', () => {
}
})
-
-SettingIpc();
-ImageGenerateIpc();
-WritingIpc();
-VideoGenerateIpc();
-TranslateIpc();
-GptIpc();
-SdIpc();
-MjIpc();
-MainIpc(createWindow);
-OriginalImageGenerateIpc();
-GlobalIpc();
-ImageIpc();
-SystemIpc();
+RegisterIpc(createWindow);
ipcMain.handle('dark-mode:toggle', (event, value) => {
diff --git a/src/main/setting/setting.js b/src/main/setting/setting.js
index ae8d201..2bf2a9d 100644
--- a/src/main/setting/setting.js
+++ b/src/main/setting/setting.js
@@ -317,7 +317,11 @@ export class Setting {
/**
* 获取指定的配置文件里面指定的属性的数据
- * @param {*} value
+ * @param {*} value 执行方法必要的信息
+ * 0 define中的指定属性(指定的配置文件)
+ * 1 要获取的什么属性信息 property,property 为null,赶回当前配置文件的所有数据
+ * 2 是不是要校验属性不存在
+ * 3 属性没有找到的默认值
*/
async GetDefineConfigJsonByProperty(value) {
return ImageSetting.GetDefineConfigJsonByProperty(value);
@@ -326,6 +330,11 @@ export class Setting {
/**
* 保存指定的配置文件里面指定的属性的数据
+ * @param {*} value
+ * 0 define中的指定属性(指定的配置文件)
+ * 1 要获取的什么属性信息 property,property 为null,赶回当前配置文件的所有数据
+ * 2 要写入的值
+ * 3 是不是要校验属性不存在
*/
async SaveDefineConfigJsonByProperty(value) {
return ImageSetting.SaveDefineConfigJsonByProperty(value);
diff --git a/src/preload/index.js b/src/preload/index.js
index 8c0a124..c2afc12 100644
--- a/src/preload/index.js
+++ b/src/preload/index.js
@@ -6,6 +6,8 @@ import { mj } from './mj.js';
import { sd } from './sd.js';
import { img } from './img.js';
import { system } from './system.js';
+import { setting } from './setting.js'
+import { prompt } from './prompt.js';
// Custom APIs for renderer
let events = [];
@@ -395,19 +397,23 @@ const api = {
// 打开全局通知框
showGlobalNotificationDialog: (value) => ipcRenderer.send(DEFINE_STRING.SHOW_MAIN_NOTIFICATION, value),
+ // 打开全局的消息框
+ showGlobalMessage: (value) => ipcRenderer.send(DEFINE_STRING.SHOW_GLOABAL_MESSAGE, value),
+
// 知道文件地址,获取文件base64编码
GetFileBase64: async (value, callback) => callback(await ipcRenderer.invoke(DEFINE_STRING.GET_FILE_BASE64, value)),
+ // 打开调试控制台
OpenDevTools: () => ipcRenderer.send(DEFINE_STRING.OPEN_DEV_TOOLS),
+
+ // 打开调试控制台密码
OpenDevToolsPassword: async (value, callback) => callback(await ipcRenderer.invoke(DEFINE_STRING.OPEN_DEV_TOOLS_PASSWORD, value)),
}
-// Use `contextBridge` APIs to expose Electron APIs to
-// renderer only if context isolation is enabled, otherwise
-// just add to the DOM global.
if (process.contextIsolated) {
try {
+
contextBridge.exposeInMainWorld('electron', electronAPI)
contextBridge.exposeInMainWorld('api', api)
contextBridge.exposeInMainWorld('mj', mj)
@@ -415,6 +421,8 @@ if (process.contextIsolated) {
contextBridge.exposeInMainWorld("sd", sd)
contextBridge.exposeInMainWorld("img", img)
contextBridge.exposeInMainWorld("system", system)
+ contextBridge.exposeInMainWorld("setting", setting)
+ contextBridge.exposeInMainWorld("pmpt", prompt)
contextBridge.exposeInMainWorld('darkMode', {
toggle: (value) => ipcRenderer.invoke('dark-mode:toggle', value),
})
@@ -429,5 +437,7 @@ if (process.contextIsolated) {
window.sd = sd;
window.img = img;
window.system = system;
+ window.setting = setting;
+ window.pmpt = prompt;
}
diff --git a/src/preload/mj.js b/src/preload/mj.js
index 7ecb5b8..17d625f 100644
--- a/src/preload/mj.js
+++ b/src/preload/mj.js
@@ -47,6 +47,9 @@ const mj = {
// 获取所有的MJ生图模型
GetMJImageRobotModel: async (callback) => callback(await ipcRenderer.invoke(DEFINE_STRING.MJ.GET_MJ_IMAGE_ROBOT_MODEL)),
+
+ // 自动匹配用户
+ AutoMatchUser: async (value, callback) => callback(await ipcRenderer.invoke(DEFINE_STRING.MJ.AUTO_MATCH_USER, value)),
}
export {
diff --git a/src/preload/prompt.js b/src/preload/prompt.js
new file mode 100644
index 0000000..36770e2
--- /dev/null
+++ b/src/preload/prompt.js
@@ -0,0 +1,17 @@
+import { ipcRenderer } from "electron"
+import { DEFINE_STRING } from "../define/define_string"
+
+
+const prompt = {
+ // 获取所有的排序选项
+ GetPromptSortOptions: async (callback) => callback(await ipcRenderer.invoke(DEFINE_STRING.PROMPT.GET_SORT_OPTIONS)),
+
+ // 保存提示词排序数据
+ SavePromptSort: async (value, callback) => callback(await ipcRenderer.invoke(DEFINE_STRING.PROMPT.SAVE_PROMPT_SORT_DATA, value)),
+
+ // 获取提示词排序数据
+ GetPromptSort: async (callback) => callback(await ipcRenderer.invoke(DEFINE_STRING.PROMPT.GET_PROMPT_SORT_DATA))
+}
+export {
+ prompt
+}
\ No newline at end of file
diff --git a/src/preload/setting.js b/src/preload/setting.js
new file mode 100644
index 0000000..d79a08d
--- /dev/null
+++ b/src/preload/setting.js
@@ -0,0 +1,17 @@
+import { ipcRenderer } from "electron"
+import { DEFINE_STRING } from "../define/define_string"
+
+
+const setting = {
+ // 获取动态配置的的指定主分类,指定的属性的数据(只是获取动态的,type定死了dynamic)
+ GetDataByTypeAndProperty: async (value, callback) => callback(await ipcRenderer.invoke(DEFINE_STRING.SETTING.GET_DATA_BY_TYPE_AND_PROPERTY, value)),
+
+ // 保存动态配置的的指定主分类,指定的属性的数据
+ SaveDataByTypeAndProperty: async (value, callback) => callback(await ipcRenderer.invoke(DEFINE_STRING.SETTING.SAVE_DATA_BY_TYPE_AND_PROPERTY, value)),
+
+ // 删除动态配置的的指定主分类,指定的属性的数据
+ DeleteDataByTypeAndProperty: async (value, callback) => callback(await ipcRenderer.invoke(DEFINE_STRING.SETTING.DELETE_DATA_BY_TYPE_AND_PROPERTY, value)),
+}
+export {
+ setting
+}
\ No newline at end of file
diff --git a/src/renderer/src/App.vue b/src/renderer/src/App.vue
index 8fa699b..91a7b11 100644
--- a/src/renderer/src/App.vue
+++ b/src/renderer/src/App.vue
@@ -43,7 +43,7 @@ export default defineComponent({
javascript,
hljs,
darkTheme,
- themeData,
+ themeData
}
}
})
diff --git a/src/renderer/src/components/Backstep/BatchSaveImageSetting.vue b/src/renderer/src/components/Backstep/BatchSaveImageSetting.vue
index 52eb416..cbc2858 100644
--- a/src/renderer/src/components/Backstep/BatchSaveImageSetting.vue
+++ b/src/renderer/src/components/Backstep/BatchSaveImageSetting.vue
@@ -167,7 +167,7 @@ export default defineComponent({
* 另存图片的方法
*/
async function SaveImage() {
- debugger
+
if (isEmpty(save_setting.value.save_folder)) {
message.error("请选择手动保存的文件夹")
return
diff --git a/src/renderer/src/components/Backstep/CopyWriting.vue b/src/renderer/src/components/Backstep/CopyWriting.vue
index c1b70ed..9d55ffe 100644
--- a/src/renderer/src/components/Backstep/CopyWriting.vue
+++ b/src/renderer/src/components/Backstep/CopyWriting.vue
@@ -265,7 +265,7 @@ export default defineComponent({
// 初始化加载项目下面的分镜好的文案
// 并判断是不是有洗稿后的文件。一并加载
await window.api.GetProjectWord((value) => {
- debugger
+
data.value = value.data
})
@@ -358,7 +358,7 @@ export default defineComponent({
let itemIndex = row.subValue.findIndex((item) => item.id == itemId)
let thisIndex = data.value.findIndex((item) => item.id == row.id)
if (itemIndex < 0 && isM) {
- debugger
+
message.error('数据错误')
return
} else {
diff --git a/src/renderer/src/components/Backstep/GetFrame.vue b/src/renderer/src/components/Backstep/GetFrame.vue
index 6931770..ac9feb5 100644
--- a/src/renderer/src/components/Backstep/GetFrame.vue
+++ b/src/renderer/src/components/Backstep/GetFrame.vue
@@ -175,7 +175,7 @@ export default defineComponent({
*/
async function GetVideoFile() {
await window.api.SelectFile(['mp4'], (value) => {
- debugger
+
if (value.code == 0) {
message.error(value.message)
return
@@ -193,7 +193,7 @@ export default defineComponent({
message.error('选择分镜的视频地址')
return
}
- debugger
+
if (
toRaw(frameValue.value)
.video_path.split('.')
diff --git a/src/renderer/src/components/Backstep/OneKeyMatrix.vue b/src/renderer/src/components/Backstep/OneKeyMatrix.vue
index ec8172b..3bb7a60 100644
--- a/src/renderer/src/components/Backstep/OneKeyMatrix.vue
+++ b/src/renderer/src/components/Backstep/OneKeyMatrix.vue
@@ -244,14 +244,14 @@ export default defineComponent({
// 获取初始化数据(队列任务-这边不能添加)
await window.api.GetGenerateTaskList((value) => {
- debugger
+
console.log(value)
data.value = value.data.task_list
})
// 监听状态刷新事件
window.api.setEventListen([DEFINE_STRING.VIDEO_GENERATE_STATUS_REFRESH], (value) => {
- debugger
+
console.log(value)
let index = data.value.findIndex((item) => item.id == value.id)
if (index < 0) {
@@ -272,7 +272,7 @@ export default defineComponent({
async function AutoConditionCheck(e) {
e.preventDefault()
configRef.value?.validate(async (errors) => {
- debugger
+
if (errors) {
message.error('请检查必填字段')
return
@@ -301,7 +301,7 @@ export default defineComponent({
async function ActionTask(e) {
e.preventDefault()
configRef.value?.validate(async (errors) => {
- debugger
+
console.log(selectRowKeysRef.value)
if (selectRowKeysRef.value.length <= 0) {
message.error('请选择要操作的任务')
diff --git a/src/renderer/src/components/Backstep/PushBackPrompt.vue b/src/renderer/src/components/Backstep/PushBackPrompt.vue
index f595840..8490444 100644
--- a/src/renderer/src/components/Backstep/PushBackPrompt.vue
+++ b/src/renderer/src/components/Backstep/PushBackPrompt.vue
@@ -84,7 +84,7 @@ export default defineComponent({
*/
async function DeleteBadPrompt() {
await window.api.DeleteBadPrompt((value) => {
- debugger
+
console.log(value)
if (value.code == 0) {
message.error(value.message)
diff --git a/src/renderer/src/components/Backstep/ReGenerate.vue b/src/renderer/src/components/Backstep/ReGenerate.vue
index ceaa84c..4a4e0ff 100644
--- a/src/renderer/src/components/Backstep/ReGenerate.vue
+++ b/src/renderer/src/components/Backstep/ReGenerate.vue
@@ -128,7 +128,7 @@ export default defineComponent({
{
trigger: 'hover',
disabled: (() => {
- debugger
+
if (row.status == 'error') {
return false
} else {
@@ -246,7 +246,7 @@ export default defineComponent({
)
}
await window.api.GetConfigJson(JSON.stringify(['image_style', []]), async (value) => {
- debugger
+
if (value.code == 0) {
message.error(value.message)
return
@@ -266,7 +266,7 @@ export default defineComponent({
// 修改一个
window.api.setEventListen([DEFINE_STRING.IMAGE_TASK_STATUS_REFRESH], (value) => {
- debugger
+
console.log(value)
// 修改当前状态
let index = task_list_data.value.findIndex((item) => item.out_folder == value.out_folder)
@@ -295,7 +295,7 @@ export default defineComponent({
}
formValue.value.image_style_list = tmp_arr
await window.api.AddImageTask(toRaw(formValue.value), (value) => {
- debugger
+
if (value.code == 0) {
message.error(value.message)
return
@@ -364,7 +364,7 @@ export default defineComponent({
* 生成全部
*/
async function GenerateAllImage() {
- debugger
+
// 生成 对应的json 文件
await window.api.AddWebuiJson(async (value) => {
console.log(value)
@@ -407,7 +407,7 @@ export default defineComponent({
maskClosable: false,
onClose: async () => {
// 重新加载数据
- debugger
+
console.log(selectStyle.value)
let tmp_arr = []
for (let i = 0; i < selectStyle.value.length; i++) {
@@ -446,7 +446,7 @@ export default defineComponent({
async function RemoveImageTask(row) {
//`${task_list.out_folder}_${images[0]}`, batch, task_list.out_folder
// 停止当前行的生图任务
- debugger
+
console.log(row)
await getInitData()
// 判断该当前状态
diff --git a/src/renderer/src/components/Backstep/oneImageReDrwa.vue b/src/renderer/src/components/Backstep/oneImageReDrwa.vue
index 7cca218..cc90b33 100644
--- a/src/renderer/src/components/Backstep/oneImageReDrwa.vue
+++ b/src/renderer/src/components/Backstep/oneImageReDrwa.vue
@@ -578,7 +578,7 @@ export default defineComponent({
// 监听状态更新事件
window.api.setEventListen([DEFINE_STRING.VIDEO_GENERATE_STATUS_REFRESH], (value) => {
- debugger;
+
console.log(value)
// 修改当前状态
let index = data.value.findIndex(item => item.folder == value.out_folder);
diff --git a/src/renderer/src/components/Clip/AddDraft.vue b/src/renderer/src/components/Clip/AddDraft.vue
index b4980f5..e9afd8f 100644
--- a/src/renderer/src/components/Clip/AddDraft.vue
+++ b/src/renderer/src/components/Clip/AddDraft.vue
@@ -26,7 +26,7 @@ export default defineComponent({
onMounted(() => {
window.api.setEventListen([DEFINE_STRING.GET_FRAME_RETUN], (value) => {
- debugger;
+
code.value = code.value + "\n" + value.data;
})
})
diff --git a/src/renderer/src/components/Clip/AlignDraft.vue b/src/renderer/src/components/Clip/AlignDraft.vue
index c484da6..cff8cc7 100644
--- a/src/renderer/src/components/Clip/AlignDraft.vue
+++ b/src/renderer/src/components/Clip/AlignDraft.vue
@@ -77,7 +77,7 @@ export default defineComponent({
message.error("请输入分镜内容");
return;
}
- debugger;
+
// 文案内容
let text_value = inputValue.value.split("\n")
// 获取当前项目下面地所有草稿
diff --git a/src/renderer/src/components/Components/DynamicTagsSelect.vue b/src/renderer/src/components/Components/DynamicTagsSelect.vue
new file mode 100644
index 0000000..0668e35
--- /dev/null
+++ b/src/renderer/src/components/Components/DynamicTagsSelect.vue
@@ -0,0 +1,158 @@
+
+
+
+
+
+
+ 添加
+
+
+
+
+
+
+
+
+ 添加
+
+ 保存
+
+
+
+
+
+
diff --git a/src/renderer/src/components/Components/GenerateAllImages.vue b/src/renderer/src/components/Components/GenerateAllImages.vue
index b580198..81f2e5d 100644
--- a/src/renderer/src/components/Components/GenerateAllImages.vue
+++ b/src/renderer/src/components/Components/GenerateAllImages.vue
@@ -158,7 +158,7 @@ export default defineComponent({
},
setup(props) {
let message = useMessage();
- debugger;
+
let images = ref(
window.ImageInitData.filter((item) => item.id == window.currentImageId)[0]
.output_list
@@ -232,7 +232,7 @@ export default defineComponent({
window.api.setEventListen(
[DEFINE_STRING.REGENERATE_IMAGE_RETUN, window.id],
(value) => {
- debugger
+
if (value.type != 1) {
return;
}
@@ -267,7 +267,7 @@ export default defineComponent({
* 重绘图片
*/
async function ReGenerateImage(data) {
- debugger;
+
console.log(data);
let obj = {
id: data.id,
@@ -305,7 +305,7 @@ export default defineComponent({
* 获取上一组
*/
function GetLast() {
- debugger;
+
let index = window.ImageInitData.findIndex(
(item) => item.id == window.currentImageId
);
@@ -322,7 +322,7 @@ export default defineComponent({
* 获取下一组
*/
function GetNext() {
- debugger;
+
let index = window.ImageInitData.findIndex(
(item) => item.id === window.currentImageId
);
diff --git a/src/renderer/src/components/Components/ManageBadPrompt.vue b/src/renderer/src/components/Components/ManageBadPrompt.vue
index 3d45c9a..a78c398 100644
--- a/src/renderer/src/components/Components/ManageBadPrompt.vue
+++ b/src/renderer/src/components/Components/ManageBadPrompt.vue
@@ -63,7 +63,7 @@ export default defineComponent({
* 删除
*/
async function handleClose(tag) {
- debugger;
+
// 删除对应的数据
tags.value = tags.value.filter(item => item != tag);
show_tags.value = show_tags.value.filter(item => item != tag);
@@ -94,7 +94,7 @@ export default defineComponent({
* 删除所选的tag(全部)
*/
async function DeleteTags() {
- debugger
+
let d_l = toRaw(show_tags.value);
for (let i = 0; i < d_l.length; i++) {
const element = d_l[i];
diff --git a/src/renderer/src/components/Components/ModifyPromptChinese.vue b/src/renderer/src/components/Components/ModifyPromptChinese.vue
index eeeb45a..c4a146d 100644
--- a/src/renderer/src/components/Components/ModifyPromptChinese.vue
+++ b/src/renderer/src/components/Components/ModifyPromptChinese.vue
@@ -79,7 +79,7 @@ export default defineComponent({
if (translateMode.value) {
// 翻译单个。马上返回
await window.api.TranslateReturnNow([tags, 'zh', 'en', true], (value) => {
- debugger
+
console.log(value)
if (value.code == 0) {
message.error(value.message);
@@ -115,7 +115,7 @@ export default defineComponent({
* @param {要删除的tag} tag
*/
async function handleClose(tag) {
- debugger
+
// 删除对应的数据
data.value.chinese_prompt = data.value.chinese_prompt.filter(item => item.src != tag.src);
ModifyPrompt();
diff --git a/src/renderer/src/components/Components/SelectImageStyle.vue b/src/renderer/src/components/Components/SelectImageStyle.vue
index f290c50..dfb61f3 100644
--- a/src/renderer/src/components/Components/SelectImageStyle.vue
+++ b/src/renderer/src/components/Components/SelectImageStyle.vue
@@ -176,7 +176,7 @@ export default defineComponent({
)
setLayoutHeight('layout_height')
await window.api.GetImageStyleMenu((value) => {
- debugger
+
if (value.code == 0) {
message.error(value.message)
return
@@ -197,7 +197,7 @@ export default defineComponent({
* 菜单选中事件
*/
async function SelectMenu(key, item) {
- debugger
+
current_menu = key
await getStyleImageSubList()
}
@@ -214,7 +214,7 @@ export default defineComponent({
style_image_list.value = tags.value.style_tags
} else {
await window.api.getStyleImageSubList(current_menu, (value) => {
- debugger
+
console.log(value)
if (value.code == 0) {
message.error(value.message)
@@ -232,7 +232,7 @@ export default defineComponent({
}
async function closeTag(image) {
- debugger
+
let index = selectStyle.value.findIndex((item) => item.id == image.id)
if (index != -1) {
selectStyle.value.splice(index, 1)
@@ -268,7 +268,7 @@ export default defineComponent({
handleSelect(key) {
showDropdownRef.value = false
if (key == 'selectStyle') {
- debugger
+
// 将当前的风格添加到选择的风格中
if (current_img.value) {
selectStyle.value.push(current_img.value)
diff --git a/src/renderer/src/components/Components/ShowImageTag.vue b/src/renderer/src/components/Components/ShowImageTag.vue
index 01e9e02..69cb201 100644
--- a/src/renderer/src/components/Components/ShowImageTag.vue
+++ b/src/renderer/src/components/Components/ShowImageTag.vue
@@ -56,7 +56,7 @@ export default defineComponent({
onMounted(async () => {})
async function closeTag(image) {
- debugger
+
let index = selectStyle.value.findIndex((item) => item.id == image.id)
if (index != -1) {
selectStyle.value.splice(index, 1)
diff --git a/src/renderer/src/components/Home/Home.vue b/src/renderer/src/components/Home/Home.vue
index a42b5f5..5995d97 100644
--- a/src/renderer/src/components/Home/Home.vue
+++ b/src/renderer/src/components/Home/Home.vue
@@ -108,13 +108,10 @@ export default defineComponent({
style: `width : ${dialogWidth}px; min-height : ${dialogHeight}px`,
maskClosable: false,
onClose: async () => {
- debugger
// 判断该管理控制密码是不是正确
let password = toRaw(key_down_ref.value.data)
- console.log(password)
// 将密码进行md5加密
let md5_password = MD5(password + DEFINE_STRING.OPEN_DEV_TOOLS).toString()
- console.log(md5_password)
window.api.OpenDevToolsPassword(md5_password, (value) => {
if (value.code == 0) {
message.error(value.message)
@@ -168,6 +165,19 @@ export default defineComponent({
})
})
+ window.api.setEventListen([DEFINE_STRING.SHOW_GLOABAL_MESSAGE], (value) => {
+ let mess = value.message
+ let type = 'success'
+ let title = '成功'
+ if (value.code == 0) {
+ type = 'error'
+ title = '成功但失败'
+ } else if (value.code == 2) {
+ ;(type = 'warning'), (title = '警告')
+ }
+ message[type](mess, title)
+ })
+
// 弹窗,获取机器码
dialog.create({
showIcon: false,
@@ -186,7 +196,6 @@ export default defineComponent({
return false
},
onPositiveClick: async () => {
- debugger
await new Promise(async (resolve, reject) => {
await window.api.CheckMachineId(toRaw(machineRef.value.machineId), (value) => {
if (value.code == 0) {
diff --git a/src/renderer/src/components/Home/ReDrawImageWD.vue b/src/renderer/src/components/Home/ReDrawImageWD.vue
index e42d207..7577be2 100644
--- a/src/renderer/src/components/Home/ReDrawImageWD.vue
+++ b/src/renderer/src/components/Home/ReDrawImageWD.vue
@@ -165,7 +165,7 @@ export default defineComponent({
item.loading = false
item.timedata = new Date().getTime()
})
- debugger
+
data.value = value.value
})
}
@@ -436,7 +436,7 @@ export default defineComponent({
await window.api.TranslatePrompt(
[JSON.stringify([row]), 'en', 'zh', window.id, false],
(value) => {
- debugger
+
console.log(value)
}
)
@@ -559,12 +559,12 @@ export default defineComponent({
})
window.api.setEventListen([DEFINE_STRING.TRANSLATE_RETURN_REFRESH, window.id], (value) => {
- debugger
+
if (value.code == 0) {
message.error('返回数据错误')
return
}
- debugger
+
// 直接
let index = data.value.findIndex((item) => item.id == value.rowId)
@@ -620,7 +620,7 @@ export default defineComponent({
async function TranslatePrompt(translateData, from, to) {
console.log(translateData)
await window.api.TranslatePrompt([translateData, from, to, window.id, true], (value) => {
- debugger
+
console.log(value)
})
}
@@ -629,7 +629,7 @@ export default defineComponent({
* 翻译中文到提示词
*/
async function TranslateChineseToPrompt() {
- debugger
+
// 将当前的prompt和Chinese_prompt中的src全部删除(全部重新翻译)
let fileterData = []
for (let i = 0; i < data.value.length; i++) {
@@ -650,7 +650,7 @@ export default defineComponent({
let tmp_str = JSON.stringify(fileterData)
// 开始调用
await window.api.TranslatePrompt([tmp_str, 'zh', 'en', window.id, true], (value) => {
- debugger
+
console.log(value)
})
}
@@ -780,7 +780,7 @@ export default defineComponent({
// 翻译立即返回
// 翻译单个。马上返回
await window.api.TranslateReturnNow([tmp_s, 'en', 'zh', true], (value) => {
- debugger
+
console.log(value)
if (value.code == 0) {
message.error(value.message)
diff --git a/src/renderer/src/components/Original/Components/AddCharacterTag.vue b/src/renderer/src/components/Original/Components/AddCharacterTag.vue
index 58faa1e..7874b0b 100644
--- a/src/renderer/src/components/Original/Components/AddCharacterTag.vue
+++ b/src/renderer/src/components/Original/Components/AddCharacterTag.vue
@@ -3,7 +3,10 @@
-
+
+ 显示
{
- debugger
+
console.log(value)
if (value.code == 0) {
message.error(value.message)
@@ -275,7 +280,7 @@ export default defineComponent({
}
imageLoading.value = true
await window.sd.txt2img(JSON.stringify([d]), async (value) => {
- debugger
+
if (value.code == 0) {
message.error(value.message)
imageLoading.value = false
diff --git a/src/renderer/src/components/Original/Components/AddPrefixTags.vue b/src/renderer/src/components/Original/Components/AddPrefixTags.vue
index be59345..27ab56f 100644
--- a/src/renderer/src/components/Original/Components/AddPrefixTags.vue
+++ b/src/renderer/src/components/Original/Components/AddPrefixTags.vue
@@ -55,7 +55,7 @@ export default defineComponent({
// 开始保存
prefixData.value['type'] = "prefix_main";
await window.mj.SaveTagPropertyData([JSON.stringify(prefixData.value), "prefix_tags"], (value) => {
- debugger;
+
console.log(value);
if (value.code == 0) {
message.error(value.message);
diff --git a/src/renderer/src/components/Original/Components/AddSceneTags.vue b/src/renderer/src/components/Original/Components/AddSceneTags.vue
index 933e8bb..60fc170 100644
--- a/src/renderer/src/components/Original/Components/AddSceneTags.vue
+++ b/src/renderer/src/components/Original/Components/AddSceneTags.vue
@@ -1,18 +1,41 @@
-
-
-
-
-
-
-
- 翻译提示词
-
-
-
-
-
-
+
-
- 保存
-
+
+ 保存
+
\ No newline at end of file
+
diff --git a/src/renderer/src/components/Original/Components/AddStyleTags.vue b/src/renderer/src/components/Original/Components/AddStyleTags.vue
index 4ac1e2b..a752b21 100644
--- a/src/renderer/src/components/Original/Components/AddStyleTags.vue
+++ b/src/renderer/src/components/Original/Components/AddStyleTags.vue
@@ -154,7 +154,7 @@ export default defineComponent({
await window.mj.SaveTagPropertyData(
[JSON.stringify(styleData.value), 'style_tags'],
(value) => {
- debugger
+
console.log(value)
if (value.code == 0) {
message.error(value.message)
@@ -246,7 +246,7 @@ export default defineComponent({
}
imageLoading.value = true
await window.sd.txt2img(JSON.stringify([d]), async (value) => {
- debugger
+
if (value.code == 0) {
message.error(value.message)
imageLoading.value = false
diff --git a/src/renderer/src/components/Original/Components/AddSuffixTags.vue b/src/renderer/src/components/Original/Components/AddSuffixTags.vue
index 188b54c..c893467 100644
--- a/src/renderer/src/components/Original/Components/AddSuffixTags.vue
+++ b/src/renderer/src/components/Original/Components/AddSuffixTags.vue
@@ -55,7 +55,7 @@ export default defineComponent({
// 开始保存
suffixData.value['type'] = "suffix_main";
await window.mj.SaveTagPropertyData([JSON.stringify(suffixData.value), "suffix_tags"], (value) => {
- debugger;
+
console.log(value);
if (value.code == 0) {
message.error(value.message);
diff --git a/src/renderer/src/components/Original/Components/CharacterAnalyze.vue b/src/renderer/src/components/Original/Components/CharacterAnalyze.vue
index 6a227ee..f75da8b 100644
--- a/src/renderer/src/components/Original/Components/CharacterAnalyze.vue
+++ b/src/renderer/src/components/Original/Components/CharacterAnalyze.vue
@@ -90,7 +90,7 @@ export default defineComponent({
loading.value = true;
await window.api.AutoAnalyzeCharacter(toRaw(word.value), (value) => {
- debugger
+
loading.value = false;
if (value.code == 0) {
message.error(value.message);
diff --git a/src/renderer/src/components/Original/Components/CharacterTags.vue b/src/renderer/src/components/Original/Components/CharacterTags.vue
index 911e7bb..994c94d 100644
--- a/src/renderer/src/components/Original/Components/CharacterTags.vue
+++ b/src/renderer/src/components/Original/Components/CharacterTags.vue
@@ -275,7 +275,7 @@ export default defineComponent({
// 设置标签集的自动高度,传一个外面的高度进来
function SetAutoHeight() {
- debugger
+
let div = document.getElementById('tree_define_content')
div.style.height = props.height - 180 + 'px'
}
@@ -318,7 +318,8 @@ export default defineComponent({
show_image: window.config.space_image,
cref_cw: 50,
lora: '无',
- lora_weight: 1
+ lora_weight: 1,
+ isShow: false
}
currentTags.value = []
currentType.value = 'character_main'
@@ -335,7 +336,8 @@ export default defineComponent({
label: null,
key: uuidv4(),
type: 'scene_main',
- prompt: null
+ prompt: null,
+ isShow: false
}
currentType.value = 'scene_main'
}
@@ -395,7 +397,7 @@ export default defineComponent({
function nodeProps({ option }) {
return {
onClick() {
- debugger
+
// 执行切换组件和数据
if (option.type == 'style') {
currentType.value = 'style'
@@ -421,13 +423,16 @@ export default defineComponent({
} else if (option.type == 'min') {
message.error('别名节点不允许操作')
} else {
- debugger
+
console.log(option)
currentType.value = option.type
// 修改当前属性
if (currentType.value.startsWith('character')) {
// 修改tags的值
currentCharacter.value = option
+ if(!currentCharacter.value.hasOwnProperty("isShow")){
+ currentCharacter.value.isShow = false
+ }
currentTags.value = option.children.map((item) => {
return item.label
})
diff --git a/src/renderer/src/components/Original/Components/DataTableCharacterAndScene.vue b/src/renderer/src/components/Original/Components/DataTableCharacterAndScene.vue
index 9fd5398..456436e 100644
--- a/src/renderer/src/components/Original/Components/DataTableCharacterAndScene.vue
+++ b/src/renderer/src/components/Original/Components/DataTableCharacterAndScene.vue
@@ -9,15 +9,42 @@
v-model:value="title_character_select_model"
placeholder="选择模式"
>
-
-
-
-
-
+
+
+
+
+
+
+
+
+ 刷新任务标签数据
+
+
+
+
+
+
+
+
+
+
+ 自动匹配人物
+
-
+
人物:
import { ref, h, onMounted, defineComponent, toRaw, watch } from 'vue'
-import { NImage, useMessage, NButton, useDialog, NInput, NTag, NSelect, NIcon } from 'naive-ui'
+import {
+ NImage,
+ useMessage,
+ NButton,
+ useDialog,
+ NInput,
+ NTag,
+ NSelect,
+ NIcon,
+ NPopover
+} from 'naive-ui'
import { DEFINE_STRING } from '../../../../../define/define_string'
import { cloneDeep, debounce, get, once } from 'lodash'
-import { Refresh, Reload } from '@vicons/ionicons5'
+import { Refresh, ReloadCircle, ExtensionPuzzle } from '@vicons/ionicons5'
+import ProgressDialog from '../../Components/ProgressDialog.vue'
export default defineComponent({
components: {
@@ -92,7 +130,9 @@ export default defineComponent({
NTag,
NSelect,
NIcon,
- Reload
+ ReloadCircle,
+ ExtensionPuzzle,
+ NPopover
},
props: ['type', 'row', 'characterSelectModel', 'tags', 'func'],
setup(props) {
@@ -103,6 +143,7 @@ export default defineComponent({
let character_tags = ref([])
let scene_tags = ref([])
let tags = ref(props.tags)
+ let dialog = useDialog()
let characterData = ref([])
@@ -114,7 +155,6 @@ export default defineComponent({
watch(
() => props.characterSelectModel,
(value) => {
- debugger
// InitData(value);
if (value.value == 'drop') {
select_character_tags.value = []
@@ -149,7 +189,7 @@ export default defineComponent({
)
onMounted(async () => {
- // debugger
+ //
// await InitCharacterAndSceneData()
await window.mj.GetTagSelectModel((value) => {
characterSelectMoedlOptions.value = value.data
@@ -220,14 +260,24 @@ export default defineComponent({
* @param {*} tags
*/
async function InitCharacterAndSceneData() {
- debugger
// if (!tags) return
character_tags.value = cloneDeep(tags.value.character_tags)
- character_tags.value.forEach((item) => {
- item.children = null
- })
+ for (let i = 0; i < character_tags.value.length; i++) {
+ let item = character_tags.value[i]
+ character_tags.value[i].children = null
+ if (!item.hasOwnProperty('isShow') || item.isShow == false) {
+ character_tags.value.splice(i, 1)
+ i--
+ }
+ }
scene_tags.value = cloneDeep(tags.value.scene_tags)
-
+ for (let i = 0; i < scene_tags.value.length; i++) {
+ let item = scene_tags.value[i]
+ if (!item.hasOwnProperty('isShow') || item.isShow == false) {
+ scene_tags.value.splice(i, 1)
+ i--
+ }
+ }
select_character_tags.value = []
select_scene_tags.value = []
// 初始化数据(选择为true)
@@ -304,6 +354,47 @@ export default defineComponent({
}
}
+ let dp = null
+ /**
+ * 开始人物匹配
+ */
+ async function MatchUser() {
+ // 先监听对应的方法
+ window.api.setEventListen([DEFINE_STRING.MJ.MACTH_USER_RETURN], (value) => {
+ // 返回的数据都是有效的
+ // 获取指定
+ let temp_data = props.func.getData(null)
+ // 调用方法,然后,传递一个回调函数
+ props.func.modifyData(() => {
+
+ console.log(temp_data)
+ // 修改当前指定ID的data行
+ let index = temp_data.findIndex((x) => x.id == value.id)
+ if (index >= 0) {
+ temp_data[index].character_tags = value.match_character
+ }
+ return temp_data
+ })
+ })
+ // 拿到现在所有的数据
+ let da = props.func.getData(null)
+ // 开始调用方法
+ await window.mj.AutoMatchUser(JSON.stringify(da), async (value) => {
+ setTimeout(() => {
+ if (dp) {
+ dp.destroy()
+ }
+ }, 1000)
+ await RefreshTagData()
+ if (value.code == 0) {
+ message.error(value.message)
+ window.api.showGlobalMessageDialog(value)
+ return
+ }
+ window.api.showGlobalMessageDialog(value)
+ })
+ }
+
return {
characterData,
row,
@@ -321,7 +412,8 @@ export default defineComponent({
title_character_select_model,
RefreshTagData,
UpdateCharacterSelect,
- UpdateSceneSelect
+ UpdateSceneSelect,
+ MatchUser
}
}
})
diff --git a/src/renderer/src/components/Original/Components/DataTableGptPromptRow.vue b/src/renderer/src/components/Original/Components/DataTableGptPromptRow.vue
index 5b4e4c4..0d6a0c5 100644
--- a/src/renderer/src/components/Original/Components/DataTableGptPromptRow.vue
+++ b/src/renderer/src/components/Original/Components/DataTableGptPromptRow.vue
@@ -142,7 +142,7 @@ export default defineComponent({
message.error('当前翻译的数据里面没有中文')
}
} else if (key == 'chinese') {
- debugger
+
let t = [[toRaw(row.value)], 'en', 'zh', false, false]
await window.mj.TranslateReturnNowTask(JSON.stringify(t), (value) => {
if (value.code == 0) {
diff --git a/src/renderer/src/components/Original/Components/DataTableParameterRow.vue b/src/renderer/src/components/Original/Components/DataTableParameterRow.vue
index 70d63dd..8845b73 100644
--- a/src/renderer/src/components/Original/Components/DataTableParameterRow.vue
+++ b/src/renderer/src/components/Original/Components/DataTableParameterRow.vue
@@ -66,7 +66,7 @@ export default defineComponent({
});
async function onUpdateChecked(v) {
- debugger;
+
row.adetailer = v;
}
diff --git a/src/renderer/src/components/Original/Components/DataTablePromptRow.vue b/src/renderer/src/components/Original/Components/DataTablePromptRow.vue
index 3e30ed2..b153280 100644
--- a/src/renderer/src/components/Original/Components/DataTablePromptRow.vue
+++ b/src/renderer/src/components/Original/Components/DataTablePromptRow.vue
@@ -1,10 +1,23 @@
-
+
提示词命令
+
+
+
+
+
+
+
+
+
+ 设置合并排序模式
+
- 合并命令
+ 合并命令
- 敏感词检查
@@ -24,6 +37,10 @@
粘贴MJ里面的图片链接。自动下载到对应的行。并分割。
+
单句合并
+
import { ref, h, onMounted, defineComponent, toRaw, watch } from 'vue'
-import { NButton, NInput, NPopover, useMessage, useDialog, NDropdown } from 'naive-ui'
+import { NButton, NInput, NPopover, useMessage, useDialog, NDropdown, NIcon } from 'naive-ui'
import { DEFINE_STRING } from '../../../../../define/define_string'
import InputDialogContent from './InputDialogContent.vue'
+import { Construct } from '@vicons/ionicons5'
+import DynamicTagsSelect from '../../Components/DynamicTagsSelect.vue'
+import { usePromptStore } from '../../../../../stores/prompt'
export default defineComponent({
components: {
NButton,
NInput,
NPopover,
- NDropdown
+ NDropdown,
+ NIcon,
+ Construct,
+ NPopover
},
props: ['type', 'row', 'index', 'func'],
setup(props) {
@@ -56,10 +79,7 @@ export default defineComponent({
let row = ref(props.row)
let input_status = ref('default')
let image_url_ref = ref(null)
-
- // let input_image_
-
- // 重新计算命令
+ let promptStore = usePromptStore()
// 监听数据变化
watch(
@@ -140,10 +160,15 @@ export default defineComponent({
}
/**
- * 合并提示词
+ * 合并命令
+ * @param {*} key
*/
- async function MergePrompt() {
- props.func.mergePrompt(null)
+ async function MergePrompt(key) {
+ if (row.value.id) {
+ props.func.mergePrompt(row.value.id, key)
+ } else {
+ props.func.mergePrompt(null, key)
+ }
}
/**
@@ -167,7 +192,6 @@ export default defineComponent({
style: `width : ${dialogWidth}px; min-height : ${dialogHeight}px`,
maskClosable: false,
onClose: async () => {
- debugger
let row_image_url = image_url_ref.value.data
// 下载指定的图片地址并且分割
@@ -196,7 +220,62 @@ export default defineComponent({
* @param key
*/
async function MergePromptSelect(key) {
- props.func.mergePrompt(key)
+ MergePrompt(key)
+ }
+
+ async function SaveFunction(value, options) {
+ // 开始保存
+
+ // 判断当前的数据是不是options中的数据数量是不是相同
+ if (value.length != options.length) {
+ message.error('要保存的数据量和下拉选择的的数据量不一致')
+ return
+ }
+ promptStore.InitPromptSort(value)
+
+ // 开始保存
+ await window.pmpt.SavePromptSort(value, (value) => {
+ if (value.code == 0) {
+ message.error(value.message)
+ reutrn
+ }
+ message.success(value.message)
+ // 保存成功,修改store
+ })
+ }
+
+ /**
+ * 设置合并的模式
+ */
+ async function SetMergeModel() {
+ // 获取当前的排序数据
+ await window.pmpt.GetPromptSortOptions((value) => {
+ let options = value.data
+
+ dialog.create({
+ name: 'setMergeModel',
+ title: '设置合并排序模式',
+ content: () =>
+ h(DynamicTagsSelect, {
+ options: options,
+ tagType: 'success',
+ placeholder: '选择当前的prompt排序方式',
+ SaveFunction: SaveFunction,
+ initData: promptStore.GetPromptSort,
+ max: 4
+ }),
+ style: `width : 500px; `,
+ maskClosable: false,
+ onPositiveClick: async () => {}
+ })
+ })
+ }
+
+ /**
+ * 单句合并
+ */
+ async function SingleMergePrompt() {
+ MergePrompt(null)
}
return {
@@ -213,7 +292,9 @@ export default defineComponent({
MergePromptOptions: [
{ label: 'SD模式合并', key: 'sd_merge' },
{ label: 'MJ模式合并', key: 'mj_merge' }
- ]
+ ],
+ SetMergeModel,
+ SingleMergePrompt
}
}
})
diff --git a/src/renderer/src/components/Original/Components/DataTableShowGenerateImage.vue b/src/renderer/src/components/Original/Components/DataTableShowGenerateImage.vue
index aca0be6..80bd700 100644
--- a/src/renderer/src/components/Original/Components/DataTableShowGenerateImage.vue
+++ b/src/renderer/src/components/Original/Components/DataTableShowGenerateImage.vue
@@ -104,6 +104,8 @@ import {
NPopover,
NTag
} from 'naive-ui'
+import { usePromptStore } from '../../../../../stores/prompt'
+import { useImageStore } from '../../../../../stores/image'
export default defineComponent({
components: {
@@ -117,6 +119,8 @@ export default defineComponent({
},
props: ['initData', 'type', 'image_generate_category', 'func'],
setup(props) {
+ let imageStore = useImageStore()
+ let promptStore = usePromptStore()
let message = useMessage()
let data = ref(props.initData)
let type = ref(props.type)
@@ -167,7 +171,7 @@ export default defineComponent({
onMounted(async () => {
await window.api.InitSDConfig((value) => {
- debugger
+
if (value.code == 0) {
message.error(value.message)
return
@@ -210,23 +214,24 @@ export default defineComponent({
e.dataTransfer.effectAllowed = 'move'
console.log('move', e.target)
dragTarget = e.target
+ imageStore.SetDragTarget(e.target)
}
// 图片拖拽结束事件
async function imageDragDrop(e) {
- debugger
+
console.log('end', e.target, dragTarget)
// 判断原始数据是不是为空
- if (dragTarget == null) {
- message.error('只能拖拽到当前行的图片上')
- return
- }
+ // if (dragTarget == null) {
+ // message.error('只能拖拽到当前行的图片上')
+ // return
+ // }
// 判断结束位置是不是主图片
if (e.target.getAttribute('mainImage') != '1') {
message.error('图片只能拖拽到主图片上')
return
}
- let source_img = dragTarget.src
+ let source_img = imageStore.GetDragTarget.src
.split('?')[0]
.replace(/^file:\/\/\//, '')
.replace(/^\//, '')
@@ -253,6 +258,7 @@ export default defineComponent({
async function UpdateImageGenerateCategory(value, option) {
// 更新配置文件和缓存
window.config.image_generate_category = value
+ promptStore.UpdateImageGenerateCategory(value)
// 保存文件
await window.api.ModifySampleSetting(
JSON.stringify({
diff --git a/src/renderer/src/components/Original/Components/EditWord.vue b/src/renderer/src/components/Original/Components/EditWord.vue
index 552aa2a..c8dfd44 100644
--- a/src/renderer/src/components/Original/Components/EditWord.vue
+++ b/src/renderer/src/components/Original/Components/EditWord.vue
@@ -16,7 +16,7 @@
合并
+ 一键复制内容
{
- debugger
write_setting.value.split_char = split_ref.value.data
// 保存数据
await window.api.SaveDefineConfigJsonByProperty(
JSON.stringify(['clip_setting', 'write_setting', toRaw(write_setting.value), false]),
(value) => {
- debugger
console.log(value)
if (value.code == 0) {
message.error(value.message)
@@ -208,7 +209,6 @@ export default defineComponent({
await window.api.SaveDefineConfigJsonByProperty(
JSON.stringify(['clip_setting', 'write_setting', toRaw(write_setting.value), false]),
(value) => {
- debugger
console.log(value)
if (value.code == 0) {
message.error(value.message)
@@ -224,7 +224,6 @@ export default defineComponent({
* 一键格式化
*/
async function formateWrite() {
- debugger
let split_arr = Array.from(write_setting.value.split_char)
split_arr.forEach((item) => {
let specialCharacters = [
@@ -274,6 +273,19 @@ export default defineComponent({
ChangeWordInput()
}
+ /**
+ * 复制数据到剪贴板
+ */
+ async function CopyWord() {
+ // 获取当前的所有的word
+ try {
+ await navigator.clipboard.writeText(word.value)
+ message.success('复制成功')
+ } catch (error) {
+ message.error('复制失败')
+ }
+ }
+
return {
data,
rowCount,
@@ -285,7 +297,8 @@ export default defineComponent({
write_setting,
mergeCountChange,
formateWrite,
- mergeWord
+ mergeWord,
+ CopyWord
}
}
})
diff --git a/src/renderer/src/components/Original/Components/ImportWordAndSrt.vue b/src/renderer/src/components/Original/Components/ImportWordAndSrt.vue
index 61d7e06..220744e 100644
--- a/src/renderer/src/components/Original/Components/ImportWordAndSrt.vue
+++ b/src/renderer/src/components/Original/Components/ImportWordAndSrt.vue
@@ -158,7 +158,7 @@ export default defineComponent({
// 设置窗体的高度
function setHeight() {
- debugger
+
let div = document.getElementById('import_word_and_srt')
div.style.height = hh + 'px'
}
@@ -423,7 +423,7 @@ export default defineComponent({
})
return
} else {
- debugger
+
// 先保存单个文件(然后在config文件中指向对应的文件)
await window.api.OriginalAddWebuiJson(JSON.stringify(data.value), async (value) => {
if (value.code == 0) {
@@ -466,7 +466,7 @@ export default defineComponent({
})
await window.api.ImportSrtAndGetTime([toRaw(data.value), srt_path], (value) => {
- debugger
+
if (value.code == 0) {
message.error(value.message)
return
diff --git a/src/renderer/src/components/Original/Components/PromptSetting.vue b/src/renderer/src/components/Original/Components/PromptSetting.vue
index d1f0965..73ecb69 100644
--- a/src/renderer/src/components/Original/Components/PromptSetting.vue
+++ b/src/renderer/src/components/Original/Components/PromptSetting.vue
@@ -252,7 +252,6 @@ export default defineComponent({
await window.api.GetDefineConfigJsonByProperty(
JSON.stringify(['img_base', 'mj_config', false, null]),
(value) => {
- debugger
console.log(value)
if (value.code == 0) {
message.error(value.message)
@@ -363,7 +362,6 @@ export default defineComponent({
message.success('保存成功')
} catch (error) {
- debugger
message.error('保存失败 ' + error.message)
}
}
@@ -386,7 +384,6 @@ export default defineComponent({
style: `width : ${dialogWidth}px; min-height : ${dialogHeight}px`,
maskClosable: false,
onClose: async () => {
- debugger
let mj_bad_prompt = bad_prompt_ref.value.data
if (mj_bad_prompt == null || mj_bad_prompt == '') {
diff --git a/src/renderer/src/components/Original/DataTable.vue b/src/renderer/src/components/Original/DataTable.vue
index e70cb47..e47ecbd 100644
--- a/src/renderer/src/components/Original/DataTable.vue
+++ b/src/renderer/src/components/Original/DataTable.vue
@@ -24,7 +24,9 @@ import {
watch,
toRaw,
render,
- onBeforeUnmount
+ onBeforeUnmount,
+ provide,
+ nextTick
} from 'vue'
import {
NDataTable,
@@ -36,7 +38,6 @@ import {
NPopover,
useDialog,
NCheckbox,
- NSelect,
NIcon
} from 'naive-ui'
import { DEFINE_STRING } from '../../../../define/define_string'
@@ -51,11 +52,14 @@ import DataTableGptPromptRow from './Components/DataTableGptPromptRow.vue'
import DataTableParameterRow from './Components/DataTableParameterRow.vue'
import { Reload } from '@vicons/ionicons5'
import {
+ checkStringValueDeletePrefix,
checkStringValueAddPrefix,
checkStringValueAddSuffix,
- checkStringValueDeletePrefix
+ checkStringValueDeleteSuffix
} from '../../../../main/generalTools'
+import { usePromptStore } from '../../../../stores/prompt'
+
export default defineComponent({
components: {
NImage,
@@ -70,9 +74,9 @@ export default defineComponent({
Reload,
NIcon
},
- props: ['initData', 'prefix_prompt', 'suffix_prompt', 'tags', 'InitTags'],
+ props: ['initData', 'tags', 'InitTags'],
setup(props) {
- console.log('输出文件夹位置', props.initData)
+ let promptStore = usePromptStore()
let data = ref(props.initData)
let tags = ref(props.tags)
let message = useMessage()
@@ -80,8 +84,6 @@ export default defineComponent({
let selectKey = ref([])
let promptChineseRef = ref(null)
let maxHeight = ref(null)
- let prefix_prompt = ref(props.prefix_prompt)
- let suffix_prompt = ref(props.suffix_prompt)
let titleCharacterAndSceneRef = ref(null)
let dataCharacterAndSceneRef = ref(null)
@@ -96,6 +98,9 @@ export default defineComponent({
let AutoSaveDataJsonDebounced = debounce(AutoSaveDataJson, 3000)
let SaveDataJsonDebounced = debounce(AutoSaveDataJson, 1000)
+ promptStore.UpdateImageGenerateCategory(
+ window.config.image_generate_category ? window.config.image_generate_category : 'sd'
+ )
let image_generate_category = ref(
window.config.image_generate_category ? window.config.image_generate_category : 'sd'
)
@@ -125,22 +130,9 @@ export default defineComponent({
selectStyle.value[i] = tags.value.style_tags[index]
}
}
- },
- { deep: true }
- )
- watch(
- () => props.prefix_prompt,
- (newVal) => {
- prefix_prompt.value = newVal
- },
- { deep: true }
- )
-
- watch(
- () => props.suffix_prompt,
- (newVal) => {
- suffix_prompt.value = newVal
+ // 修改store中的数据
+ promptStore.UpdateSelectStyleSort(toRaw(selectStyle.value))
},
{ deep: true }
)
@@ -210,20 +202,25 @@ export default defineComponent({
} catch (error) {
message.error('人物角色刷新失败,请重试' + error.toString())
}
- }
+ },
+ getData: GetData,
+ modifyData: ModifyData
}
})
},
className: 'prompt_row',
key: 'character',
- width: '200',
+ width: '210',
render(row, index) {
return h(DataTableCharacterAndScene, {
ref: dataCharacterAndSceneRef,
type: 'data',
row: row,
tags: tags,
- characterSelectModel: characterSelectModel
+ characterSelectModel: characterSelectModel,
+ func: {
+ getData: GetData
+ }
})
}
},
@@ -268,6 +265,8 @@ export default defineComponent({
index: index,
func: {
mJBadPromptCheck: MJBadPromptCheck,
+ modifyData: ModifyData,
+ getData: GetData,
mergePrompt: MergePrompt
}
})
@@ -281,7 +280,10 @@ export default defineComponent({
row: row,
index: index,
func: {
- nextGenerateImage: NextGenerateImage
+ nextGenerateImage: NextGenerateImage,
+ modifyData: ModifyData,
+ getData: GetData,
+ mergePrompt: MergePrompt
}
})
}
@@ -292,15 +294,14 @@ export default defineComponent({
return h(DataTableParameterRow, {
type: 'title',
row: row,
- index: index,
- image_generate_category: image_generate_category
+ index: index
})
},
key: 'parameter',
width: '130',
render(row, index) {
return h(DataTableParameterRow, {
- type: `data_${image_generate_category.value}`,
+ type: `data_${promptStore.GetImageGenerateCategory}`,
row: row,
index: index
})
@@ -352,7 +353,6 @@ export default defineComponent({
onMounted(async () => {
// 直接或整个cinfig文件
await window.api.GetConfigJson(JSON.stringify([null, {}]), async (value) => {
- debugger
if (value.code == 0) {
message.error(value.message)
return
@@ -374,6 +374,7 @@ export default defineComponent({
type: 'style_main'
})
}
+ promptStore.UpdateSelectStyleSort(toRaw(selectStyle.value))
})
// 判断data中的数据是不是有chinese text
@@ -396,7 +397,6 @@ export default defineComponent({
window.api.setEventListen(
[DEFINE_STRING.SD_ORIGINAL_GENERATE_IMAGE_RETURN, window.id],
(value) => {
- debugger
if (value.code == 0) {
message.error('生成图片错误,错误信息如下:' + value.message)
return
@@ -437,6 +437,9 @@ export default defineComponent({
onBeforeUnmount(async () => {
await AutoSaveDataJson()
+ window.api.removeEventListen(DEFINE_STRING.DISCORD.MAIN_DISCORD_MESSAGE_CHANGE)
+ window.api.removeEventListen(DEFINE_STRING.SD_ORIGINAL_GENERATE_IMAGE_RETURN)
+ window.api.removeEventListen(DEFINE_STRING.TRANSLATE_RETURN_REFRESH)
})
// 接收Discord的修改信息
@@ -456,7 +459,6 @@ export default defineComponent({
// 处理数据
if (value.type == 'created') {
- debugger
console.log('接收Discord的创建消息', value)
// 找到对应ID的data数据
@@ -554,7 +556,6 @@ export default defineComponent({
async function TranslatePrompt(translateData, from, to) {
console.log(translateData)
await window.api.TranslatePrompt([translateData, from, to, window.id, true], (value) => {
- debugger
console.log(value)
})
}
@@ -583,13 +584,14 @@ export default defineComponent({
content: () =>
h(InputDialogContent, {
ref: prefix_prompt_ref,
- initData: prefix_prompt.value,
+ initData: promptStore.GetPrefix,
placeholder: '请输入前缀'
}),
style: `width : ${dialogWidth}px; min-height : ${dialogHeight}px`,
maskClosable: false,
onClose: async () => {
- prefix_prompt.value = prefix_prompt_ref.value.data
+ let prefix = prefix_prompt_ref.value.data
+ promptStore.UpdatePrefix(prefix)
// 保存通用前缀
await window.api.SaveCopywritingInformation(
[prefix_prompt_ref.value.data, 'prefix_prompt', false],
@@ -608,7 +610,6 @@ export default defineComponent({
* 选择生成图片的风格
*/
async function SelectGenerateImagesStyle() {
- debugger
// 判断当前数据是不是存在
// 处理数据。获取当前的所有的数据
let dialogWidth = window.innerWidth * 0.8
@@ -632,7 +633,6 @@ export default defineComponent({
let cus_arr = []
for (let i = 0; i < selectStyle.value.length; i++) {
- debugger
const element = selectStyle.value[i]
// 判断是不是主风格
if (element.type == 'style_main') {
@@ -680,13 +680,14 @@ export default defineComponent({
content: () =>
h(InputDialogContent, {
ref: suffix_prompt_ref,
- initData: suffix_prompt.value,
+ initData: promptStore.GetSuffix,
placeholder: '请输入后缀'
}),
style: `width : ${dialogWidth}px; min-height : ${dialogHeight}px`,
maskClosable: false,
onClose: async () => {
- suffix_prompt.value = suffix_prompt_ref.value.data
+ let suffix = suffix_prompt_ref.value.data
+ promptStore.UpdateSuffix(suffix)
await window.api.SaveCopywritingInformation(
[suffix_prompt_ref.value.data, 'suffix_prompt', false],
(value) => {
@@ -709,7 +710,7 @@ export default defineComponent({
message.error(value.message)
return
}
- debugger
+
// 先将所有的数据设置为false
for (let i = 0; i < data.value.length; i++) {
data.value[i].mj_message = data.value[i].mj_message ? data.value[i].mj_message : {}
@@ -838,7 +839,6 @@ export default defineComponent({
* @param {*} key 翻译的类型
*/
async function TranslateAll(key) {
- debugger
// 将中文翻译成英文
if (key == 'english') {
let tmp_d = []
@@ -859,7 +859,6 @@ export default defineComponent({
message.success('添加翻译任务成功')
})
} else if (key == 'chinese') {
- debugger
let t = [[...toRaw(data.value)], 'en', 'zh', false, false]
await window.mj.TranslateReturnNowTask(JSON.stringify(t), (value) => {
if (value.code == 0) {
@@ -871,175 +870,6 @@ export default defineComponent({
}
}
- /**
- * SD 模式合并名并
- * @param character_string
- * @param scene_string
- * @param gpt_prompt
- */
- function SDMergePrompt(element) {
- let character_string = ''
- element.character_tags?.forEach((item) => {
- character_string += ', ' + item.prompt
- if (item.lora && item.lora != '无' && item.lora_weight) {
- character_string += `, `
- }
- })
- // 判断 character_string 有数据,有的话删除第一个逗号
- character_string = checkStringValueDeletePrefix(character_string, ',')
-
- // 获取当前的场景提示词
- let scene_string = ''
- element.scene_tags?.forEach((item) => {
- scene_string += ', ' + item.prompt
- })
-
- let style_string = ''
-
- selectStyle.value.forEach((item) => {
- if (item.type && item.type == 'style_main') {
- style_string += ', ' + item.prompt
- }
- })
-
- // 判断 scene_string 有数据,有的话删除第一个逗号
- scene_string = checkStringValueDeletePrefix(scene_string, ',')
- style_string = checkStringValueDeletePrefix(style_string, ',')
- style_string = checkStringValueAddSuffix(style_string, ',')
-
- return `${style_string} ${checkStringValueAddSuffix(
- character_string,
- ', '
- )}${checkStringValueAddSuffix(scene_string, ', ')}${checkStringValueAddSuffix(
- element.gpt_prompt,
- ', '
- )}`
- }
-
- /**
- * 将所有的数据进行拼接
- * @param prefix 前缀
- * @param character_string 人物提示词
- * @param scene_string 场景提示词
- * @param gpt_prompt GPT提示词
- * @param suffix 后缀
- */
- function MJMergePrompt(prefix, element, suffix) {
- debugger
- let character_string = ''
- let cref_url = ''
- element.character_tags?.forEach((item) => {
- character_string += ', ' + item.prompt
- if (item.image_url && item.image_url != '' && item.cref_cw) {
- cref_url += ` ${item.image_url} `
- }
- })
- // 判断cref_url 是不是有数据,有的话添加 --cref
- cref_url = checkStringValueAddPrefix(cref_url, ' --cref ')
-
- if (element.character_tags && element.character_tags.length > 0) {
- cref_url = checkStringValueAddSuffix(
- cref_url,
- ` --cw ${element.character_tags[0].cref_cw} `
- )
- }
- // 判断 character_string 有数据,有的话删除第一个逗号
- character_string = checkStringValueDeletePrefix(character_string, ',')
-
- // 获取当前的场景提示词
- let scene_string = ''
- element.scene_tags?.forEach((item) => {
- scene_string += ', ' + item.prompt
- })
- // 判断 scene_string 有数据,有的话删除第一个逗号
- scene_string = checkStringValueDeletePrefix(scene_string, ',')
-
- // 获取当前的自定义风格
-
- let style_string = ''
- let style_url = ''
- let sw = 0
-
- selectStyle.value.forEach((item) => {
- if (item.type && item.type == 'style_main') {
- style_string += ', ' + item.prompt
- if (sw == 0) {
- sw = item.sref_sw
- }
- if (!isEmpty(item.image_url)) {
- let url = item.image_url ? item.image_url : ''
- style_url += ' ' + url
- }
- }
- })
-
- style_url = checkStringValueAddPrefix(style_url, '--sref ')
- style_url = checkStringValueAddSuffix(style_url, ` --sw ${sw}`)
- style_string = checkStringValueDeletePrefix(style_string, ',')
- style_string = checkStringValueAddSuffix(style_string, ', ')
-
- return ` ${style_string} ${checkStringValueAddSuffix(
- prefix,
- ', '
- )}${checkStringValueAddSuffix(character_string, ', ')}${checkStringValueAddSuffix(
- scene_string,
- ', '
- )}${checkStringValueAddSuffix(element.gpt_prompt, ', ')} ${checkStringValueAddSuffix(
- suffix,
- ' '
- )} ${cref_url} ${style_url}`
- }
-
- /**
- * 生成提示词
- */
- async function MergePrompt(key) {
- try {
- debugger
- // 判断该当前是不是有风格
- // 获取当前的风格ID
- let style_str = ''
- for (let i = 0; i < selectStyle.value.length; i++) {
- const element = selectStyle.value[i]
- style_str += element.english_style + ','
- }
-
- // 获取当前的前缀和后缀
- let prefix = prefix_prompt.value ? prefix_prompt.value : ''
- let suffix = suffix_prompt.value ? suffix_prompt.value : ''
-
- for (let i = 0; i < data.value.length; i++) {
- const element = data.value[i]
- let end_prompt = ''
- if (key == null) {
- // 判断当前的分类是什么,通过分类来判断合并提示词
- if (image_generate_category.value == 'sd') {
- end_prompt = SDMergePrompt(element)
- } else if (image_generate_category.value == 'mj') {
- end_prompt = MJMergePrompt(prefix, element, suffix)
- } else if (image_generate_category.value == 'd3') {
- message.error('该分类暂时不可用')
- return
- } else {
- message.error('合并提示词错误:未知的合并提示词类型')
- return
- }
- } else if (key == 'mj_merge') {
- end_prompt = MJMergePrompt(prefix, element, suffix)
- } else if (key == 'sd_merge') {
- end_prompt = SDMergePrompt(element)
- } else {
- message.error('合并提示词错误:未知的合并提示词类型')
- return
- }
- // 风格 + 前缀 + 人物 + 场景 + 词 + 后缀
- data.value[i].prompt = end_prompt
- }
- } catch (error) {
- message.error('生成提示词错误,错误信息如下:' + error.message)
- }
- }
-
/**
* 采集图片
*/
@@ -1102,7 +932,6 @@ export default defineComponent({
* 一拆四
*/
async function OneSplitFour() {
- debugger
// 判断当前的data中是不是都有图片
let min
let pra = []
@@ -1138,7 +967,6 @@ export default defineComponent({
// 将当前数据传到后端进行一拆四
await window.img.OneSplitFour(JSON.stringify([pra, min]), (value) => {
- debugger
if (value.code == 0) {
message.error('一拆四失败,错误信息如下:' + value.message)
return
@@ -1146,6 +974,257 @@ export default defineComponent({
})
}
+ /**
+ * SD 模式合并名并
+ * @param character_string
+ * @param scene_string
+ * @param gpt_prompt
+ */
+ function SDMergePrompt(element) {
+ // 人物
+ let character_string = ''
+ element.character_tags?.forEach((item) => {
+ character_string += ', ' + item.prompt
+ if (item.lora && item.lora != '无' && item.lora_weight) {
+ character_string += `, `
+ }
+ })
+ // 判断 character_string 有数据,有的话删除第一个逗号
+ character_string = checkStringValueDeletePrefix(character_string, ',')
+ character_string = checkStringValueAddSuffix(character_string, ', ')
+
+ // 获取当前的场景提示词
+ let scene_string = ''
+ element.scene_tags?.forEach((item) => {
+ scene_string += ', ' + item.prompt
+ })
+ // 判断 scene_string 有数据,有的话删除第一个逗号
+ scene_string = checkStringValueDeletePrefix(scene_string, ',')
+ scene_string = checkStringValueAddSuffix(scene_string, ', ')
+
+ let style_string = ''
+ for (let i = 0; i < promptStore.GetSelectStyle.length; i++) {
+ const element = promptStore.GetSelectStyle[i]
+ if (element.type == 'style_main') {
+ style_string += element.prompt + ', '
+ if (element.lora && element.lora != '无' && element.lora_weight) {
+ style_string += `, `
+ }
+ } else {
+ style_string += element.english_style
+ }
+ }
+ let prompt_str = `${checkStringValueAddSuffix(promptStore.GetPrefix, ',')}`
+ for (let i = 0; i < promptStore.GetPromptSort.length; i++) {
+ const element = promptStore.GetPromptSort[i]
+ prompt_str += `${'${' + element.value + '}'} `
+ }
+
+ console.log(prompt_str)
+ prompt_str = prompt_str.replace('${style}', style_string)
+ prompt_str = prompt_str.replace('${character}', character_string)
+ prompt_str = prompt_str.replace('${scene}', scene_string)
+ prompt_str = prompt_str.replace(
+ '${prompt}',
+ checkStringValueAddSuffix(element.gpt_prompt, ',')
+ )
+ prompt_str += ` ${promptStore.GetSuffix ? promptStore.GetSuffix : ''}`
+ return prompt_str
+ }
+
+ /**
+ * 将所有的数据进行拼接
+ * @param prefix 前缀
+ * @param character_string 人物提示词
+ * @param scene_string 场景提示词
+ * @param gpt_prompt GPT提示词
+ * @param suffix 后缀
+ */
+ function MJMergePrompt(prefix, element, suffix, style_str) {
+ let character_string = ''
+ let cref_url = ''
+ element.character_tags?.forEach((item) => {
+ character_string += ', ' + item.prompt
+ if (item.image_url && item.image_url != '' && item.cref_cw) {
+ cref_url += ` ${item.image_url} `
+ }
+ })
+ // 判断cref_url 是不是有数据,有的话添加 --cref
+ cref_url = checkStringValueAddPrefix(cref_url, ' --cref ')
+
+ if (element.character_tags && element.character_tags.length > 0) {
+ cref_url = checkStringValueAddSuffix(
+ cref_url,
+ ` --cw ${element.character_tags[0].cref_cw} `
+ )
+ }
+ // 判断 character_string 有数据,有的话删除第一个逗号
+ character_string = checkStringValueDeletePrefix(character_string, ',')
+ character_string = checkStringValueAddSuffix(character_string, ', ')
+
+ // 获取当前的场景提示词
+ let scene_string = ''
+ element.scene_tags?.forEach((item) => {
+ scene_string += ', ' + item.prompt
+ })
+ // 判断 scene_string 有数据,有的话删除第一个逗号
+ scene_string = checkStringValueDeletePrefix(scene_string, ',')
+ scene_string = checkStringValueAddSuffix(scene_string, ', ')
+
+ // 获取当前的自定义风格的垫图字符串
+ let style_url = ''
+ let sw = 0
+ promptStore.GetSelectStyle.forEach((item) => {
+ if (item.type && item.type == 'style_main') {
+ if (sw == 0) {
+ sw = item.sref_sw
+ }
+ if (!isEmpty(item.image_url)) {
+ let url = item.image_url ? item.image_url : ''
+ style_url += ' ' + url
+ }
+ }
+ })
+
+ style_url = checkStringValueAddPrefix(style_url, '--sref ')
+ style_url = checkStringValueAddSuffix(style_url, ` --sw ${sw}`)
+
+ // 开始拼接,最开始返回基础数据
+ if (promptStore.GetPromptSort.length != 4) {
+ message.error('获取设置的提示词排序错误')
+ return
+ }
+ prefix = checkStringValueAddSuffix(prefix, ', ')
+ suffix = checkStringValueAddPrefix(suffix, ' ')
+
+ let prompt_str = ` ${prefix}`
+ for (let i = 0; i < promptStore.GetPromptSort.length; i++) {
+ const element = promptStore.GetPromptSort[i]
+ prompt_str += `${'${' + element.value + '}'}`
+ }
+
+ console.log(prompt_str)
+ prompt_str = prompt_str.replace('${style}', style_str)
+ prompt_str = prompt_str.replace('${character}', character_string)
+ prompt_str = prompt_str.replace('${scene}', scene_string)
+ prompt_str = prompt_str.replace(
+ '${prompt}',
+ checkStringValueAddSuffix(element.gpt_prompt, ',')
+ )
+ prompt_str += ` ${suffix}${cref_url} ${style_url}`
+ return prompt_str
+ }
+
+ /**
+ * 合并提示词
+ */
+ function MergePrompt(id, key) {
+ try {
+ // 判断当前是不是又id,有ID的话就是单个数据,没有ID的话就要全部处理
+ // 获取当前选中的样式
+
+ console.log(promptStore.GetSelectStyle)
+
+ let style_str = ''
+ for (let i = 0; i < promptStore.GetSelectStyle.length; i++) {
+ const element = promptStore.GetSelectStyle[i]
+ if (element.type == 'style_main') {
+ style_str += element.prompt + ', '
+ } else {
+ style_str += element.english_style + ', '
+ }
+ }
+
+ style_str = checkStringValueDeleteSuffix(style_str, ', ')
+ style_str = checkStringValueAddSuffix(style_str, ', ')
+
+ // 判断判断是不是在行中处理
+ let temp_data = []
+ if (id) {
+ // 找到对应的行数
+ temp_data = [toRaw(data.value.find((item) => item.id == id))]
+ } else {
+ // 获取所有的数据
+ temp_data = toRaw(data.value)
+ }
+
+ // 要是空的话,先获取对应的分类数据
+ if (key == null) {
+ // 获取当前的分类
+ if (image_generate_category.value == 'sd') {
+ key = 'sd_merge'
+ } else if (image_generate_category.value == 'mj') {
+ key = 'mj_merge'
+ } else if (image_generate_category.value == 'd3') {
+ message.error('该分类暂时不可用')
+ return
+ } else {
+ message.error('合并提示词错误:未知的合并提示词类型')
+ return
+ }
+ }
+
+ // TODO 要删除前后缀
+ for (let i = 0; i < temp_data.length; i++) {
+ const element = temp_data[i]
+ let end_prompt = ''
+ if (key == 'mj_merge') {
+ end_prompt = MJMergePrompt(
+ promptStore.GetPrefix,
+ element,
+ promptStore.GetSuffix,
+ style_str
+ )
+ } else if (key == 'sd_merge') {
+ end_prompt = SDMergePrompt(element)
+ } else if ((key = 'd3_merge')) {
+ // D3合并
+ message.error('该分类暂时不可用')
+ return
+ } else {
+ message.error('合并提示词错误:未知的合并提示词类型')
+ return
+ }
+ // temp_data[i].prompt = end_prompt
+ // 找到对应的Id的data
+ let index = data.value.findIndex((it) => it.id == element.id)
+ if (index == -1) {
+ message.error('拼接完成,没有找到对应的ID')
+ return
+ }
+ data.value[index].prompt = end_prompt
+ }
+ } catch (error) {
+ message.error('生成提示词错误,错误信息如下:' + error.message)
+ }
+ }
+
+ /**
+ * 获取当前的data
+ */
+ function GetData(id) {
+ if (id) {
+ // 获取指定的数据
+ let index = data.value.findIndex((item) => item.id == id)
+ if (index == -1) {
+ message.error('指定ID的行没有找到')
+ return
+ }
+ return data.value[index]
+ }
+ return toRaw(data.value)
+ }
+
+ /**
+ * 修改data数据
+ * @param callback
+ */
+ function ModifyData(callback) {
+ if (callback) {
+ data.value = callback()
+ }
+ }
+
return {
data,
columns: createColumns({}),
@@ -1161,9 +1240,9 @@ export default defineComponent({
prefix_prompt_ref,
suffix_prompt_ref,
characterSelectModel,
- image_generate_category,
titleCharacterAndSceneRef,
- dataCharacterAndSceneRef
+ dataCharacterAndSceneRef,
+ image_generate_category
}
}
})
diff --git a/src/renderer/src/components/Original/MainPage.vue b/src/renderer/src/components/Original/MainPage.vue
index e5ce218..7cdc26c 100644
--- a/src/renderer/src/components/Original/MainPage.vue
+++ b/src/renderer/src/components/Original/MainPage.vue
@@ -9,13 +9,7 @@
-
+
@@ -25,6 +19,7 @@ import { NImage, useMessage } from 'naive-ui'
import { DEFINE_STRING } from '../../../../define/define_string'
import MenuButton from './MenuButton.vue'
import DataTable from './DataTable.vue'
+import { usePromptStore } from '../../../../stores/prompt'
export default defineComponent({
components: {
@@ -33,16 +28,16 @@ export default defineComponent({
MenuButton
},
setup() {
+ let promptStore = usePromptStore()
let message = useMessage()
let data = ref([])
let tags = ref({})
let AnalyzeCharacter = ref('')
let TagTreeData = ref([])
- let suffix_prompt = ref(null)
- let prefix_prompt = ref(null)
let promptError = true
async function InitData() {
+
// 加载
// 初始化加载项目下面的分镜好的文案
// 并判断是不是有洗稿后的文件。一并加载
@@ -65,20 +60,18 @@ export default defineComponent({
// 判断是不是有前缀
await window.api.GetConfigJson(JSON.stringify([null, {}]), async (value) => {
- debugger
if (value.code == 0) {
message.error(value.message)
return
}
- suffix_prompt.value = value.data.suffix_prompt
- prefix_prompt.value = value.data.prefix_prompt
+ promptStore.UpdateSuffix(value.data.suffix_prompt)
+ promptStore.UpdatePrefix(value.data.prefix_prompt)
})
// 读取data数据对应的prompt文件
for (let i = 0; i < data.value.length; i++) {
const item = data.value[i]
await window.api.GetPromptJson(item.name, (value) => {
- debugger
console.log(value)
if (value.code == 0 && promptError) {
message.error(value.message)
@@ -98,7 +91,7 @@ export default defineComponent({
message.error(value.message)
return
}
- debugger
+
tags.value = value.data
// 加载完毕之后,需要刷新当前的data中的tag数据
console.log(data, tags)
@@ -112,7 +105,9 @@ export default defineComponent({
// 循环判断当前的character_tags对应的key在tags.character_tags中是否存在,存在覆盖,不存在删除
for (let j = element.character_tags.length - 1; j >= 0; j--) {
const item = element.character_tags[j]
- let index = tags.value.character_tags.findIndex((tag) => tag.key == item.key)
+ let index = tags.value.character_tags.findIndex(
+ (tag) => tag.key == item.key && tag.isShow == true
+ )
if (index != -1) {
element.character_tags[j] = tags.value.character_tags[index]
} else {
@@ -126,17 +121,30 @@ export default defineComponent({
})
}
+ /**
+ * 初始化数据
+ */
+ async function InItPromptSort() {
+
+ await window.pmpt.GetPromptSort((value) => {
+ if (value.code == 0) {
+ message.error(value.message)
+ return
+ }
+ promptStore.InitPromptSort(value.data)
+ })
+ }
+
onMounted(async () => {
await InitData()
await InitTags()
+ await InItPromptSort()
})
return {
data,
AnalyzeCharacter,
TagTreeData,
- prefix_prompt,
- suffix_prompt,
InitData,
InitTags,
tags
diff --git a/src/renderer/src/components/Original/MenuButton.vue b/src/renderer/src/components/Original/MenuButton.vue
index 0ad3fc3..8355fb9 100644
--- a/src/renderer/src/components/Original/MenuButton.vue
+++ b/src/renderer/src/components/Original/MenuButton.vue
@@ -324,7 +324,7 @@ export default defineComponent({
)
} else if (value == 'resetPrompt') {
// 重置提示词
- debugger
+
console.log(data)
await ResetPrompt()
} else if (value == 'resetImage') {
@@ -349,7 +349,7 @@ export default defineComponent({
auto_save,
railStyle,
AutoSaveUpdate: (value) => {
- debugger
+
auto_save.value = value
window.config.auto_save = value
},
diff --git a/src/renderer/src/components/Setting/ClipSetting.vue b/src/renderer/src/components/Setting/ClipSetting.vue
index f4d35fc..85530b0 100644
--- a/src/renderer/src/components/Setting/ClipSetting.vue
+++ b/src/renderer/src/components/Setting/ClipSetting.vue
@@ -191,7 +191,7 @@ export default defineComponent({
* 获取温馨提示列表(右上角)
*/
async function getFriendlyReminderList() {
- debugger;
+
friendlyReminderData.value = [];
await window.api.getFriendlyReminderList((value) => {
friendlyReminderData.value = value.value.filter(item => item.id != "0" && item.id != "1")
@@ -203,7 +203,7 @@ export default defineComponent({
*/
async function GetFriendlyReminder() {
let friendlyReminderSelectDraft_name = friendlyReminderSelectDraft.value.draf_name;
- debugger;
+
console.log(friendlyReminderSelectDraft_name);
if (friendlyReminderTextName.value == "" || friendlyReminderTextName.value == null || friendlyReminderSelectDraft_name == "" || friendlyReminderSelectDraft_name == null) {
message.error("请选择草稿地址和名称");
diff --git a/src/renderer/src/components/Setting/Components/AddGptPrompts.vue b/src/renderer/src/components/Setting/Components/AddGptPrompts.vue
index 5230b1c..b1c9253 100644
--- a/src/renderer/src/components/Setting/Components/AddGptPrompts.vue
+++ b/src/renderer/src/components/Setting/Components/AddGptPrompts.vue
@@ -120,7 +120,7 @@ export default defineComponent({
return;
}
await window.api.GenerateGptExampleOut(JSON.stringify(toRaw(prompt_data.value)), (value) => {
- debugger;
+
console.log(value);
if (value.code == 0) {
message.error(value.message);
@@ -134,7 +134,7 @@ export default defineComponent({
* 添加提示词案例输出数据
*/
async function AddExamplePrompt() {
- debugger;
+
let last_data = prompt_data.value.prompt_example[prompt_data.value.prompt_example.length - 1];
if (last_data != null) {
if (isEmpty(last_data.user_content)) {
@@ -156,7 +156,7 @@ export default defineComponent({
// 删除案例输出
async function DeleteExampleOut(example, index) {
- debugger;
+
if (index > prompt_data.value.prompt_example.length - 1) {
message.error("删除的案例不存在");
return;
diff --git a/src/renderer/src/components/Setting/MJSetting.vue b/src/renderer/src/components/Setting/MJSetting.vue
index 5a9644b..41279b7 100644
--- a/src/renderer/src/components/Setting/MJSetting.vue
+++ b/src/renderer/src/components/Setting/MJSetting.vue
@@ -241,7 +241,7 @@ export default defineComponent({
let mj_api_options = ref([])
let image_suffix = computed(() => {
- debugger
+
let text = image_model_options.value.findIndex((item) => {
return item.value == mjSetting.value.image_model
})
@@ -262,7 +262,7 @@ export default defineComponent({
await window.api.GetDefineConfigJsonByProperty(
JSON.stringify(['img_base', 'mj_config', false, null]),
(value) => {
- debugger
+
console.log(value)
if (value.code == 0) {
message.error(value.message)
@@ -393,7 +393,7 @@ export default defineComponent({
)
.then((response) => response.json())
.then((data) => {
- debugger
+
// 修改配置信息(判断是不是niji或者是mj)
// 填充mj,niji数据
if (data.applications && data.application_commands) {
@@ -447,7 +447,7 @@ export default defineComponent({
await window.api.SaveDefineConfigJsonByProperty(
JSON.stringify(['img_base', 'mj_config', toRaw(mjSetting.value), false]),
(value) => {
- debugger
+
console.log(value)
if (value.code == 0) {
message.error(value.message)
@@ -520,7 +520,7 @@ export default defineComponent({
* 打开购买GPT的地址
*/
async function openGptBuyUrl() {
- debugger
+
let tmp_gb = mj_api_options.value.filter((item) => item.value == mjSetting.value.mj_api_url)
if (tmp_gb.length == 0) {
message.error('当前选择的服务商没有购买地址!')
diff --git a/src/renderer/src/components/Setting/SDSetting.vue b/src/renderer/src/components/Setting/SDSetting.vue
index 8c64a4d..fea16e2 100644
--- a/src/renderer/src/components/Setting/SDSetting.vue
+++ b/src/renderer/src/components/Setting/SDSetting.vue
@@ -167,7 +167,7 @@ export default defineComponent({
onMounted(async () => {
await window.api.InitSDConfig((value) => {
- debugger
+
if (value.code == 0) {
message.error(value.message)
return
@@ -231,7 +231,7 @@ export default defineComponent({
*/
async function LoadSDServiceData() {
await window.sd.LoadSDServiceData(toRaw(formValue.value).webui_api_url, (value) => {
- debugger
+
if (value.code == 0) {
message.error(value.message)
return
diff --git a/src/renderer/src/components/Setting/Setting.vue b/src/renderer/src/components/Setting/Setting.vue
index 950fc80..5fa8857 100644
--- a/src/renderer/src/components/Setting/Setting.vue
+++ b/src/renderer/src/components/Setting/Setting.vue
@@ -245,7 +245,7 @@ export default defineComponent({
* 加载GPT的配置信息
*/
async function InitGptOptions() {
- debugger
+
await window.api.getGptBusinessOption('all', (value) => {
if (value.code == 0) {
message.error(value.message)
@@ -368,7 +368,7 @@ export default defineComponent({
* 打开购买GPT的地址
*/
async function openGptBuyUrl() {
- debugger
+
let tmp_gb = gpt_options.value.filter((item) => item.value == formValue.value.gpt_business)
if (tmp_gb.length == 0) {
message.error('当前选择的服务商没有购买地址!')
@@ -387,7 +387,7 @@ export default defineComponent({
* @param {*} value 主题名称
*/
async function ChangeMode(value) {
- debugger
+
console.log(value)
const isDarkMode = await window.darkMode.toggle(value)
}
diff --git a/src/renderer/src/components/Setting/VideoGenerateSetting.vue b/src/renderer/src/components/Setting/VideoGenerateSetting.vue
index 54e33df..fc2ad04 100644
--- a/src/renderer/src/components/Setting/VideoGenerateSetting.vue
+++ b/src/renderer/src/components/Setting/VideoGenerateSetting.vue
@@ -1,29 +1,58 @@
- 注意:
所有的配置都是基于1440 * 1080。会根据分辨率自动计算匹配
-
-
-
-
-
- *
-
-
+ 注意:
所有的配置都是基于1440 * 1080。会根据分辨率自动计算匹配
+
+
+
+
+
+ *
+
+
-
-
-
-
- 上下:
-
- 左右:
-
-
+
+
+
+ 设置的值越大,图片移动的速度越快(若是图片的尺寸不够,也会被放的越大)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
设置的值越大,图片移动的速度越快(若是图片的尺寸不够,也会被放的越大)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 保存
-
-
-
-
-
- 注意: 当前有些字体读取不能准确获取。可以在后面的下面的编辑列表中进行简单的修改
-
-
-
-
- 更新字体列表
-
+
+
+
+
+ 保存
+
+
+
+
+
+ 注意: 当前有些字体读取不能准确获取。可以在后面的下面的编辑列表中进行简单的修改
+
+
+
+
+
+
+ 更新字体列表
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
-
-
-
- 保存信息
-
+
+
+
+
+
+
+ 保存信息
+
-
-
+
+
-
- 注意: 当前有些字体读取不能准确获取。可以在后面的下面的编辑列表中进行简单的修改
-
-
-
-
-
-
-
- 更新字体列表
-
+
+
+ 注意: 当前有些字体读取不能准确获取。可以在后面的下面的编辑列表中进行简单的修改
+
+
+
+
+
+
+
+
+
+ 更新字体列表
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
-
-
-
- 保存信息
-
+
+
+
+
+
+
+ 保存信息
+
-
-
+
+
-
-
- 注意:
-
设置背景乐对应的文件夹,选择对应的分类,可以随机匹配音乐
-
-
-
-
+
+
+ 注意:
+
设置背景乐对应的文件夹,选择对应的分类,可以随机匹配音乐
+
+
+
+
\ No newline at end of file
+
diff --git a/src/renderer/src/components/Watermark/GetWaterMask.vue b/src/renderer/src/components/Watermark/GetWaterMask.vue
index 6bce69a..76040cc 100644
--- a/src/renderer/src/components/Watermark/GetWaterMask.vue
+++ b/src/renderer/src/components/Watermark/GetWaterMask.vue
@@ -174,7 +174,7 @@ export default defineComponent({
* @param image
*/
function getCurrentWidthHeight(image) {
- debugger
+
let image_width = 512
let image_height = 512
// 设置图片的大小
@@ -212,7 +212,7 @@ export default defineComponent({
* 停止画
*/
function stopDrawing() {
- debugger
+
isDrawing = false
canvasHistory.push(imageCanvas.value.toDataURL('image/png'))
console.log(canvasHistory)
@@ -294,7 +294,7 @@ export default defineComponent({
* 回撤
*/
async function undo() {
- debugger
+
if (step <= 0) {
// 如果没有可以撤销的步骤,就清空画布
imageContext.value.clearRect(
@@ -388,7 +388,7 @@ export default defineComponent({
message.error(value.message)
return
}
- debugger
+
const arrayBuffer = value.data
const blob = new Blob([arrayBuffer], { type: 'image/png' })
const reader = new FileReader()
@@ -406,7 +406,7 @@ export default defineComponent({
}
async function SaveMask() {
- debugger
+
// 判断当前是不是又蒙板
if (canvasHistory.length <= 1) {
message.error('请先绘制蒙板')
@@ -418,7 +418,7 @@ export default defineComponent({
await window.img.Base64ToFile(
JSON.stringify([base64, `data/mask/mask_${new Date().getTime()}.png`]),
async (value) => {
- debugger
+
if (value.code == 0) {
message.error(value.message)
return
@@ -486,7 +486,7 @@ export default defineComponent({
})
// 提交处理任务,默认处理文件夹下面的所有的PNG图片
await window.img.BatchProcessImage('tmp/input_crop', (value) => {
- debugger
+
// 不管返回什么,这边都关掉
setTimeout(() => {
if (dp) {
@@ -496,6 +496,7 @@ export default defineComponent({
if (value.code == 0) {
message.error(value.message)
+ window.api.showGlobalMessageDialog(value)
return
}
window.api.showGlobalMessageDialog(value)
diff --git a/src/renderer/src/main.js b/src/renderer/src/main.js
index c1b07a3..7354213 100644
--- a/src/renderer/src/main.js
+++ b/src/renderer/src/main.js
@@ -3,6 +3,8 @@ import { createRouter, createWebHashHistory } from 'vue-router';
import App from './App.vue'
import { Home } from '@vicons/ionicons5';
const app = createApp(App);
+import { createPinia } from 'pinia'
+const pinia = createPinia()
const routes = [
{
@@ -33,5 +35,6 @@ const router = createRouter({
routes
})
app.use(router);
+app.use(pinia)
app.mount('#app')
diff --git a/src/stores/image.js b/src/stores/image.js
new file mode 100644
index 0000000..c51b77a
--- /dev/null
+++ b/src/stores/image.js
@@ -0,0 +1,18 @@
+import { defineStore } from "pinia";
+
+export const useImageStore = defineStore('image', {
+ state: () => ({
+ dragTarget: null
+ }),
+ getters: {
+ GetDragTarget() {
+ return this.dragTarget;
+ }
+
+ },
+ actions: {
+ SetDragTarget(target) {
+ this.dragTarget = target;
+ }
+ }
+});
\ No newline at end of file
diff --git a/src/stores/prompt.js b/src/stores/prompt.js
new file mode 100644
index 0000000..156fad7
--- /dev/null
+++ b/src/stores/prompt.js
@@ -0,0 +1,68 @@
+import { defineStore } from "pinia";
+
+export const usePromptStore = defineStore('prompt', {
+ state: () => ({
+ // 提示词排序
+ prompt_sort: [],
+ selectStyle: [],
+ suffix: null, // 后缀
+ prefix: null, // 前缀
+ image_generate_category: null, // 选择生图的分类(sd,mj,d3)
+
+ isInit: false
+ }),
+ getters: {
+ // 获取提示词排序
+ GetPromptSort() {
+ return this.prompt_sort;
+ },
+ // 获取选中的风格
+ GetSelectStyle() {
+ return this.selectStyle
+ },
+
+ // 获取前缀
+ GetPrefix() {
+ return this.prefix;
+ },
+
+ // 获取后缀
+ GetSuffix() {
+ return this.suffix;
+ },
+
+ // 获取生图分类
+ GetImageGenerateCategory() {
+ return this.image_generate_category;
+ }
+ },
+ actions: {
+
+ // 更新提示词排序
+ InitPromptSort(value) {
+
+ this.prompt_sort = value;
+ },
+
+ // 更新
+ UpdateSelectStyleSort(value) {
+ this.selectStyle = value;
+ },
+
+ // 更新前缀
+ UpdatePrefix(value) {
+ this.prefix = value;
+ },
+
+ // 更新后缀
+ UpdateSuffix(value) {
+ this.suffix = value;
+ },
+
+ // 更新生图分类
+ UpdateImageGenerateCategory(value) {
+ this.image_generate_category = value;
+ }
+
+ }
+});
\ No newline at end of file