2017-02-27 35 views
1

如何在gtk_recent_chooser_dialog_new小部件中獲取所選文件的名稱。下面演示文件來解釋.....如何在gtk_recent_chooser_dialog_new小部件中獲取文件名

#include <gtk/gtk.h> 
//recentchooserdialog.c 
/* 
gcc -std=c11 -Wall -fmax-errors=10 -Wextra recentchooserdialog.c -o recentchooserdialog `pkg-config --cflags --libs gtk+-3.0 ` 
*/ 

int main(int argc, char *argv[]) 
{  
    gtk_init(&argc, &argv); 
    gboolean multiple = FALSE; 
    //GList * files; 
    GtkRecentInfo *info; 
    gchar *chemin = NULL; 

    GtkWidget *recentchooserdialog = gtk_recent_chooser_dialog_new("RecentChooserDialog", NULL, 
          ("_Cancel"), GTK_RESPONSE_CANCEL, 
          ("_Open"), GTK_RESPONSE_OK, NULL); 

    gtk_recent_chooser_set_limit(GTK_RECENT_CHOOSER(recentchooserdialog),-1); 
    gtk_recent_chooser_set_show_tips(GTK_RECENT_CHOOSER(recentchooserdialog),TRUE); 
    gtk_recent_chooser_set_select_multiple(GTK_RECENT_CHOOSER(recentchooserdialog), multiple); 

    if (gtk_dialog_run(GTK_DIALOG(recentchooserdialog)) == GTK_RESPONSE_OK) 
    { 
     info = gtk_recent_chooser_get_current_item (GTK_RECENT_CHOOSER (recentchooserdialog)); 
     if (multiple==TRUE) 
     { 
      /** how to get file names selected here **/ 

     } 
     else 
     { 
      /** how to get one single filename selected here **/ 
      // GtkRecentInfo *info; 
      info = gtk_recent_chooser_get_current_item (GTK_RECENT_CHOOSER (recentchooserdialog)); 
      if (info) 
       g_print("structur info exists\n "); 
      /* below is not the good casting */ 
      chemin = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(recentchooserdialog)); 
      g_print("selected path %s\n",chemin); 
     } 
     gtk_recent_info_unref (info); 
    } 
    gtk_widget_destroy (recentchooserdialog); 
    return 0; 
} 

許多谷歌搜索行動之後....我沒有找到任何東西 在了手gtk_file_chooser_dialog_new我發現

gtk_file_chooser_get_filename或gtk_file_chooser_get_filenames行動 其他上下文中是好的,我

void cb_open (GtkWidget *widget, gpointer user_data) 
{ 
    GtkWidget *dialog = NULL; 
    GtkFileChooserAction action = GTK_FILE_CHOOSER_ACTION_OPEN; 

    dialog = gtk_file_chooser_dialog_new ("Ouvrir un fichier", NULL, 
              action, 
              ("_Cancel"), 
              GTK_RESPONSE_CANCEL, 
              ("_Open"), 
              GTK_RESPONSE_ACCEPT, 
              NULL); 

    if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) 
    { 
    gchar *file_name = NULL; 

    file_name = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog)); 
    g_print("fichier ouvert : %s \n",file_name); 

    g_free (file_name), file_name = NULL; 
    } 
    gtk_widget_destroy (dialog); 
} 

你能幫我完成一個選擇和多項選擇的情況下 由於通過提前

回答

0

我找到的解決方案的一部分單一選擇

#include <gtk/gtk.h> 
//recentchooserdialog.c 
/* 
gcc -std=c11 -Wall -fmax-errors=10 -Wextra recentchooserdialog.c -o recentchooserdialog `pkg-config --cflags --libs gtk+-3.0 ` 
*/ 

int main(int argc, char *argv[]) 
{  
    gtk_init(&argc, &argv); 
    gboolean multiple = FALSE; 
    //GList * files; 
    GtkRecentInfo *info; 
    const gchar *text_info = NULL; 

    GtkWidget *recentchooserdialog = gtk_recent_chooser_dialog_new("RecentChooserDialog", NULL, 
          ("_Cancel"), GTK_RESPONSE_CANCEL, 
          ("_Open"), GTK_RESPONSE_OK, NULL); 

    gtk_recent_chooser_set_limit(GTK_RECENT_CHOOSER(recentchooserdialog),-1); 
    gtk_recent_chooser_set_show_tips(GTK_RECENT_CHOOSER(recentchooserdialog),TRUE); 
    gtk_recent_chooser_set_select_multiple(GTK_RECENT_CHOOSER(recentchooserdialog), multiple); 

    if (gtk_dialog_run(GTK_DIALOG(recentchooserdialog)) == GTK_RESPONSE_OK) 
    { 
     info = gtk_recent_chooser_get_current_item (GTK_RECENT_CHOOSER (recentchooserdialog)); 
     if (multiple==TRUE) 
     { 
      /** how to get file names selected here **/ 

     } 
     else 
     { 
      /** how to get one single filename selected here **/ 
      info = gtk_recent_chooser_get_current_item (GTK_RECENT_CHOOSER (recentchooserdialog)); 
      if (info) 
      { 
       text_info = gtk_recent_info_get_uri (info); 
       g_print("une structure info existe %s\n", text_info); 
      } 
     } 
     gtk_recent_info_unref (info); 
    } 
    gtk_widget_destroy (recentchooserdialog); 
    return 0; 
} 

要小心使用Unicode字符串 我不考什麼好作用,必須添加

text_info = g_locale_to_utf8 (text_info, -1, NULL, NULL, NULL); 

text_info = g_locale_from_utf8 (text_info, -1, NULL, NULL, NULL); 

下一步是測試什麼是多重選擇

相關問題