Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Файлы ресурсов
Форум на CrossPlatform.RU > Библиотеки > GTK+
ranger
Есть некоторый текст, который нужно загружать в GtkTextView при щелчке на одной из ветвей GtkTreeView. Дело в том, что появилась необходимость поместить этот текст в сам экзешник(чтобы не таскать за собой ничего лишнего). :) Думал всё это сделать через файлы ресурсов, но как с этим обстоят дела в Gtk+ понять не могу. Может быть кто-то сталкивался с чем-то подобным?
ranger
Неужели никто не знает ответ на такой простой вопрос? :(
ViGOur
Я честно говоря поискал и нашел только как работать с локализацией и стилями, которые хранятся в ресурсном файле, но отдельном от exe'шника.
А как ресурсный файл засунуть в exe так и не нашел. :(
Гость_sunny_*
Текст вшить в экзашник проще простого, создаёте переменную глобальную переменную
const char *text = "вшитый текст";
и берёте из неё значения по мере необходимости, можно вынести всё это в *.h файл, чтобы не путать с основным кодом.

Даже картинки можно так встраивать:
Картинки преобразоваем в формат xpm, например с помощью Gimp.
XPM - это текстовый формат и файлы в нём начинаются примерно так:
static char * sample_xpm[] = {
"48 48 64 1",
" c None",
". c #DF7DCF3CC71B",
"X c #965875D669A6",
...

Всё это хозяйство можно включить в *.c или в *.h файл, а потом картинку можно получить через gdk_pixbuf_new_from_xpm_data(sample_xpm)
или через gdk_pixmap_create_from_xpm(), смотря что нужно.
Sunny
В Gtk+ 3.0 есть возможнось использовать файлы ресурсов по аналогии с Windows.

Пример файла ресурсов (resource.xml):
<?xml version="1.0" encoding="UTF-8"?>
<gresources>
<gresource prefix="/org/gtk">
<file preprocess="xml-stripblanks">app.ui</file>
<file>pixmaps/icon.png</file>
</gresource>
</gresources>

Далее командой glib-compile-resources компилируем файл ресурсов в *.c файл, который можно включить в проект.
Пример:
glib-compile-resources --generate-source resource.xml
На выходе будет resource.с

Доступ из кода к ресурсам получаем следующим образом:
bytes = g_resources_lookup_data("/org/gtk/pixmaps/icon.png", 0, NULL);
или с помощью специализированных функций вроде:
gdk_pixbuf_new_from_resource()
gtk_builder_new_from_resource()
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2021 IPS, Inc.