static void mailwatch_set_size(Control *c, gint size) { XfceMailwatchPlugin *mwp = c->data; gint wsize = icon_size[size] + border_width, i; GtkWidget *dummy; gchar *icon; if(mwp->pix_normal) g_object_unref(G_OBJECT(mwp->pix_normal)); if(mwp->pix_newmail) g_object_unref(G_OBJECT(mwp->pix_newmail)); for(i = 0; i < XFCE_MAILWATCH_N_LOG_LEVELS; i++) { if(mwp->pix_log[i]) g_object_unref(G_OBJECT(mwp->pix_log[i])); } icon = mwp->normal_icon ? mwp->normal_icon : DEFAULT_NORMAL_ICON; mwp->pix_normal = xfce_themed_icon_load(icon, icon_size[size]); icon = mwp->new_mail_icon ? mwp->new_mail_icon : DEFAULT_NEW_MAIL_ICON; mwp->pix_newmail = xfce_themed_icon_load(icon, icon_size[size]); dummy = gtk_invisible_new(); gtk_widget_realize(dummy); mwp->pix_log[XFCE_MAILWATCH_LOG_INFO] = mailwatch_get_mini_icon(dummy, GTK_STOCK_DIALOG_INFO, size); mwp->pix_log[XFCE_MAILWATCH_LOG_WARNING] = mailwatch_get_mini_icon(dummy, GTK_STOCK_DIALOG_WARNING, size); mwp->pix_log[XFCE_MAILWATCH_LOG_ERROR] = mailwatch_get_mini_icon(dummy, GTK_STOCK_DIALOG_ERROR, size); gtk_widget_destroy(dummy); mailwatch_set_icon(mwp, mwp->newmail_icon_visible); gtk_widget_set_size_request(c->base, wsize, wsize); }
static gboolean screenshot_set_size (XfcePanelPlugin *plugin, int size, ScreenshotData *sd) { GdkPixbuf *pb; int width = size - 2 - 2 * MAX (sd->button->style->xthickness, sd->button->style->ythickness); pb = xfce_themed_icon_load (SCREENSHOT_ICON_NAME, width); gtk_image_set_from_pixbuf (GTK_IMAGE (sd->image), pb); g_object_unref (pb); gtk_widget_set_size_request (GTK_WIDGET (plugin), size, size); return TRUE; }
GtkWidget * xfce_mailwatch_custom_button_new(const gchar *text, const gchar *icon) { GtkWidget *btn, *hbox, *img, *lbl; GdkPixbuf *pix; gint iw, ih; g_return_val_if_fail((text && *text) || icon, NULL); btn = gtk_button_new(); hbox = gtk_hbox_new(FALSE, 4); gtk_container_set_border_width(GTK_CONTAINER(hbox), 0); gtk_widget_show(hbox); gtk_container_add(GTK_CONTAINER(btn), hbox); if(icon) { img = gtk_image_new_from_stock(icon, GTK_ICON_SIZE_BUTTON); if(!img || gtk_image_get_storage_type(GTK_IMAGE(img)) == GTK_IMAGE_EMPTY) { gtk_icon_size_lookup(GTK_ICON_SIZE_BUTTON, &iw, &ih); pix = xfce_themed_icon_load(icon, iw); if(pix) { if(img) gtk_image_set_from_pixbuf(GTK_IMAGE(img), pix); else img = gtk_image_new_from_pixbuf(pix); g_object_unref(G_OBJECT(pix)); } } if(img) { gtk_widget_show(img); gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); } } if(text) { lbl = gtk_label_new_with_mnemonic(text); gtk_widget_show(lbl); gtk_box_pack_start(GTK_BOX(hbox), lbl, FALSE, FALSE, 0); gtk_label_set_mnemonic_widget(GTK_LABEL(lbl), btn); } return btn; }