Skip to content

Commit

Permalink
load icons for external editors
Browse files Browse the repository at this point in the history
  • Loading branch information
nadvornik committed Feb 28, 2009
1 parent 073a653 commit dc4646d
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 3 deletions.
5 changes: 5 additions & 0 deletions src/layout_util.c
Original file line number Diff line number Diff line change
Expand Up @@ -1651,6 +1651,11 @@ static void layout_actions_setup_editors(LayoutWindow *lw)
GList *path;
EditorDescription *editor = work->data;
GtkActionEntry entry = { editor->key, NULL, editor->name, editor->hotkey, NULL, G_CALLBACK(layout_menu_edit_cb) };

if (register_theme_icon_as_stock(editor->key, editor->icon))
{
entry.stock_id = editor->key;
}
gtk_action_group_add_actions(lw->action_group_external, &entry, 1, lw);

path = layout_actions_editor_menu_path(editor);
Expand Down
29 changes: 26 additions & 3 deletions src/pixbuf_util.c
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ GdkPixbuf *pixbuf_inline(const gchar *key)
return NULL;
}

static void pixbuf_inline_register_icon(const gchar *key)
static void register_stock_icon(const gchar *key, GdkPixbuf *pixbuf)
{
static GtkIconFactory *icon_factory = NULL;
GtkIconSet *icon_set;
Expand All @@ -142,7 +142,7 @@ static void pixbuf_inline_register_icon(const gchar *key)
gtk_icon_factory_add_default(icon_factory);
}

icon_set = gtk_icon_set_new_from_pixbuf(pixbuf_inline(key));
icon_set = gtk_icon_set_new_from_pixbuf(pixbuf);
gtk_icon_factory_add(icon_factory, key, icon_set);
}

Expand All @@ -154,11 +154,34 @@ void pixbuf_inline_register_stock_icons(void)
i = 0;
while (inline_pixbuf_data[i].key)
{
pixbuf_inline_register_icon(inline_pixbuf_data[i].key);
register_stock_icon(inline_pixbuf_data[i].key, pixbuf_inline(inline_pixbuf_data[i].key));
i++;
}
}

gboolean register_theme_icon_as_stock(const gchar *key, const gchar *icon)
{
GtkIconTheme *icon_theme;
GdkPixbuf *pixbuf;
GError *error = NULL;

icon_theme = gtk_icon_theme_get_default();
pixbuf = gtk_icon_theme_load_icon (icon_theme,
icon, /* icon name */
64, /* size */
0, /* flags */
&error);
if (!pixbuf)
{
DEBUG_1("Couldn't load icon: %s", error->message);
g_error_free(error);
return FALSE;
}

register_stock_icon(key, pixbuf);
return TRUE;
}

gint pixbuf_scale_aspect(gint req_w, gint req_h, gint old_w, gint old_h,
gint *new_w, gint *new_h)
{
Expand Down
1 change: 1 addition & 0 deletions src/pixbuf_util.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ gboolean pixbuf_to_file_as_png (GdkPixbuf *pixbuf, const gchar *filename);
gboolean pixbuf_to_file_as_jpg(GdkPixbuf *pixbuf, const gchar *filename, gint quality);

void pixbuf_inline_register_stock_icons(void);
gboolean register_theme_icon_as_stock(const gchar *key, const gchar *icon);

GdkPixbuf *pixbuf_inline(const gchar *key);
GdkPixbuf *pixbuf_fallback(FileData *fd, gint requested_width, gint requested_height);
Expand Down

0 comments on commit dc4646d

Please sign in to comment.