如何使用GTK / GIO设置徽章?

时间:2011-03-19 00:36:56

标签: c gtk gio

我正在尝试使用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标志。网上的例子不多,所以我有点卡住了。

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

如果您希望Nautilus显示徽章,您需要实际为Nautilus提供扩展程序。您的扩展程序应使用nautilus-info-provider界面,在nautilus_info_provider_update_file_info() 功能中,您可以调用nautilus_file_info_add_emblem()功能添加徽标。