void set_window_font(window_t *window, font_sheet_t *font) { window->font = font; // apply font to all created widgets for (uint i = 0; i < MAX_WIDGETS_PER_WINDOW; i++) { if (window->widgets[i] != NULL) { set_widget_font(window->widgets[i], font); } } // apply font to special widgets set_widget_font(window->close_button, font); }
void CoordWinSetFont(const char *font) { #if GTK_CHECK_VERSION(3, 16, 0) if (NgraphApp.CoordWin.data.text && font) { set_widget_font(NgraphApp.CoordWin.data.text, font); } #else /* GTK_CHECK_VERSION(3, 16, 0) */ const char *ptr; PangoAttrList *pattr; PangoFontDescription *desc; GtkLabel *label; label = GTK_LABEL(NgraphApp.CoordWin.data.text); if (label == NULL) return; pattr = gtk_label_get_attributes(label); if (pattr == NULL) { pattr = pango_attr_list_new(); gtk_label_set_attributes(GTK_LABEL(label), pattr); } ptr = (font) ? font : "Monospace"; desc = pango_font_description_from_string(ptr); pango_attr_list_change(pattr, pango_attr_font_desc_new(desc)); pango_font_description_free(desc); #endif }
bool add_widget_to_window(window_t *window, widget_t *widget) { if (window->num_widgets >= MAX_WIDGETS_PER_WINDOW) { return false; } // find a free slot in window->widgets. for (uint i = 0; i < MAX_WIDGETS_PER_WINDOW; i++) { if (window->widgets[i] == NULL) { set_widget_font(widget, window->font); // apply window font to widget window->widgets[i] = widget; window->num_widgets++; return true; } } // at this point, no free slots have been found. return false; }
void InfoWinSetFont(char *font) { if (NgraphApp.InfoWin.data.text && font) { #if GTK_CHECK_VERSION(3, 16, 0) set_widget_font(NgraphApp.InfoWin.data.text, font); #else /* GTK_CHECK_VERSION(3, 16, 0) */ PangoFontDescription *desc; desc = pango_font_description_from_string(font); #if GTK_CHECK_VERSION(3, 0, 0) gtk_widget_override_font(GTK_WIDGET(NgraphApp.InfoWin.data.text), NULL); gtk_widget_override_font(GTK_WIDGET(NgraphApp.InfoWin.data.text), desc); #else gtk_widget_modify_font(GTK_WIDGET(NgraphApp.InfoWin.data.text), NULL); gtk_widget_modify_font(GTK_WIDGET(NgraphApp.InfoWin.data.text), desc); #endif pango_font_description_free(desc); #endif } }