Boa tarde a todos,
Estou começando a estudar C com a biblioteca GTK+ 3.0 para criar um CRUD simples, mas estou tendo problemas em exibir os ícones.
se utilizar o caminho físico da imagem funciona, desde que eu rode o executável dentro da própria pasta. Ex.:
...
// Configuracao de icone no header
GError *error = NULL;
tticon = gdk_pixbuf_new_from_file("images/logo.png", &error);
if(!tticon)
{
fprintf(stderr, "%s\n", error->message);
g_error_free(error);
}
//Atribui o icone a janela
gtk_window_set_icon(GTK_WINDOW(window), tticon);
...
~/projetos/teste$ ./main
Dei uma pesquisada e encontrei o GResource que aparentemente é simples de implementar, mas quando executo apresenta o erro:
(main:7644): Gtk-WARNING **: Error loading icon from file 'resource:///br/com/myapp/images/logo.png':
Falha ao abrir o arquivo “resource:///br/com/myapp/images/logo.png”: Arquivo ou diretório não encontrado
Segue abaixo o código que implementei:
myapp.gresource.xml
<?xml version="1.0" encoding="UTF-8"?>
<gresources>
<gresource prefix="/br/com/myapp/">
<file>images/logo.png</file>
</gresource>
</gresources>
main.c
#include <stdio.h>
#include <stdlib.h>
#include <gtk/gtk.h>
void destroy( GtkWidget *widget,gpointer data )
{
gtk_main_quit();
}
int main(int argc, char **argv)
{
GtkWidget *window;
GdkPixbuf *tticon;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window),"Hello GTK and C");
gtk_window_set_icon_from_file(GTK_WINDOW(window), "resource:///br/com/myapp/images/logo.png", NULL);
g_signal_connect (window, "destroy", G_CALLBACK(destroy), NULL);
gtk_widget_show_all(window);
gtk_main ();
return 0;
}
Compilando o gresource e o main.c
glib-compile-resources --target=resources.c --generate-source myapp.gresource.xml
gcc main.c resources.c -o main -lm `pkg-config gtkmm-3.0 --cflags --libs`
./main
gcc main.c resources.c -o main -lm `pkg-config gtkmm-3.0 --cflags --libs`
Já estou dias tentando descobri o que esta faltando, e nada...
Alguém tem alguma ideia ??