From 6deb99423558d249e697fd98ab219a90f29faf51 Mon Sep 17 00:00:00 2001 From: Chenlei Hu Date: Fri, 4 Oct 2024 20:33:16 -0400 Subject: [PATCH] Add command to switch opened workflow tabs (#1109) --- src/stores/commandStore.ts | 17 +++++++++++++++++ src/stores/workflowStore.ts | 26 +++++++++++++++++++++++++- 2 files changed, 42 insertions(+), 1 deletion(-) diff --git a/src/stores/commandStore.ts b/src/stores/commandStore.ts index fe70a7c21..861c4b6e5 100644 --- a/src/stores/commandStore.ts +++ b/src/stores/commandStore.ts @@ -16,6 +16,7 @@ import { useWorkspaceStore } from './workspaceStateStore' import { LGraphGroup } from '@comfyorg/litegraph' import { useTitleEditorStore } from './graphStore' import { useErrorHandling } from '@/hooks/errorHooks' +import { useWorkflowStore } from './workflowStore' export interface ComfyCommand { id: string @@ -296,6 +297,22 @@ export const useCommandStore = defineStore('command', () => { app.canvas.graph.add(group) useTitleEditorStore().titleEditorTarget = group } + }, + { + id: 'Workspace.NextOpenedWorkflow', + icon: 'pi pi-step-forward', + label: 'Next Opened Workflow', + function: () => { + useWorkflowStore().loadNextOpenedWorkflow() + } + }, + { + id: 'Workspace.PreviousOpenedWorkflow', + icon: 'pi pi-step-backward', + label: 'Previous Opened Workflow', + function: () => { + useWorkflowStore().loadPreviousOpenedWorkflow() + } } ] diff --git a/src/stores/workflowStore.ts b/src/stores/workflowStore.ts index 0baa88c04..7eca26b5e 100644 --- a/src/stores/workflowStore.ts +++ b/src/stores/workflowStore.ts @@ -40,6 +40,28 @@ export const useWorkflowStore = defineStore('workflow', () => { buildTree(openWorkflows.value, (workflow: ComfyWorkflow) => [workflow.key]) ) + const loadOpenedWorkflowIndexShift = async (shift: number) => { + const index = openWorkflows.value.indexOf( + activeWorkflow.value as ComfyWorkflow + ) + if (index !== -1) { + const length = openWorkflows.value.length + const nextIndex = (index + shift + length) % length + const nextWorkflow = openWorkflows.value[nextIndex] + if (nextWorkflow) { + await nextWorkflow.load() + } + } + } + + const loadNextOpenedWorkflow = async () => { + await loadOpenedWorkflowIndexShift(1) + } + + const loadPreviousOpenedWorkflow = async () => { + await loadOpenedWorkflowIndexShift(-1) + } + return { activeWorkflow, workflows, @@ -50,7 +72,9 @@ export const useWorkflowStore = defineStore('workflow', () => { workflowsTree, bookmarkedWorkflowsTree, openWorkflowsTree, - buildWorkflowTree + buildWorkflowTree, + loadNextOpenedWorkflow, + loadPreviousOpenedWorkflow } })