Python

Python PyTouchBar MacのTkinter(TK)/PyGameのアプリでTouch Barに対応してみる(6) ユーザーカスタマイズ

カスタマイズパレットを使ってTouchBarをカスタマイズできます。ユーザーは提供されたアイテムを使ってTouchBarを追加、削除、再編成できる。
カスタマイズされたTouchBarは保存され、ロードされるため、実装はやや複雑になる。

1. TouchBarの識別子の設定

TouchBarにカスタマイズ用の識別子を設定することで、その識別子を保存し、次回の実行時にロードできる。
識別子は文字列で、Appleの公式ドキュメントによると「reverse-DNS style」というフォーマットになっている。(customizationIdentifier | Apple Developer Documentation

PyTouchBar.set_customization_identifier("com.madrau.PyTouchBar.touchbar")

2. TouchBarItemsの準備

TouchBarアイテムを初期化する際には、いくつかのパラメータ(Labelの場合は “text”、Buttonの場合は “action”など)を指定する。アイテムをカスタマイズするには、さらにいくつかのパラメータを指定する必要がある。

  • id (string) : アイテムの識別子:TouchBar Identifierと同様に、idはアイテムの位置を保存するために使用される文字列。デフォルトでは、実行のたびにランダムに生成されるが、アイテムの位置を保存する必要がある場合は、固定値にする必要がある。
  • customization_label (string) : カスタマイズパレットでのアイテムのタイトル(スペースアイテムには使えない)
  • customization_mode (PyTouchBar.CustomizationMode) : アイテムをユーザーがどのようにカスタマイズするかを指定する。

例を以下に示す。

button = ptb.TouchBarItems.Button(title = "Button", action = action, id = "button", customization_label = "A button", customization_mode = ptb.CustomizationMode.allowed)
space = ptb.TouchBarItems.Space.Flexible(customization_mode = ptb.CustomizationMode.allowed)
slider = ptb.TouchBarItems.Slider(id = "slider", customization_label = "The slider", customization_mode = ptb.CustomizationMode.allowed)
stepper = ptb.TouchBarItems.Stepper(min = 0, max = 100, id = "stepper", customization_label = "The stepper", customization_mode = ptb.CustomizationMode.allowed)

3. カスタマイズ・パレットの起動

カスタマイズパレットを呼び出すには2つの方法がある。
1つ目の方法は、PyTouchBar.customize関数を呼び出す方法。

PyTouchBar.customize()

2つ目の方法は、「TouchBarのカスタマイズ」メニューを使うこと。このメニューはデフォルトでは表示されない。これを表示するには、TouchBarの識別子を設定する際に、”menu”パラメータをTrueに設定する。

PyTouchBar.set_customization_identifier("com.madrau.PyTouchBar.touchbar", menu = True)

4. Default Set にアイテムを追加

デフォルトでは、set_touchbar関数でTouchBarにアイテムを追加すると、そのアイテムは「Default Set」に配置される。「Default Set」に含まれていないが、ユーザが配置できるTouchBarアイテムを作成したい場合は、「define」パラメータに追加すること。

ptb.set_touchbar([button, space, slider], define = [stepper])

このコードを使うと、TouchBarにはデフォルトでボタン、スペース、スライダーが表示される。しかし、ユーザーがカスタマイズ・パレットを開くと、TouchBarに追加できるステッパーも表示される。例を以下に示す。

ptb.set_customization_identifier("com.madrau.PyTouchBar.anotherTest", menu = True)

button = ptb.TouchBarItems.Button(title = "Button", action = action, id = "button", customization_label = "A button", customization_mode = ptb.CustomizationMode.allowed)
space = ptb.TouchBarItems.Space.Flexible(customization_mode = ptb.CustomizationMode.allowed)
slider = ptb.TouchBarItems.Slider(id = "slider", customization_label = "The slider", customization_mode = ptb.CustomizationMode.allowed)
stepper = ptb.TouchBarItems.Stepper(min = 0, max = 100, id = "stepper", customization_label = "The stepper", customization_mode = ptb.CustomizationMode.allowed)

ptb.set_touchbar([button, space, slider], define = [stepper])