【问题标题】:How do I set an emblem with GTK/GIO?如何使用 GTK/GIO 设置标志?
【发布时间】:2011-03-19 00:36:56
【问题描述】:

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

【问题讨论】:

    标签: c gtk gio


    【解决方案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);
    

    【讨论】:

      【解决方案2】:

      如果您希望 Nautilus 显示一个标志,您需要实际为 Nautilus 提供一个扩展来执行此操作。你的扩展应该使用nautilus-info-provider接口,在nautilus_info_provider_update_file_info() 函数中你可以调用nautilus_file_info_add_emblem()函数添加一个标志。

      【讨论】:

      • 我希望 Nautilus 展示“最喜欢的”标志,这是一个库存标志,我不想创建一个新标志。我发现“metadata::emblems”的值必须是一个数组。
      • 这不会创建一个新的标志,它会显示一个现有的命名标志。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-29
      • 1970-01-01
      相关资源
      最近更新 更多