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

看起来 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 回答