다양한 플랫폼에서 사용되는 프로그램의 경우, 하나의 코드로 여러 플랫폼에서 작동하는 프로그램을 빌드할 수 있게 해주는 도구가 필요하다고 생각했다. 그래서 해당 프로그램을 찾기 위해 Audacity의 매뉴얼, 설정 등 다양한 메뉴를 살펴봤다. 그 중, Audacity 정보 페이지를 살펴보니 Audacity의 빌드 정보가 있었다. 해당 페이지를 통해 Audacity는 wxWidgets라는 크로스 플랫폼 GUI 라이브러리를 사용한다는 것을 알게 됐다.
...
...
@@ -19,7 +19,7 @@ wxWidgets는 여러 운영체제에서 동일한 소스 코드로 애플리케
이를 위해 wxWidgets의 구조를 파악해야겠다고 생각했다. Audacity의 구조를 이해하기 위해 wxWidgets를 기반으로 하는 GUI 디자이너 툴인 wxFormBuilder를 활용했다. wxFormBuilder는 wxWidgets 애플리케이션을 개발하는 데 필요한 GUI 레이아웃을 시각적으로 설계하고, 이를 코드로 생성하는 데 사용된다. wxFormBuilder의 기능을 활용해 창(window), 박스 사이저(box sizer), 메뉴바(menubar), 패널(panel) 등을 직접 생성해보며 wxWidgets를 구성하는 요소들 간의 관계를 파악했다.
...
...
@@ -27,7 +27,7 @@ wxFormBuilder를 통해 최상위 윈도우가 생성되고, 그 안에 다양
Audacity 코드에 직접적으로 적용하기 전에 wxPython을 활용하여 간단한 프로그램을 생성하고 폰트 변경을 실험하는 결정을 내렸다. wxPython은 wxWidgets와 유사한 기능을 제공하는 Python용 GUI 라이브러리이다. 이를 통해 폰트 변경이 전체 프로그램에 어떻게 적용되는지를 실험하고자 했다.
...
...
@@ -106,7 +106,7 @@ if __name__ == '__main__':
```
## Audacity 적용
### Audacity 적용
앞에서 wxFormBuilder, wxPython을 활용하여 학습한 결과를 바탕으로 Audacity에서도 최상위 윈도우에 폰트변경 코드를 추가하여 프로그램 전체의 폰트를 변경하고자 했다. 그런데 맨처음 윈도우가 초기화 코드 이후에 폰트변경 코드를 추가한 후, 빌드를 진행했는데 프로그램 전체에 대한 폰트가 변경되지 않고 일부만 변경되었다. 이에 저희는 이벤트 발생에 의해 처리되는 요소들의 경우에는 일괄적인 변경이 불가능한 것으로 파악하여, toolbar, popupmenu 등에 대한 폰트 변경을 하위 요소에서 for문을 통해 반복적으로 수행했다.