From d028c435c66d082599a4506d622df713a3858ead Mon Sep 17 00:00:00 2001 From: Cyril Zakka <1841186+cyrilzakka@users.noreply.github.com> Date: Thu, 12 Jan 2023 21:33:18 -0800 Subject: [PATCH] Added macOS UI skeleton --- .../AccentColor.colorset/Contents.json | 11 ++ .../AppIcon.appiconset/Contents.json | 58 ++++++ Diffusion-macOS/Assets.xcassets/Contents.json | 6 + Diffusion-macOS/ContentView.swift | 34 ++++ Diffusion-macOS/Diffusion_macOS.entitlements | 10 + Diffusion-macOS/Diffusion_macOSApp.swift | 17 ++ .../Preview Assets.xcassets/Contents.json | 6 + Diffusion-macOS/PromptView.swift | 106 +++++++++++ Diffusion-macOS/StatusView.swift | 20 ++ Diffusion.xcodeproj/project.pbxproj | 172 +++++++++++++++++- .../xcshareddata/swiftpm/Package.resolved | 50 +++++ .../UserInterfaceState.xcuserstate | Bin 0 -> 32724 bytes .../xcschemes/xcschememanagement.plist | 19 ++ 13 files changed, 508 insertions(+), 1 deletion(-) create mode 100644 Diffusion-macOS/Assets.xcassets/AccentColor.colorset/Contents.json create mode 100644 Diffusion-macOS/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 Diffusion-macOS/Assets.xcassets/Contents.json create mode 100644 Diffusion-macOS/ContentView.swift create mode 100644 Diffusion-macOS/Diffusion_macOS.entitlements create mode 100644 Diffusion-macOS/Diffusion_macOSApp.swift create mode 100644 Diffusion-macOS/Preview Content/Preview Assets.xcassets/Contents.json create mode 100644 Diffusion-macOS/PromptView.swift create mode 100644 Diffusion-macOS/StatusView.swift create mode 100644 Diffusion.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved create mode 100644 Diffusion.xcodeproj/project.xcworkspace/xcuserdata/cyril.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 Diffusion.xcodeproj/xcuserdata/cyril.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/Diffusion-macOS/Assets.xcassets/AccentColor.colorset/Contents.json b/Diffusion-macOS/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..eb87897 --- /dev/null +++ b/Diffusion-macOS/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Diffusion-macOS/Assets.xcassets/AppIcon.appiconset/Contents.json b/Diffusion-macOS/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..3f00db4 --- /dev/null +++ b/Diffusion-macOS/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,58 @@ +{ + "images" : [ + { + "idiom" : "mac", + "scale" : "1x", + "size" : "16x16" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "16x16" + }, + { + "idiom" : "mac", + "scale" : "1x", + "size" : "32x32" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "32x32" + }, + { + "idiom" : "mac", + "scale" : "1x", + "size" : "128x128" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "128x128" + }, + { + "idiom" : "mac", + "scale" : "1x", + "size" : "256x256" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "256x256" + }, + { + "idiom" : "mac", + "scale" : "1x", + "size" : "512x512" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "512x512" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Diffusion-macOS/Assets.xcassets/Contents.json b/Diffusion-macOS/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/Diffusion-macOS/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Diffusion-macOS/ContentView.swift b/Diffusion-macOS/ContentView.swift new file mode 100644 index 0000000..6d3bfa1 --- /dev/null +++ b/Diffusion-macOS/ContentView.swift @@ -0,0 +1,34 @@ +// +// ContentView.swift +// Diffusion-macOS +// +// Created by Cyril Zakka on 1/12/23. +// + +import SwiftUI + +struct ContentView: View { + var body: some View { + NavigationSplitView { + PromptView() + .navigationSplitViewColumnWidth(min: 250, ideal: 300) + } detail: { + Image("placeholder") + .resizable() + .aspectRatio(contentMode: .fit) + .frame(width: 400, height: 400) + .cornerRadius(15) + .toolbar { + Button(action: {}) { + Label("share", systemImage: "square.and.arrow.up") + } + } + } + } +} + +struct ContentView_Previews: PreviewProvider { + static var previews: some View { + ContentView() + } +} diff --git a/Diffusion-macOS/Diffusion_macOS.entitlements b/Diffusion-macOS/Diffusion_macOS.entitlements new file mode 100644 index 0000000..f2ef3ae --- /dev/null +++ b/Diffusion-macOS/Diffusion_macOS.entitlements @@ -0,0 +1,10 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.files.user-selected.read-only + + + diff --git a/Diffusion-macOS/Diffusion_macOSApp.swift b/Diffusion-macOS/Diffusion_macOSApp.swift new file mode 100644 index 0000000..e4c71eb --- /dev/null +++ b/Diffusion-macOS/Diffusion_macOSApp.swift @@ -0,0 +1,17 @@ +// +// Diffusion_macOSApp.swift +// Diffusion-macOS +// +// Created by Cyril Zakka on 1/12/23. +// + +import SwiftUI + +@main +struct Diffusion_macOSApp: App { + var body: some Scene { + WindowGroup { + ContentView() + } + } +} diff --git a/Diffusion-macOS/Preview Content/Preview Assets.xcassets/Contents.json b/Diffusion-macOS/Preview Content/Preview Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/Diffusion-macOS/Preview Content/Preview Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Diffusion-macOS/PromptView.swift b/Diffusion-macOS/PromptView.swift new file mode 100644 index 0000000..f1bf64b --- /dev/null +++ b/Diffusion-macOS/PromptView.swift @@ -0,0 +1,106 @@ +// +// PromptView.swift +// Diffusion-macOS +// +// Created by Cyril Zakka on 1/12/23. +// + +import SwiftUI +import CompactSlider + + +struct PromptView: View { + + var models = ["hf-default-model"] + + @State private var model = "hf-default-model" + @State private var positivePrompt = "" + @State private var negativePrompt = "" + @State private var steps = 50.0 + @State private var numImages = 1.0 + @State private var seed = 386.0 + + var body: some View { + VStack(alignment: .leading) { + + Label("Adjustments", systemImage: "gearshape.2") + .font(.headline) + .fontWeight(.bold) + Divider() + + ScrollView { + Group { + DisclosureGroup { + Picker("", selection: $model) { + ForEach(models, id: \.self) { + Text($0) + } + } + } label: { + Label("Model", systemImage: "cpu").foregroundColor(.secondary) + } + + Divider() + + DisclosureGroup { + Group { + TextField("Positive prompt", text: $positivePrompt, + axis: .vertical).lineLimit(5) + .textFieldStyle(.squareBorder) + .listRowInsets(EdgeInsets(top: 0, leading: -20, bottom: 0, trailing: 20)) + TextField("Negative prompt", text: $negativePrompt, + axis: .vertical).lineLimit(5) + .textFieldStyle(.squareBorder) + }.padding(.leading, 10) + } label: { + Label("Prompts", systemImage: "text.quote").foregroundColor(.secondary) + } + + Divider() + + DisclosureGroup { + CompactSlider(value: $steps, in: 0...250, step: 5) { + Text("Steps") + Spacer() + Text("\(Int(steps))") + }.padding(.leading, 10) + } label: { + Label("Step count", systemImage: "square.3.layers.3d.down.left").foregroundColor(.secondary) + } + + Divider() + DisclosureGroup() { + CompactSlider(value: $numImages, in: 0...10, step: 1) { + Text("Number of Images") + Spacer() + Text("\(Int(numImages))") + }.padding(.leading, 10) + } label: { + Label("Number of images", systemImage: "photo.stack").foregroundColor(.secondary) + } + Divider() + DisclosureGroup() { + CompactSlider(value: $seed, in: 0...1000, step: 1) { + Text("Random seed") + Spacer() + Text("\(Int(seed))") + }.padding(.leading, 10) + } label: { + Label("Random Seed", systemImage: "leaf").foregroundColor(.secondary) + } + } + + } + Button { + // Generate image here + } label: { + Text("Generate") + .frame(maxWidth: .infinity) + .frame(height: 50) + } + .buttonStyle(.borderedProminent) +// StatusView() + }.padding() + } +} + diff --git a/Diffusion-macOS/StatusView.swift b/Diffusion-macOS/StatusView.swift new file mode 100644 index 0000000..1eac324 --- /dev/null +++ b/Diffusion-macOS/StatusView.swift @@ -0,0 +1,20 @@ +// +// StatusView.swift +// Diffusion-macOS +// +// Created by Cyril Zakka on 1/12/23. +// + +import SwiftUI + +struct StatusView: View { + var body: some View { + Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/) + } +} + +struct StatusView_Previews: PreviewProvider { + static var previews: some View { + StatusView() + } +} diff --git a/Diffusion.xcodeproj/project.pbxproj b/Diffusion.xcodeproj/project.pbxproj index 4bbbe0b..ad063ec 100644 --- a/Diffusion.xcodeproj/project.pbxproj +++ b/Diffusion.xcodeproj/project.pbxproj @@ -22,6 +22,14 @@ EBE755E7293E37DE00806B32 /* DiffusionUITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBE755E6293E37DE00806B32 /* DiffusionUITestsLaunchTests.swift */; }; EBE75602293E91E200806B32 /* Pipeline.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBE75601293E91E200806B32 /* Pipeline.swift */; }; EBE756092941178600806B32 /* Loading.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBE756082941178600806B32 /* Loading.swift */; }; + F15520242971093300DC009B /* Diffusion_macOSApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = F15520232971093300DC009B /* Diffusion_macOSApp.swift */; }; + F15520262971093300DC009B /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F15520252971093300DC009B /* ContentView.swift */; }; + F15520282971093400DC009B /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = F15520272971093400DC009B /* Assets.xcassets */; }; + F155202B2971093400DC009B /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = F155202A2971093400DC009B /* Preview Assets.xcassets */; }; + F1552031297109C300DC009B /* PromptView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1552030297109C300DC009B /* PromptView.swift */; }; + F155203229710A1300DC009B /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = EBE755CC293E37DD00806B32 /* Assets.xcassets */; }; + F155203429710B3600DC009B /* StatusView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F155203329710B3600DC009B /* StatusView.swift */; }; + F155203C297118E700DC009B /* CompactSlider in Frameworks */ = {isa = PBXBuildFile; productRef = F155203B297118E700DC009B /* CompactSlider */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,6 +70,14 @@ EBE755E6293E37DE00806B32 /* DiffusionUITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DiffusionUITestsLaunchTests.swift; sourceTree = ""; }; EBE75601293E91E200806B32 /* Pipeline.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Pipeline.swift; sourceTree = ""; }; EBE756082941178600806B32 /* Loading.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Loading.swift; sourceTree = ""; }; + F15520212971093300DC009B /* Diffusion-macOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Diffusion-macOS.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + F15520232971093300DC009B /* Diffusion_macOSApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Diffusion_macOSApp.swift; sourceTree = ""; }; + F15520252971093300DC009B /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; + F15520272971093400DC009B /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + F155202A2971093400DC009B /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; + F155202C2971093400DC009B /* Diffusion_macOS.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Diffusion_macOS.entitlements; sourceTree = ""; }; + F1552030297109C300DC009B /* PromptView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PromptView.swift; sourceTree = ""; }; + F155203329710B3600DC009B /* StatusView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusView.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -89,6 +105,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + F155201E2971093300DC009B /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F155203C297118E700DC009B /* CompactSlider in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -109,6 +133,7 @@ EBE443892948953600CDA605 /* LICENSE */, EBE755FF293E910800806B32 /* Packages */, EBE755C7293E37DD00806B32 /* Diffusion */, + F15520222971093300DC009B /* Diffusion-macOS */, EBE755D9293E37DE00806B32 /* DiffusionTests */, EBE755E3293E37DE00806B32 /* DiffusionUITests */, EBE755C6293E37DD00806B32 /* Products */, @@ -122,6 +147,7 @@ EBE755C5293E37DD00806B32 /* Diffusion.app */, EBE755D6293E37DE00806B32 /* DiffusionTests.xctest */, EBE755E0293E37DE00806B32 /* DiffusionUITests.xctest */, + F15520212971093300DC009B /* Diffusion-macOS.app */, ); name = Products; sourceTree = ""; @@ -190,6 +216,28 @@ path = Views; sourceTree = ""; }; + F15520222971093300DC009B /* Diffusion-macOS */ = { + isa = PBXGroup; + children = ( + F15520232971093300DC009B /* Diffusion_macOSApp.swift */, + F15520252971093300DC009B /* ContentView.swift */, + F1552030297109C300DC009B /* PromptView.swift */, + F155203329710B3600DC009B /* StatusView.swift */, + F15520272971093400DC009B /* Assets.xcassets */, + F155202C2971093400DC009B /* Diffusion_macOS.entitlements */, + F15520292971093400DC009B /* Preview Content */, + ); + path = "Diffusion-macOS"; + sourceTree = ""; + }; + F15520292971093400DC009B /* Preview Content */ = { + isa = PBXGroup; + children = ( + F155202A2971093400DC009B /* Preview Assets.xcassets */, + ); + path = "Preview Content"; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -251,6 +299,26 @@ productReference = EBE755E0293E37DE00806B32 /* DiffusionUITests.xctest */; productType = "com.apple.product-type.bundle.ui-testing"; }; + F15520202971093300DC009B /* Diffusion-macOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = F155202F2971093400DC009B /* Build configuration list for PBXNativeTarget "Diffusion-macOS" */; + buildPhases = ( + F155201D2971093300DC009B /* Sources */, + F155201E2971093300DC009B /* Frameworks */, + F155201F2971093300DC009B /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "Diffusion-macOS"; + packageProductDependencies = ( + F155203B297118E700DC009B /* CompactSlider */, + ); + productName = "Diffusion-macOS"; + productReference = F15520212971093300DC009B /* Diffusion-macOS.app */; + productType = "com.apple.product-type.application"; + }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -258,7 +326,7 @@ isa = PBXProject; attributes = { BuildIndependentTargetsInParallel = 1; - LastSwiftUpdateCheck = 1410; + LastSwiftUpdateCheck = 1420; LastUpgradeCheck = 1410; TargetAttributes = { EBE755C4293E37DD00806B32 = { @@ -272,6 +340,9 @@ CreatedOnToolsVersion = 14.1; TestTargetID = EBE755C4293E37DD00806B32; }; + F15520202971093300DC009B = { + CreatedOnToolsVersion = 14.2; + }; }; }; buildConfigurationList = EBE755C0293E37DD00806B32 /* Build configuration list for PBXProject "Diffusion" */; @@ -287,6 +358,7 @@ EBB5BA5629425E17003A2A5B /* XCRemoteSwiftPackageReference "Path.swift" */, EBB5BA5B294504DE003A2A5B /* XCRemoteSwiftPackageReference "ZIPFoundation" */, EB33A51B2954D89F00B16357 /* XCRemoteSwiftPackageReference "ml-stable-diffusion" */, + F155203A297118E600DC009B /* XCRemoteSwiftPackageReference "CompactSlider" */, ); productRefGroup = EBE755C6293E37DD00806B32 /* Products */; projectDirPath = ""; @@ -295,6 +367,7 @@ EBE755C4293E37DD00806B32 /* Diffusion */, EBE755D5293E37DE00806B32 /* DiffusionTests */, EBE755DF293E37DE00806B32 /* DiffusionUITests */, + F15520202971093300DC009B /* Diffusion-macOS */, ); }; /* End PBXProject section */ @@ -323,6 +396,16 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + F155201F2971093300DC009B /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + F155202B2971093400DC009B /* Preview Assets.xcassets in Resources */, + F155203229710A1300DC009B /* Assets.xcassets in Resources */, + F15520282971093400DC009B /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -357,6 +440,17 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + F155201D2971093300DC009B /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + F15520262971093300DC009B /* ContentView.swift in Sources */, + F1552031297109C300DC009B /* PromptView.swift in Sources */, + F155203429710B3600DC009B /* StatusView.swift in Sources */, + F15520242971093300DC009B /* Diffusion_macOSApp.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ @@ -654,6 +748,60 @@ }; name = Release; }; + F155202D2971093400DC009B /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_ENTITLEMENTS = "Diffusion-macOS/Diffusion_macOS.entitlements"; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_ASSET_PATHS = "\"Diffusion-macOS/Preview Content\""; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_NSHumanReadableCopyright = ""; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 13.1; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = "com.cyrilzakka.Diffusion-macOS"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = macosx; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + F155202E2971093400DC009B /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_ENTITLEMENTS = "Diffusion-macOS/Diffusion_macOS.entitlements"; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_ASSET_PATHS = "\"Diffusion-macOS/Preview Content\""; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_NSHumanReadableCopyright = ""; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 13.1; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = "com.cyrilzakka.Diffusion-macOS"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = macosx; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -693,6 +841,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + F155202F2971093400DC009B /* Build configuration list for PBXNativeTarget "Diffusion-macOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + F155202D2971093400DC009B /* Debug */, + F155202E2971093400DC009B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; /* End XCConfigurationList section */ /* Begin XCRemoteSwiftPackageReference section */ @@ -720,6 +877,14 @@ minimumVersion = 0.9.9; }; }; + F155203A297118E600DC009B /* XCRemoteSwiftPackageReference "CompactSlider" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/buh/CompactSlider.git"; + requirement = { + branch = main; + kind = branch; + }; + }; /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ @@ -738,6 +903,11 @@ package = EBB5BA5B294504DE003A2A5B /* XCRemoteSwiftPackageReference "ZIPFoundation" */; productName = ZIPFoundation; }; + F155203B297118E700DC009B /* CompactSlider */ = { + isa = XCSwiftPackageProductDependency; + package = F155203A297118E600DC009B /* XCRemoteSwiftPackageReference "CompactSlider" */; + productName = CompactSlider; + }; /* End XCSwiftPackageProductDependency section */ }; rootObject = EBE755BD293E37DD00806B32 /* Project object */; diff --git a/Diffusion.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Diffusion.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved new file mode 100644 index 0000000..6f69852 --- /dev/null +++ b/Diffusion.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -0,0 +1,50 @@ +{ + "pins" : [ + { + "identity" : "compactslider", + "kind" : "remoteSourceControl", + "location" : "https://github.com/buh/CompactSlider.git", + "state" : { + "branch" : "main", + "revision" : "3cb37fb7385913835b6844c6af2680c64000dcd2" + } + }, + { + "identity" : "ml-stable-diffusion", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/ml-stable-diffusion", + "state" : { + "branch" : "main", + "revision" : "fb1fa01c9d30e9b2e02a8b7ed35d905e272a0262" + } + }, + { + "identity" : "path.swift", + "kind" : "remoteSourceControl", + "location" : "https://github.com/mxcl/Path.swift.git", + "state" : { + "revision" : "9c6f807b0a76be0e27aecc908bc6f173400d839e", + "version" : "1.4.0" + } + }, + { + "identity" : "swift-argument-parser", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-argument-parser.git", + "state" : { + "revision" : "fddd1c00396eed152c45a46bea9f47b98e59301d", + "version" : "1.2.0" + } + }, + { + "identity" : "zipfoundation", + "kind" : "remoteSourceControl", + "location" : "https://github.com/weichsel/ZIPFoundation.git", + "state" : { + "revision" : "43ec568034b3731101dbf7670765d671c30f54f3", + "version" : "0.9.16" + } + } + ], + "version" : 2 +} diff --git a/Diffusion.xcodeproj/project.xcworkspace/xcuserdata/cyril.xcuserdatad/UserInterfaceState.xcuserstate b/Diffusion.xcodeproj/project.xcworkspace/xcuserdata/cyril.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..42119b30ce06409f6ca2e9437fcaf42dc32fe3a7 GIT binary patch literal 32724 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 tO`c6YO} + + + + SchemeUserState + + Diffusion-macOS.xcscheme_^#shared#^_ + + orderHint + 1 + + Diffusion.xcscheme_^#shared#^_ + + orderHint + 0 + + + +