main_panel에 폰트를 변경하는 코드를 추가하여 wxStaticText가 변하는 것을 확인할 수 있었다.
main_panel에 폰트를 변경하는 코드를 추가하여 wxStaticText가 변하는 것을 확인할 수 있었다.
그 다음으로는 패널(wxPanel)과 그 안에 추가적인 패널이 포함된 복잡한 구조에서도 동일한 폰트 변경이 가능한지, MenuBar의 폰트도 변경이 가능한 지 실험을 진행했다. 이 과정을 통해 폰트 변경 코드를 어느 위치에 넣어야 전체 프로그램에 일괄적으로 적용되는지를 확인하고자 했다.
그 다음으로는 패널(wxPanel)과 그 안에 추가적인 패널이 포함된 복잡한 구조에서도 동일한 폰트 변경이 가능한지, MenuBar의 폰트도 변경이 가능한 지 실험을 진행했다. 이 과정을 통해 폰트 변경 코드를 어느 위치에 넣어야 전체 프로그램에 일괄적으로 적용되는지를 확인하고자 했다.
wxButton마다 각각 SetFont()를 추가 하지 않고도 main_panel에만 폰트를 변경하는 코드를 추가하여 wxPanel 내부의 wxStaticText와 wxButton이 바뀌는 것을 확인할 수 있었다.
wxButton마다 각각 SetFont()를 추가 하지 않고도 main_panel에만 폰트를 변경하는 코드를 추가하여 wxPanel 내부의 wxStaticText와 wxButton이 바뀌는 것을 확인할 수 있었다.
하지만 MenuBar의 경우에는 폰트를 바꿀 수 있는 방법이 확인되지 않았다. wxMenuBar는 wxWindow에 붙어 상단의 메뉴바를 표시해주는데, wxMenuBar의 함수에는 폰트를 설정할 수 있는 SetFont가 없었고 상위의 wxWindow의 폰트를 변경해도 MenuBar의 폰트가 변경되지는 않았다. wxMenuBar 하위의 wxMenu는 내부에 wxMenuItem을 통한 항목추가로 SetFont가 가능하다는 것을 확인했다.
하지만 MenuBar의 경우에는 폰트를 바꿀 수 있는 방법이 확인되지 않았다. wxMenuBar는 wxWindow에 붙어 상단의 메뉴바를 표시해주는데, wxMenuBar의 함수에는 폰트를 설정할 수 있는 SetFont가 없었고 상위의 wxWindow의 폰트를 변경해도 MenuBar의 폰트가 변경되지는 않았다. wxMenuBar 하위의 wxMenu는 내부에 wxMenuItem을 통한 항목추가로 SetFont가 가능하다는 것을 확인했다.
...
@@ -176,6 +178,7 @@ if __name__ == '__main__':
...
@@ -176,6 +178,7 @@ if __name__ == '__main__':
이후 Audacity 공식 문서와 디버깅을 통해서 Audacity의 초기화 부분을 분석했고 기본적인 구조를 파악할 수 있었다. 간단히 설명하면, 최상위 윈도우 아래에 메뉴바와 상태바, 일종의 레이아웃인 wxBoxSizer 등이 있고, wxBoxSizer 안에 트랙과 툴바가 있는 형태였다.
이후 Audacity 공식 문서와 디버깅을 통해서 Audacity의 초기화 부분을 분석했고 기본적인 구조를 파악할 수 있었다. 간단히 설명하면, 최상위 윈도우 아래에 메뉴바와 상태바, 일종의 레이아웃인 wxBoxSizer 등이 있고, wxBoxSizer 안에 트랙과 툴바가 있는 형태였다.
위 사진은 Audacity의 초기화 과정이다. AudacityApp::OnInit -> AudacityApp::InitPart2 -> ProjectManeger::New -> AudacityProject::Create 과정을 거쳐 호출되는 Create함수에서 최상위 윈도우가 선언된다. 이후 ProjectManeger에서 생성된 AudacityProjcet의 최상위 윈도우를 가져와 BoxSizer와 statusBar 등을 붙여 초기 레이아웃을 구성한다.
위 사진은 Audacity의 초기화 과정이다. AudacityApp::OnInit -> AudacityApp::InitPart2 -> ProjectManeger::New -> AudacityProject::Create 과정을 거쳐 호출되는 Create함수에서 최상위 윈도우가 선언된다. 이후 ProjectManeger에서 생성된 AudacityProjcet의 최상위 윈도우를 가져와 BoxSizer와 statusBar 등을 붙여 초기 레이아웃을 구성한다.