1

gioを使ってエンブレムを設定しようとしています

#include <gtk/gtk.h>
#include <gdk/gdk.h>
#include <glib.h>
#include <gio/gio.h>
#include <stdio.h>

int main (int argc, char *argv[])
{
    GFile *gfile = NULL;
    g_type_init();
    gfile = g_file_new_for_path("./foo.txt");
    if (g_file_set_attribute_string(gfile, 
                                    "metadata::emblems", 
                                    "favorite", 
                                    G_FILE_QUERY_INFO_NONE, 
                                    NULL, NULL) == TRUE) {

        puts("Success");
    } else {
        puts("Fail");
    }

    return 0;
}

ファイルが存在する場合、関数は TRUE を返します。ドキュメントによると、メタデータが設定されたことを意味しますが、Nautilus (GNOME) はfavoriteエンブレムを表示しません。ネット上には例があまりないので、ちょっと行き詰まっています。

4

2 に答える 2

1

値を 1 つだけ設定している場合でも、metadata::emblems には文字列の配列が必要なようです。これはうまくいくようです:

char *value[] = {"favorite", '\0'};
[...]
g_file_set_attribute(file, "metadata::emblems",
                     G_FILE_ATTRIBUTE_TYPE_STRINGV,
                     &value[0],
                     G_FILE_QUERY_INFO_NONE,
                     NULL, NULL);
于 2011-03-19T14:14:48.847 に答える
0

Nautilusにエンブレムを表示させたい場合は、実際にNautilusに拡張機能を提供する必要があります。拡張機能はnautilus-info-providerインターフェースを使用する必要があり、nautilus_info_provider_update_file_info()関数では、nautilus_file_info_add_emblem() 関数を呼び出してエンブレムを追加できます。

于 2011-03-19T07:28:14.460 に答える