From 37cb2cb0a5542e50803e35693fb852c378bb928f Mon Sep 17 00:00:00 2001 From: filtered <176114999+webfiltered@users.noreply.github.com> Date: Mon, 20 Jan 2025 06:31:52 +1100 Subject: [PATCH] [Desktop] Add quit command (#2286) Co-authored-by: github-actions Co-authored-by: Chenlei Hu --- src/extensions/core/electronAdapter.ts | 21 +++++++++++++++++++++ src/locales/en/commands.json | 3 +++ src/locales/en/main.json | 5 ++++- src/locales/fr/commands.json | 3 +++ src/locales/fr/main.json | 3 +++ src/locales/ja/commands.json | 3 +++ src/locales/ja/main.json | 3 +++ src/locales/ko/commands.json | 3 +++ src/locales/ko/main.json | 3 +++ src/locales/ru/commands.json | 3 +++ src/locales/ru/main.json | 3 +++ src/locales/zh/commands.json | 3 +++ src/locales/zh/main.json | 3 +++ 13 files changed, 58 insertions(+), 1 deletion(-) diff --git a/src/extensions/core/electronAdapter.ts b/src/extensions/core/electronAdapter.ts index ae68b659d..2fa6a2f3c 100644 --- a/src/extensions/core/electronAdapter.ts +++ b/src/extensions/core/electronAdapter.ts @@ -1,6 +1,7 @@ import { t } from '@/i18n' import { app } from '@/scripts/app' import { useDialogService } from '@/services/dialogService' +import { useWorkflowStore } from '@/stores/workflowStore' import { electronAPI as getElectronAPI, isElectron } from '@/utils/envUtil' ;(async () => { @@ -8,6 +9,7 @@ import { electronAPI as getElectronAPI, isElectron } from '@/utils/envUtil' const electronAPI = getElectronAPI() const desktopAppVersion = await electronAPI.getElectronVersion() + const workflowStore = useWorkflowStore() const onChangeRestartApp = (newValue: string, oldValue: string) => { // Add a delay to allow changes to take effect before restarting. @@ -149,6 +151,25 @@ import { electronAPI as getElectronAPI, isElectron } from '@/utils/envUtil' function() { electronAPI.restartApp() } + }, + { + id: 'Comfy-Desktop.Quit', + label: 'Quit', + icon: 'pi pi-sign-out', + async function() { + // Confirm if unsaved workflows are open + if (workflowStore.modifiedWorkflows.length > 0) { + const confirmed = await useDialogService().confirm({ + message: t('desktopMenu.confirmQuit'), + title: t('desktopMenu.quit'), + type: 'default' + }) + + if (!confirmed) return + } + + electronAPI.quit() + } } ], diff --git a/src/locales/en/commands.json b/src/locales/en/commands.json index b5a794c68..5013c6b5a 100644 --- a/src/locales/en/commands.json +++ b/src/locales/en/commands.json @@ -26,6 +26,9 @@ "Comfy-Desktop_OpenUserGuide": { "label": "Desktop User Guide" }, + "Comfy-Desktop_Quit": { + "label": "Quit" + }, "Comfy-Desktop_Reinstall": { "label": "Reinstall" }, diff --git a/src/locales/en/main.json b/src/locales/en/main.json index e8314268d..952f0bf62 100644 --- a/src/locales/en/main.json +++ b/src/locales/en/main.json @@ -361,6 +361,7 @@ "Open DevTools": "Open DevTools", "Feedback": "Feedback", "Desktop User Guide": "Desktop User Guide", + "Quit": "Quit", "Reinstall": "Reinstall", "Restart": "Restart", "Browse Templates": "Browse Templates", @@ -418,7 +419,9 @@ }, "desktopMenu": { "reinstall": "Reinstall", - "confirmReinstall": "This will clear your extra_models_config.yaml file,\nand begin installation again.\n\nAre you sure?" + "confirmReinstall": "This will clear your extra_models_config.yaml file,\nand begin installation again.\n\nAre you sure?", + "quit": "Quit", + "confirmQuit": "There are unsaved workflows open; any unsaved changes will be lost. Ignore this and quit?" }, "settingsCategories": { "Comfy-Desktop": "Comfy-Desktop", diff --git a/src/locales/fr/commands.json b/src/locales/fr/commands.json index 4419bac67..65b8182e2 100644 --- a/src/locales/fr/commands.json +++ b/src/locales/fr/commands.json @@ -26,6 +26,9 @@ "Comfy-Desktop_OpenUserGuide": { "label": "Guide de l'utilisateur du bureau" }, + "Comfy-Desktop_Quit": { + "label": "Quitter" + }, "Comfy-Desktop_Reinstall": { "label": "Réinstaller" }, diff --git a/src/locales/fr/main.json b/src/locales/fr/main.json index f649d9c21..0068dc2d1 100644 --- a/src/locales/fr/main.json +++ b/src/locales/fr/main.json @@ -43,7 +43,9 @@ "WEBCAM": "WEBCAM" }, "desktopMenu": { + "confirmQuit": "Il y a des flux de travail non enregistrés ouverts; toutes les modifications non enregistrées seront perdues. Ignorer cela et quitter?", "confirmReinstall": "Cela effacera votre fichier extra_models_config.yaml,\net commencera l'installation à nouveau.\n\nÊtes-vous sûr ?", + "quit": "Quitter", "reinstall": "Réinstaller" }, "downloadGit": { @@ -319,6 +321,7 @@ "Previous Opened Workflow": "Flux de travail ouvert précédent", "Queue Prompt": "Invite de file d'attente", "Queue Prompt (Front)": "Invite de file d'attente (Front)", + "Quit": "Quitter", "Redo": "Refaire", "Refresh Node Definitions": "Actualiser les définitions de nœud", "Reinstall": "Réinstaller", diff --git a/src/locales/ja/commands.json b/src/locales/ja/commands.json index 7feb7f5c2..9f4d20964 100644 --- a/src/locales/ja/commands.json +++ b/src/locales/ja/commands.json @@ -26,6 +26,9 @@ "Comfy-Desktop_OpenUserGuide": { "label": "デスクトップユーザーガイド" }, + "Comfy-Desktop_Quit": { + "label": "終了" + }, "Comfy-Desktop_Reinstall": { "label": "再インストール" }, diff --git a/src/locales/ja/main.json b/src/locales/ja/main.json index de4d46081..7511bdcc6 100644 --- a/src/locales/ja/main.json +++ b/src/locales/ja/main.json @@ -43,7 +43,9 @@ "WEBCAM": "ウェブカメラ" }, "desktopMenu": { + "confirmQuit": "保存されていないワークフローが開いています。保存されていない変更はすべて失われます。これを無視して終了しますか?", "confirmReinstall": "これにより、extra_models_config.yamlファイルがクリアされ、再インストールが開始されます。本当によろしいですか?", + "quit": "終了", "reinstall": "再インストール" }, "downloadGit": { @@ -319,6 +321,7 @@ "Previous Opened Workflow": "前に開いたワークフロー", "Queue Prompt": "キューのプロンプト", "Queue Prompt (Front)": "キューのプロンプト (前面)", + "Quit": "終了", "Redo": "やり直す", "Refresh Node Definitions": "ノード定義を更新", "Reinstall": "再インストール", diff --git a/src/locales/ko/commands.json b/src/locales/ko/commands.json index edd0740fb..94cf13278 100644 --- a/src/locales/ko/commands.json +++ b/src/locales/ko/commands.json @@ -26,6 +26,9 @@ "Comfy-Desktop_OpenUserGuide": { "label": "데스크톱 사용자 가이드" }, + "Comfy-Desktop_Quit": { + "label": "종료" + }, "Comfy-Desktop_Reinstall": { "label": "재설치" }, diff --git a/src/locales/ko/main.json b/src/locales/ko/main.json index fad0e3db8..a18e07dcf 100644 --- a/src/locales/ko/main.json +++ b/src/locales/ko/main.json @@ -43,7 +43,9 @@ "WEBCAM": "웹캠" }, "desktopMenu": { + "confirmQuit": "저장되지 않은 워크플로우가 열려 있습니다. 저장되지 않은 변경 사항은 모두 손실됩니다. 이를 무시하고 종료하시겠습니까?", "confirmReinstall": "이 작업은 extra_models_config.yaml 파일을 지우고 설치를 다시 시작합니다. 정말로 진행하시겠습니까?", + "quit": "종료", "reinstall": "재설치" }, "downloadGit": { @@ -319,6 +321,7 @@ "Previous Opened Workflow": "이전 열린 워크플로", "Queue Prompt": "실행 큐에 프롬프트 추가", "Queue Prompt (Front)": "실행 큐 맨 앞에 프롬프트 추가", + "Quit": "종료", "Redo": "다시 실행", "Refresh Node Definitions": "노드 정의 새로 고침", "Reinstall": "재설치", diff --git a/src/locales/ru/commands.json b/src/locales/ru/commands.json index 1b3257b5f..587d6ae28 100644 --- a/src/locales/ru/commands.json +++ b/src/locales/ru/commands.json @@ -26,6 +26,9 @@ "Comfy-Desktop_OpenUserGuide": { "label": "Руководство пользователя для рабочего стола" }, + "Comfy-Desktop_Quit": { + "label": "Выйти" + }, "Comfy-Desktop_Reinstall": { "label": "Переустановить" }, diff --git a/src/locales/ru/main.json b/src/locales/ru/main.json index 8e825cc5b..0bad0f29a 100644 --- a/src/locales/ru/main.json +++ b/src/locales/ru/main.json @@ -43,6 +43,8 @@ "WEBCAM": "ВЕБ-КАМЕРА" }, "desktopMenu": { + "confirmQuit": "Открыты несохраненные рабочие процессы; все несохраненные изменения будут потеряны. Проигнорировать это и выйти?", + "quit": "Выйти", "confirmReinstall": "Это очистит ваш файл extra_models_config.yaml и начнёт установку заново. Вы уверены?", "reinstall": "Переустановить" }, @@ -319,6 +321,7 @@ "Previous Opened Workflow": "Предыдущий открытый рабочий процесс", "Queue Prompt": "Запрос в очереди", "Queue Prompt (Front)": "Запрос в очереди (спереди)", + "Quit": "Выйти", "Redo": "Повторить", "Refresh Node Definitions": "Обновить определения нод", "Reinstall": "Переустановить", diff --git a/src/locales/zh/commands.json b/src/locales/zh/commands.json index 4018d46e4..7aabb01ba 100644 --- a/src/locales/zh/commands.json +++ b/src/locales/zh/commands.json @@ -26,6 +26,9 @@ "Comfy-Desktop_OpenUserGuide": { "label": "桌面用户指南" }, + "Comfy-Desktop_Quit": { + "label": "退出" + }, "Comfy-Desktop_Reinstall": { "label": "重新安装" }, diff --git a/src/locales/zh/main.json b/src/locales/zh/main.json index dfeaeac52..2eb6213ee 100644 --- a/src/locales/zh/main.json +++ b/src/locales/zh/main.json @@ -43,7 +43,9 @@ "WEBCAM": "摄像头" }, "desktopMenu": { + "confirmQuit": "有未保存的工作流程开启;任何未保存的更改都将丢失。忽略此警告并退出?", "confirmReinstall": "这将清除您的 extra_models_config.yaml 文件,并重新开始安装。您确定吗?", + "quit": "退出", "reinstall": "重新安装" }, "downloadGit": { @@ -319,6 +321,7 @@ "Previous Opened Workflow": "上一个打开的工作流", "Queue Prompt": "执行提示词", "Queue Prompt (Front)": "执行提示词 (优先执行)", + "Quit": "退出", "Redo": "重做", "Refresh Node Definitions": "刷新节点定义", "Reinstall": "重新安装",