5.6.2.2. 高度な機能
pyanaconda
にはスポークやハブが使用するヘルパーやユーティリティー関数、コンストラクトが含まれており、これらはここまでのセクションで説明されていません。ほとんどのものは、pyanaconda.ui.gui.utils
にあります。
サンプルの Hello World アドオン では
englightbox
で使用する englightbox コンテンツマネージャーの使用方法が説明されています。このマネージャーはウィンドウをライトボックスにおいて視認性を高めてフォーカスし、ユーザーが下層のウィンドウと対話しないようにします。この機能を示すために、サンプルアドオンには新しいダイアログウィンドウを開くボタンが含まれています。ダイアログ自体は、pyanaconda.ui.gui.__init__
で定義される GUIObject
クラスから継承される特別な HelloWorldDialog
です。
dialog
クラスは、self.window
属性を介してアクセス可能な内部 Gtk ダイアログを実行および破棄する run
メソッドを定義します。この属性は、同じ意味の mainWidgetName
クラス属性を使用して設定されます。そのため、以下の例のようにダイアログを定義するコードは非常にシンプルです。
例13 englightbox Dialog の定義
# every GUIObject gets ksdata in __init__ dialog = HelloWorldDialog(self.data) # show dialog above the lightbox with enlightbox(self.window, dialog.window): dialog.run()
上記のコードはダイアログのインスタンスを作成し、
enlightbox
コンテキストマネージャーを使用してライトボックス内でそのダイアログを実行します。コンテキストマネージャーは、スポークのウィンドウとダイアログのウィンドウのライトボックスをインスタンス化するためにこれらのウィンドウへの参照を必要とします。
Anaconda が提供するもう 1 つの便利な機能は、インストール中と 最初 の再起動後の両方に表示されるスポークを定義する機能です (「初回起動と初期設定」)。Anaconda および Initial Setup の両方でスポークを利用可能にするには、特別な
FirstbootSpokeMixIn
(より正確には mixin) を、pyanaconda.ui.common
モジュールで定義されている最初の継承クラスとして継承する必要があります。
特定のスポークを Initial Setup で のみ 利用可能とするには、
FirstbootOnlySpokeMixIn
クラスを継承します。
pyanaconda パッケージによって提供されるさらに多くの高度な機能があります (
@gtk_action_wait
と@gtk_action_nowait
デコレータ) ですが、このガイドの範囲外です。例については インストーラーのソース を参照してください。