diff --git a/SwiftDiffusion.xcodeproj/project.pbxproj b/SwiftDiffusion.xcodeproj/project.pbxproj index aca81f1..4ae9697 100644 --- a/SwiftDiffusion.xcodeproj/project.pbxproj +++ b/SwiftDiffusion.xcodeproj/project.pbxproj @@ -79,6 +79,7 @@ 2975DF112B8BE7C30031690E /* CheckpointMenu.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2975DF102B8BE7C30031690E /* CheckpointMenu.swift */; }; 2975DF142B8C08800031690E /* VaeModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2975DF132B8C08800031690E /* VaeModel.swift */; }; 2975DF162B8C0BAB0031690E /* VaeModelMenu.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2975DF152B8C0BAB0031690E /* VaeModelMenu.swift */; }; + 2991FDD92B9BC38800D553F6 /* PromptBarButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2991FDD82B9BC38800D553F6 /* PromptBarButton.swift */; }; 29949F252B9655F4004F8D60 /* SidebarModel+Delete.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29949F242B9655F4004F8D60 /* SidebarModel+Delete.swift */; }; 29949F272B965E49004F8D60 /* SidebarModel+Create.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29949F262B965E49004F8D60 /* SidebarModel+Create.swift */; }; 2996D0942B6ED5B000B487D5 /* SwiftDiffusionApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2996D0932B6ED5B000B487D5 /* SwiftDiffusionApp.swift */; }; @@ -238,6 +239,7 @@ 2975DF102B8BE7C30031690E /* CheckpointMenu.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CheckpointMenu.swift; sourceTree = ""; }; 2975DF132B8C08800031690E /* VaeModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VaeModel.swift; sourceTree = ""; }; 2975DF152B8C0BAB0031690E /* VaeModelMenu.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VaeModelMenu.swift; sourceTree = ""; }; + 2991FDD82B9BC38800D553F6 /* PromptBarButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PromptBarButton.swift; sourceTree = ""; }; 29949F242B9655F4004F8D60 /* SidebarModel+Delete.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SidebarModel+Delete.swift"; sourceTree = ""; }; 29949F262B965E49004F8D60 /* SidebarModel+Create.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SidebarModel+Create.swift"; sourceTree = ""; }; 2996D0902B6ED5B000B487D5 /* SwiftDiffusion.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SwiftDiffusion.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -352,6 +354,7 @@ 29145E702B77D94900BFA64B /* PromptBars */ = { isa = PBXGroup; children = ( + 2991FDD82B9BC38800D553F6 /* PromptBarButton.swift */, 29145E722B77D99400BFA64B /* PromptControlBar.swift */, 29708F932B803350004A95AD /* PasteGenerationDataStatusBar.swift */, ); @@ -1253,6 +1256,7 @@ 292A30DD2B9017F700344DA8 /* WorkspaceItemView.swift in Sources */, 29A7BDE12B8A40F200F9144B /* ApiCheckpointRow.swift in Sources */, 2971966B2B71A5AC000F7960 /* Delay.swift in Sources */, + 2991FDD92B9BC38800D553F6 /* PromptBarButton.swift in Sources */, 29A1E0BF2B81057300B18AC1 /* ScriptManagerObserver.swift in Sources */, 29F91D2F2B8D25160047B3C9 /* SidebarStoredItemView.swift in Sources */, 292CE8092B81771B00116D60 /* CheckpointModelPreferences.swift in Sources */, diff --git a/SwiftDiffusion/Views/MainViews/PromptView/PromptBars/PromptBarButton.swift b/SwiftDiffusion/Views/MainViews/PromptView/PromptBars/PromptBarButton.swift new file mode 100644 index 0000000..867bd1d --- /dev/null +++ b/SwiftDiffusion/Views/MainViews/PromptView/PromptBars/PromptBarButton.swift @@ -0,0 +1,44 @@ +// +// PromptBarButton.swift +// SwiftDiffusion +// +// Created by Justin Bush on 3/8/24. +// + +import SwiftUI + +enum AlignSymbol { + case leading, trailing +} + +struct PromptBarButton: View { + let title: String + let symbol: SFSymbol + var align: AlignSymbol = .leading + let action: () -> Void + + var body: some View { + Button(action: action) { + if align == .leading { symbol.image } + Text(title) + if align == .trailing { symbol.image } + } + .buttonStyle(.accessoryBar) + } +} + +#Preview { + return HStack { + PromptBarButton(title: "Close", symbol: .close, align: .leading, action: { + + }) + + Spacer() + + PromptBarButton(title: "Save", symbol: .save, align: .trailing, action: { + + }) + } + .padding() + .frame(width: 400) +} diff --git a/SwiftDiffusion/Views/MainViews/PromptView/PromptBars/PromptControlBar.swift b/SwiftDiffusion/Views/MainViews/PromptView/PromptBars/PromptControlBar.swift index daeba0e..2090a64 100644 --- a/SwiftDiffusion/Views/MainViews/PromptView/PromptBars/PromptControlBar.swift +++ b/SwiftDiffusion/Views/MainViews/PromptView/PromptBars/PromptControlBar.swift @@ -38,26 +38,6 @@ struct PromptControlBarView: View { } } -enum AlignSymbol { - case leading, trailing -} - -struct PromptBarButton: View { - let title: String - let symbol: SFSymbol - var align: AlignSymbol = .leading - let action: () -> Void - - var body: some View { - Button(action: action) { - if align == .leading { symbol.image } - Text(title) - if align == .trailing { symbol.image } - } - .buttonStyle(.accessoryBar) - } -} - struct PromptControlBar: View { @Environment(\.modelContext) private var modelContext @EnvironmentObject var currentPrompt: PromptModel