2011-03-19 56 views
1

我試圖設置使用GIO如何使用GTK/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,其中,根據該文檔裝置中的元數據被設定,但鸚鵡螺(GNOME)不顯示的標誌favorite會徽。網上的例子並不多,所以我很困難。

回答

1

它看起來像元數據::徽章需要一個字符串數組,即使你只設置一個值。 這似乎工作:

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); 
0

如果你想Nautilus顯示標誌,你需要實際提供一個擴展到Nautilus這樣做。您的分機應該使用nautilus-info-provider界面,並且在nautilus_info_provider_update_file_info() 功能中,您可以調用nautilus_file_info_add_emblem()功能添加標誌。

+0

我想Nautilus來顯示「最喜歡」的標誌,這是一個股票之一,我不希望* *創建一個新的標誌。我發現「metadata :: emblems」的值必須是一個數組。 – molok 2011-03-19 14:16:29

+0

這不會創建一個新的標誌,它會顯示一個現有的標誌。 – detly 2011-03-19 15:18:51