GTK 에서 메인 widget 속성 세팅에 관한 질문입니다.

이철희의 이미지

안녕하세요?. gtk를 공부하던중 다음에 관해서 문제가 생겨 이렇게 질문 올립니다

현재 fontselectiondialog 에서 font를 받았습니다.

출력까지 해보니 예를 들어 "Sans oo 12" 이런식으로 출력이 되더군요..

현재 소스의 메인부분에서

gtk_rc_parse();

통해서 어떤 테마를 특정한 어플리케이션에 적용시키는거 까지는 성공했습니다..

근데 문제가 menu_bar 에서

fontselectiondialog 를 띄어 폰트를 선택하고

해당 폰트를 메인에 적용시켜 하위 위젯에게 전부 적용을 시키려는데 안되는군요..

위에 gtk_rc_parse(); 에서 사용한 gtkrc 부분에서

메인 widget 의 스타일을 정의 하는 곳에서

style "default"
{
font_name = "Sans .... 12"
}

이와 같이 font_name 행을 추가하면 적용이 됩니다.

또 한가지 이해가 안가는 부분은 어떤 문서를 찾아봐도 gtk 의 버전에 따라

style 의 속성에서 font 혹은 font_name 을 써서 폰트를 적용시킨다는데..

api 에서 style구조체를 살펴보면

PangoFontDescription *font_desc; 라는 속성은 있지만 font 혹은 font_name 이라는 속성은 없네요..

이게 어떻게 연관이 되는지 모르겠습니다..

소스는 다음과 같습니다.

void
on_fonts_selection_ok_button2_clicked (GtkButton *button,
gpointer user_data)
{
// 스타일을 저장하는 포인터
GtkStyle *style;
// 폰트의 정보를 저장할 포인터
gchar* font_name;

style = gtk_widget_get_style(window1); /* window1은 메인 widget 입니다. */

//style = gtk_style_copy(gtk_widget_get_style(window1));

font_name = gtk_font_selection_dialog_get_font_name(
GTK_FONT_SELECTION_DIALOG(fonts));

pango_font_description_free(style->font_desc);
style->font_desc = pango_font_description_from_string(font_name);

gtk_widget_set_style(window1, style);
gtk_widget_hide(fonts);
}

보시고 gtk 먼저시작하신 고수분들의 조언 부탁드립니다..(__)(--)꾸벅