david-swift 04c77831b5
Some checks are pending
Deploy Docs / publish (push) Waiting to run
SwiftLint / SwiftLint (push) Waiting to run
Remove Core library
2025-10-30 21:36:13 +01:00

56 lines
1.7 KiB
Swift

//
// EntryRow+.swift
// Adwaita
//
// Created by david-swift on 20.01.24.
//
import CAdw
extension EntryRow {
/// Initialize an entry row.
/// - Parameters:
/// - title: The row's title.
/// - text: The text.
public init(_ title: String, text: Binding<String>) {
self.init()
self = self.title(title)
updateFunctions.append { storage, _, _ in
storage.notify(name: "text") {
let newValue = String(cString: gtk_editable_get_text(storage.opaquePointer))
if text.wrappedValue != newValue {
text.wrappedValue = newValue
}
}
if text.wrappedValue != .init(cString: gtk_editable_get_text(storage.opaquePointer)) {
gtk_editable_set_text(storage.opaquePointer, text.wrappedValue)
}
}
}
/// Set the entry row's subtitle.
/// - Parameter subtitle: The subtitle.
/// - Returns: The entry row.
public func onSubmit(_ onSubmit: @escaping () -> Void) -> Self {
showApplyButton()
.apply(onSubmit)
}
/// Let the user securely enter private text.
/// - Parameter: The text.
/// - Returns: The entry row.
public func secure(text: Binding<String>? = nil) -> PasswordEntryRow {
.init(title ?? "", text: text ?? .constant(""))
.activatesDefault(activatesDefault)
.enableEmojiCompletion(enableEmojiCompletion)
.showApplyButton(showApplyButton)
.titleSelectable(titleSelectable)
.useMarkup(useMarkup)
.useUnderline(useUnderline)
.apply(apply ?? { })
.entryActivated(entryActivated ?? { })
}
}