macOS • Windows • Web • Ubuntu • tvOS • iOS • Android • Amazon Linux • watchOS

文档

SDGInterface

SDGInterface 提供了实现图形用户界面的工具。

Καὶ ὁ Λόγος σὰρξ ἐγένετο καὶ ἐσκήνωσεν ἐν ἡμῖν, καὶ ἐθεασάμεθα τὴν δόξαν αὐτοῦ, δόξαν ὡς μονογενοῦς παρὰ πατρός, πλήρης χάριτος καὶ ἀληθείας.

道成了肉身,住在我们中间,充充满满地有恩典有真理。我们也见过他的荣光,正是父独生子的荣光。

―‎יוחנן⁩/Yoẖanan (约翰)

特性

示例用法

import Foundation

import SDGText
import SDGLocalization

import SDGInterface

@available(macOS 11, tvOS 14, iOS 14, watchOS 7, *)
extension SampleApplication: Application {}

@available(watchOS 6, *)
public struct SampleApplication: LegacyApplication {

  public init() {}

  public var applicationName: ProcessInfo.ApplicationNameResolver {
    return { form in
      switch form {
      case .english(let region):
        switch region {
        case .unitedKingdom, .unitedStates, .canada:
          return "Sample"
        }
      case .español(let preposición):
        switch preposición {
        case .ninguna:
          return "Ejemplar"
        case .de:
          return "del Ejemplar"
        }
      case .deutsch(let fall):
        switch fall {
        case .nominativ, .akkusativ, .dativ:
          return "Beispiel"
        }
      case .français(let préposition):
        switch préposition {
        case .aucune:
          return "Exemple"
        case .de:
          return "de l’Exemple"
        }

      case .ελληνικά(let πτώση):
        switch πτώση {
        case .ονομαστική:
          return "Παράδειγμα"
        case .αιτιατική:
          return "το Παράδειγμα"
        case .γενική:
          return "του Παραδείγματος"
        }
      case .עברית:
        return "דוגמה"
      }
    }
  }

  public static func main() {  // @exempt(from: tests)
    if #available(macOS 11, tvOS 14, iOS 14, watchOS 7, *) {
      modernMain()
    } else {
      legacyMain()
    }
  }

  public var mainWindow: Window<Label<InterfaceLocalization>, InterfaceLocalization> {
    return Window(
      type: .primary(nil),
      name: UserFacing<StrictString, InterfaceLocalization>({ localization in
        switch localization {
        case .englishCanada:
          return "Sample"
        }
      }),
      content: Label(
        UserFacing<StrictString, InterfaceLocalization>({ localization in
          switch localization {
          case .englishCanada:
            return "Hello, world!"
          }
        })
      )
    )
  }
}
@main extension SampleApplication {}

某些平台缺少某些功能。文档中出现的编译条件定义如下

.define("PLATFORM_HAS_COCOA_INTERFACE", .when(platforms: [.macOS, .tvOS, .iOS])),
.define(
  "PLATFORM_LACKS_FOUNDATION_NS_USER_ACTIVITY",
  .when(platforms: [.windows, .wasi, .linux, .android])
),
.define("PLATFORM_LACKS_FOUNDATION_PROCESS_INFO", .when(platforms: [.wasi])),
.define("PLATFORM_LACKS_FOUNDATION_RUN_LOOP", .when(platforms: [.wasi])),

导入

SDGInterface 提供了与 Swift Package Manager 一起使用的库。

只需在 Package.swift 中将 SDGInterface 添加为依赖项,并指定要使用的库。

let package = Package(
  name: "MyPackage",
  dependencies: [
    .package(
      url: "https://github.com/SDGGiesbrecht/SDGInterface",
      .upToNextMinor(from: Version(0, 15, 3))
    ),
  ],
  targets: [
    .target(
      name: "MyTarget",
      dependencies: [
        .product(name: "SDGInterface", package: "SDGInterface"),
        .product(name: "SDGInterfaceTestUtilities", package: "SDGInterface"),
        .product(name: "SDGErrorMessages", package: "SDGInterface"),
        .product(name: "SDGProgressIndicators", package: "SDGInterface"),
        .product(name: "SDGKeyboard", package: "SDGInterface"),
      ]
    )
  ]
)

然后可以在源文件中导入模块

import SDGInterface
import SDGInterfaceTestUtilities
import SDGErrorMessages
import SDGProgressIndicators
import SDGKeyboard

关于

SDGInterface 项目由 Jeremy David Giesbrecht 维护。

如果 SDGInterface 为您节省了资金,请考虑捐赠一些资金:捐赠

如果 SDGInterface 为您节省了时间,请考虑投入一些时间来贡献回到该项目。

Ἄξιος γὰρ ὁ ἐργάτης τοῦ μισθοῦ αὐτοῦ ἐστι.

工人配得工价。

―‎ישוע/Yeshuʼa (耶稣)