Do not show advanced settings if ane is not available.

pull/28/head
Pedro Cuenca 2 years ago
parent 904971bd9b
commit 68d72c7473

@ -283,44 +283,46 @@ struct ControlsView: View {
} }
}.foregroundColor(.secondary) }.foregroundColor(.secondary)
} }
Divider()
DisclosureGroup(isExpanded: $disclosedAdvanced) { if hasANE {
HStack { Divider()
Toggle("Use Neural Engine", isOn: $useANE).onChange(of: useANE) { value in DisclosureGroup(isExpanded: $disclosedAdvanced) {
guard let currentModel = ModelInfo.from(modelVersion: model) else { return } HStack {
let variantDownloaded = isModelDownloaded(currentModel, variant: useANE ? .splitEinsum : .original) Toggle("Use Neural Engine", isOn: $useANE).onChange(of: useANE) { value in
if variantDownloaded { guard let currentModel = ModelInfo.from(modelVersion: model) else { return }
updateANEState() let variantDownloaded = isModelDownloaded(currentModel, variant: useANE ? .splitEinsum : .original)
} else { if variantDownloaded {
mustShowModelDownloadDisclaimer.toggle() updateANEState()
} else {
mustShowModelDownloadDisclaimer.toggle()
}
} }
.padding(.leading, 10)
Spacer()
} }
.padding(.leading, 10) .alert("Download Required", isPresented: $mustShowModelDownloadDisclaimer, actions: {
Spacer() Button("Cancel", role: .destructive) { useANE.toggle() }
} Button("Download", role: .cancel) { updateANEState() }
.alert("Download Required", isPresented: $mustShowModelDownloadDisclaimer, actions: { }, message: {
Button("Cancel", role: .destructive) { useANE.toggle() } Text("This setting requires a new version of the selected model.")
Button("Download", role: .cancel) { updateANEState() } })
}, message: { } label: {
Text("This setting requires a new version of the selected model.") HStack {
}) Label("Advanced", systemImage: "terminal").foregroundColor(.secondary)
} label: { Spacer()
HStack { if disclosedAdvanced {
Label("Advanced", systemImage: "terminal").foregroundColor(.secondary) Button {
Spacer() showAdvancedHelp.toggle()
if disclosedAdvanced { } label: {
Button { Image(systemName: "info.circle")
showAdvancedHelp.toggle() }
} label: { .buttonStyle(.plain)
Image(systemName: "info.circle") .popover(isPresented: $showAdvancedHelp, arrowEdge: .trailing) {
} advancedHelp($showAdvancedHelp)
.buttonStyle(.plain) }
.popover(isPresented: $showAdvancedHelp, arrowEdge: .trailing) {
advancedHelp($showAdvancedHelp)
} }
} }.foregroundColor(.secondary)
}.foregroundColor(.secondary) }
} }
} }
} }

@ -18,3 +18,10 @@ struct Diffusion_macOSApp: App {
} }
let runningOnMac = true let runningOnMac = true
#if canImport(MLCompute)
import MLCompute
let hasANE = MLCDevice.ane() != nil
#else
let hasANE = false
#endif

Loading…
Cancel
Save