Rework zenity_util_set_window_icon* to not use stock images

This commit is contained in:
Javier Jardón 2015-03-22 06:02:41 +00:00
parent 1a43253ac5
commit fba4f05582
3 changed files with 40 additions and 45 deletions

View File

@ -120,20 +120,20 @@ zenity_msg (ZenityData *data, ZenityMsgData *msg_data)
switch (msg_data->mode) {
case ZENITY_MSG_WARNING:
zenity_util_set_window_icon_from_stock (dialog, data->window_icon, GTK_STOCK_DIALOG_WARNING);
zenity_util_set_window_icon_from_icon_name (dialog, data->window_icon, "dialog-warning");
break;
case ZENITY_MSG_QUESTION:
zenity_util_set_window_icon_from_stock (dialog, data->window_icon, GTK_STOCK_DIALOG_QUESTION);
zenity_util_set_window_icon_from_icon_name (dialog, data->window_icon, "dialog-question");
zenity_msg_construct_question_dialog (dialog, msg_data, data);
break;
case ZENITY_MSG_ERROR:
zenity_util_set_window_icon_from_stock (dialog, data->window_icon, GTK_STOCK_DIALOG_ERROR);
zenity_util_set_window_icon_from_icon_name (dialog, data->window_icon, "dialog-error");
break;
case ZENITY_MSG_INFO:
zenity_util_set_window_icon_from_stock (dialog, data->window_icon, GTK_STOCK_DIALOG_INFO);
zenity_util_set_window_icon_from_icon_name (dialog, data->window_icon, "dialog-information");
break;
default:

View File

@ -178,32 +178,36 @@ zenity_util_fill_file_buffer (GtkTextBuffer *buffer, const gchar *filename)
}
const gchar *
zenity_util_stock_from_filename (const gchar *filename)
zenity_util_icon_name_from_filename (const gchar *filename)
{
if (!filename || !filename[0])
return GTK_STOCK_DIALOG_WARNING; /* default */
return "dialog-warning"; /* default */
if (!g_ascii_strcasecmp (filename, "warning"))
return GTK_STOCK_DIALOG_WARNING;
return "dialog-warning";
if (!g_ascii_strcasecmp (filename, "info"))
return GTK_STOCK_DIALOG_INFO;
return "dialog-information";
if (!g_ascii_strcasecmp (filename, "question"))
return GTK_STOCK_DIALOG_QUESTION;
return "dialog-question";
if (!g_ascii_strcasecmp (filename, "error"))
return GTK_STOCK_DIALOG_ERROR;
return "dialog-error";
return NULL;
}
GdkPixbuf *
zenity_util_pixbuf_new_from_file (GtkWidget *widget, const gchar *filename)
void
zenity_util_set_window_icon_from_file (GtkWidget *widget, const gchar *filename)
{
const gchar *stock;
GdkPixbuf *pixbuf;
const gchar *icon_name;
stock = zenity_util_stock_from_filename (filename);
if (stock)
return gtk_widget_render_icon (widget, stock, GTK_ICON_SIZE_BUTTON, NULL);
return gdk_pixbuf_new_from_file (filename, NULL);
icon_name = zenity_util_icon_name_from_filename (filename);
if (icon_name) {
gtk_window_set_icon_name (GTK_WINDOW (widget), icon_name);
} else {
pixbuf = gdk_pixbuf_new_from_file (filename, NULL);
gtk_window_set_icon (GTK_WINDOW (widget), pixbuf);
g_object_unref (pixbuf);
}
}
void
@ -211,33 +215,24 @@ zenity_util_set_window_icon (GtkWidget *widget, const gchar *filename, const gch
{
GdkPixbuf *pixbuf;
if (filename != NULL)
pixbuf = zenity_util_pixbuf_new_from_file (widget, (gchar *) filename);
else
pixbuf = gdk_pixbuf_new_from_file (default_file, NULL);
if (pixbuf != NULL) {
gtk_window_set_icon (GTK_WINDOW (widget), pixbuf);
g_object_unref (pixbuf);
if (filename != NULL) {
zenity_util_set_window_icon_from_file (widget, filename);
} else {
pixbuf = gdk_pixbuf_new_from_file (default_file, NULL);
if (pixbuf != NULL) {
gtk_window_set_icon (GTK_WINDOW (widget), pixbuf);
g_object_unref (pixbuf);
}
}
}
void
zenity_util_set_window_icon_from_stock (GtkWidget *widget, const gchar *filename, const gchar *default_stock_id)
void
zenity_util_set_window_icon_from_icon_name (GtkWidget *widget, const gchar *filename, const gchar *default_icon_name)
{
GdkPixbuf *pixbuf;
if (filename != NULL) {
pixbuf = zenity_util_pixbuf_new_from_file (widget, (gchar *) filename);
}
else {
pixbuf = gtk_widget_render_icon (widget, default_stock_id, GTK_ICON_SIZE_BUTTON, NULL);
}
if (pixbuf != NULL) {
gtk_window_set_icon (GTK_WINDOW (widget), pixbuf);
g_object_unref (pixbuf);
}
if (filename != NULL)
zenity_util_set_window_icon_from_file (widget, filename);
else
gtk_window_set_icon_name (GTK_WINDOW (widget), default_icon_name);
}
void

View File

@ -19,14 +19,14 @@ GtkBuilder* zenity_util_load_ui_file (const gchar *widge
gchar * zenity_util_strip_newline (gchar *string);
gboolean zenity_util_fill_file_buffer (GtkTextBuffer *buffer,
const gchar *filename);
const gchar * zenity_util_stock_from_filename (const gchar *filename);
const gchar * zenity_util_icon_name_from_filename (const gchar *filename);
void zenity_util_set_window_icon (GtkWidget *widget,
const gchar *filename,
const gchar *default_file);
void zenity_util_set_window_icon_from_stock (GtkWidget *widget,
void zenity_util_set_window_icon_from_icon_name(GtkWidget *widget,
const gchar *filename,
const gchar *default_stock_id);
GdkPixbuf * zenity_util_pixbuf_new_from_file (GtkWidget *widget,
const gchar *default_icon_name);
void zenity_util_set_window_icon_from_file (GtkWidget *widget,
const gchar *filename);
void zenity_util_show_help (GError **error);
gint zenity_util_return_exit_code (ZenityExitCode value);