Menu Close

5.11. GUI 고급 기능

pyanaconda 패키지에는 허브 및 스포크에서 사용할 수 있는 여러 도우미 및 유틸리티 기능이 포함되어 있습니다. 대부분은 pyanaconda.ui.gui.utils 패키지에 있습니다.

샘플 Hello World add-on은 Anaconda 에서 사용하는 englightbox 콘텐츠 관리자의 사용법을 보여줍니다. 이 콘텐츠 관리자는 창을 Lightbox에 추가하여 가시성을 높이고 사용자가 기본 창과 상호 작용하는 것을 방지할 수 있습니다. 이 기능을 설명하기 위해 샘플 추가 기능에는 새 대화 상자 창을 여는 버튼이 포함되어 있습니다. 대화 상자 자체는 pyanaconda.ui.gui.init 에 정의된 GUIObject 클래스에서 상속되는 특수 HelloworldDialog입니다.

dialog 클래스는 mainWidgetName class 특성을 사용하여 채운 self.window 특성을 통해 액세스할 수 있는 내부 Gtk 대화 상자를 실행하고 삭제하는 run 메서드를 정의합니다. 따라서 대화 상자를 정의하는 코드는 다음 예와 같이 매우 간단합니다.

예 5.9. 엔트로피 대화 상자 정의

        # every GUIObject gets ksdata in init
        dialog = HelloWorldDialog(self.data)

        # show dialog above the lightbox
        with self.main_window.enlightbox(dialog.window):
            dialog.run()

englightbox 대화 상자 예제 코드를 통해 대화 상자의 인스턴스를 만든 다음 enlightbox 컨텍스트 관리자를 사용하여 lightbox 내에서 대화 상자를 실행합니다. 컨텍스트 관리자는 대화 상자의 창에 대한 참조가 있으며 대화 상자의 Lightbox를 인스턴스화하기 위해 대화 상자만 있으면 됩니다.

Anaconda 에서 제공하는 또 다른 유용한 기능은 설치 중에 및 첫 번째 재부팅 후 표시되는 스포크를 정의하는 기능입니다. 초기 설정 유틸리티는 5.10절. “GUI(Add-On 그래픽 사용자 인터페이스)에 대한 지원 추가” 에 설명되어 있습니다. Anaconda 및 Initial Setup 모두에서 대화 상자를 사용하려면 pyanaconda.ui.common 모듈에 정의된 첫 번째 상속 클래스로 라고도 하는 특수한 FirstbootSpokeMixIn 클래스를 상속해야 합니다.

Anaconda 의 대화 상자와 Initial Setup의 재구성 모드에서 사용할 수 있도록 하려면 pyanaconda.ui.common 모듈에 정의된 첫 번째 상속된 클래스로 믹싱 이라고도 하는 특수한 FirstbootSpokeMixIn 클래스를 상속해야 합니다.

Initial Setup에서만 특정 대화 상자를 사용할 수 있도록 하려면 이 대화 상자에서는 FirstbootOnlySpokeMixIn 클래스를 상속해야 합니다.

대화 상자에서 항상 Anaconda 및 Initial Setup에서 사용할 수 있도록 하려면 다음 예제와 같이 spoke에서 should_run 메서드를 재정의해야 합니다.

예 5.10. should_run 메서드 정의

@classmethod
    def should_run(cls, environment, data):
    """Run this spoke for Anaconda and Initial Setup"""
    return True

pyanaconda 패키지는 @managek _action_wait 및 @Virtk_ action_nowait 데코레이터와 같은 고급 기능을 많이 제공하지만 이 가이드에서는 다루지 않습니다. 자세한 내용은 설치 프로그램의 소스를 참조하십시오.