Swiftフレームワーク – OpenStep風のmain

OpenStepのアプリケーションのmain()関数はこんな形になっています。

これはInterface Builderで作成したNibにウィンドウやビューの構成が設定されているのを前提としてコードです。

void main(int argc, char *argv[]) {
        NSApplication *app = [NSApplication sharedApplication];
        [NSBundle loadNibNamed:@"myMain" owner:app];
        [app run];
}

今日は、これと同じくらい簡単にアプリケーションのmainエントリを書けるようにしました。

だいたいこんな書き方をします。

import ZIKUU

let app = Application.shared

/// 使用するバックエンドやWindowスタイルの設定
/// ここでは
let profile = ApplicationProfile.desktop(
    windowSystem: .auto,
    decoration: .zikuu,
    renderer: .cairo
)
app.configure(profile)
app.installDesktopBackend()


/// まだNibがないので、ウィンドウは自前で作る
let window = makeMainWindow()

window.makeKeyAndOrderFront(nil)

app.run()

/// ウィンドウを自前で作る関数
func makeMainWindow() -> Window {
    let window = Window()

    window.title = "Hello World"
    window.initialSize = (width: 640, height: 480)

    return window
}

コンパイルして実行するとこういうウィンドウが開きます。

冒頭のスクリーンショットは、

let profile = ApplicationProfile.desktop(
    windowSystem: .auto,
    decoration: .system,
    renderer: .cairo
)

として実行した場合のものです。

OpenStep (NeXTSTEPなど) の場合は、ウィンドウシステムが固定なので、ApplicationProfileのようなものは必要ありません。その分、短くかけますが、このソースコードは一度書いたら触らないか、大抵の場合、決まり文句みたいな内容なので、開発作業への不可はほぼありません。

「Swiftフレームワーク – OpenStep風のmain」への1件のフィードバック

コメントする