Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

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デコレータ) ですが、このガイドの範囲外です。例については インストーラーのソース を参照してください。