LINUX.ORG.RU

GTK / графику в исходники


0

0

Моя gtk-based программа использует графические файлы png.
В частности - иконка программы:
	gtk_window_set_default_icon_from_file ("my.png", 0)
и ячейки в list_store:

	GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file (ICON_SOCKET, NULL);
	gtk_list_store_set (GTK_LIST_STORE (Model), &iter,
			COLUMN_NUMBER_1, pixbuf, ....

Хотелось бы, всю графику поместить в исходники - в пиксмапы (xpm),
чтобы не было возни с графическими файлами.

Подскажите как бы это реализовать.

Вот моя неудачная попытка установить иконку программы:
	/* XPM */
	static char *yes_xpm[] = {
		/* width height ncolors chars_per_pixel */
		"18 19 10 1",
		/* colors */
		"  c #55E155",
		". c #1DD71D",
		"X c #E3FAE3",
		"o c #AAF0AA",
		"O c #72E672",
		"+ c #39DC39",
		"@ c #00D200",
		"# c #FFFFFF",
		"$ c #C7F5C7",
		"% c #8EEB8E",
		/* pixels */
		"###############XoX",
		"#############$+@@$",
		"############$@@@O#",
		"###########X.@@ ##",
		"###########+@@.X##",
		"##########O@@@X###",
		"#########$@@@o####",
		"#########.@@O#####",
		"######## @@+######",
		"#######o@@.X######",
		"##X$##X.@@o#######",
		"# @@X# @@ ########",
		"o@@@%o@@.#########",
		"X@@@..@@$#########",
		"#+@@@@@O##########",
		"#%@@@@.###########",
		"#X@@@@$###########",
		"##O@@ ############",
		"###XX#############"
	};
	GtkWidget *pixmap;
	GdkBitmap *gdk_pixmap_mask;
	GdkPixmap *gdk_pixmap;
	GtkStyle *style;

	style = gtk_widget_get_default_style ();

	gdk_pixmap = gdk_pixmap_create_from_xpm_d (my_gtk_main_window->window,
						   &gdk_pixmap_mask,
						   &style->bg[GTK_STATE_NORMAL],
						   (gchar **) yes_xpm);
	
	pixmap = gtk_pixmap_new (gdk_pixmap, gdk_pixmap_mask);
	
	gtk_widget_show (pixmap);
anonymous

Ответ на: комментарий от ananas

Вопрос не в том как перегнать png->xpm,
а в том как использовать эти самые xpm-ки.
Хотелось бы чтобы кинули урл на open-source
программки, которые так делают. В идеале -
привели бы кусочек кода с примером.

anonymous
()
Ответ на: комментарий от anonymous

включаются файлы простым #include.

примеры - посмотрите код, генерируемый glade (support.c)

ananas ★★★★★
()

Ну а в чем проблема? Создаем GdkPixbuf из данных, как это описано здесь:

http://developer.gnome.org/doc/API/2.0/gdk-pixbuf/gdk-pixbuf-creating.html

Потом его можно и к окну прицепить с помощью gtk_window_set_icon и в таблицу поместить

Хотя я бы не советовал так делать, особенно есть программа предназначена для широкого применения. Все-такие есть такое понятие как тема, иконки должны от нее зависить, следовательно, быть в отдельных файлах. Пихать их в приложение не очень хорошо.

anonymous
()
Ответ на: комментарий от anonymous

Ясно, спасибо.
Напоследок еще один вопрос:
это ничего, если подсоединять вот так
#include "my.xpm"
или лучше
#include "myxpm.h"?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.