1

CSS (C コード) を使用して gtk+3 で .svg 背景を使用するにはどうすればよいですか? これを試すと、次のエラーが表示されます。

(test1:2604): Gtk-WARNING **: Theme parsing error: teststyle.css:2:40: Couldn't recognize the image file format for file '/home/mike/gtk/programming/Tests/gtkScalable.svg'

私の環境は次のとおりです。

  • Ubuntu natty (従来の効果なしモード)
  • gtk+-3.2.3、gdk-pixbuf-2.24.1、pango-1.29.1、atk-2.1.5
  • librsvg2-2 2.32.1-0ubuntu3.1
  • librsvg2-dev 2.32.1-0ubuntu3.1
  • librsvg2-common 2.32.1-0ubuntu3.1
  • libpixbufloader-svg.so 内: /usr/lib/gdk-pixbuf-2.0/2.10.0/loaders
  • libpixbufloader-svg.so: /usr/lib32/gdk-pixbuf-2.0/2.10.0/loaders

これは私のテストファイルです:

/* COMPILE WITH:
   gcc -Wall -o test1 `pkg-config --cflags --libs gtk+-3.0` test1.c
*/

#include <gtk/gtk.h>
#include <string.h>

int main (int argc, char *argv[]) {

    gtk_init(&argc, &argv);

    GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
    gtk_widget_set_size_request(window, 270, 250);
    g_signal_connect(G_OBJECT (window), "destroy",
                     G_CALLBACK(gtk_main_quit), NULL);

    GtkCssProvider *provider = gtk_css_provider_new ();
    GdkDisplay *display = gdk_display_get_default ()
    GdkScreen *screen = gdk_display_get_default_screen (display);
    gtk_style_context_add_provider_for_screen (screen,
                                   GTK_STYLE_PROVIDER (provider),
                                   GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
    gsize bytes_written, bytes_read;
    const gchar* home = "/home/mike/gtk/programming/Tests/teststyle.css";
    GError *error = 0;

    gtk_css_provider_load_from_path (provider,
                                     g_filename_to_utf8(home, strlen(home),
                                                        &bytes_read,
                                                        &bytes_written,
                                                        &error),
                                     NULL);
    g_object_unref (provider);
    gtk_widget_show_all(window);
    gtk_main ();
    return 0;
}

これは私のスタイル シートです: teststyle.css、および私が使用しているイメージ:

http://www.clker.com/cliparts/b/0/0/b/11949995711012521407gtk.svg

GtkWindow  {
    background-image: url('/home/mike/gtk/programming/Tests/gtkScalable.svg');
}

他のサイトで提案されているように、このコマンドを使用してキャッシュを更新しようとしましたが、機能せず、実際に .c ファイルの一部が破損したため、最初からやり直す必要がありました。

gdk-pixbuf-query-loaders --update-cache

更新: Unity でこれを実行しようとしましたが、まだ動作しません。.svg 画像自体を使用する Gorilla テーマ (Gtk2-engines) を選択したときにも試してみましたが、まだ運がありません。Gtk3 エンジンが必要ですか?? sugar-toolkit-gtk3 で例を見てきました。しかし、これは Python であり、これがどのように行われているかは明らかではありません。

http://erikos.sweettimez.de/2011/12/09/gtk3-code-sprint-rosario-3/

4

0 に答える 0