启用GtkFileChooserDialog以选择文件或文件夹

时间:2010-07-03 09:09:23

标签: ubuntu gtk pygtk filechooser

使用GTK +的GtkFileChooserDialog,我如何允许用户选择文件或文件夹(两者都在这里有效)。 actions available是互斥的。

2 个答案:

答案 0 :(得分:5)

不幸的是,我不认为这是可能的。

我在传输中的“创建一个torrent”对话框中玩了一下,然后使用radibox启用两个chooserdialogbuttons中的一个,一个处于文件模式,另一个处于文件夹模式。

答案 1 :(得分:1)

您可以添加其他按钮。这是一个小例子,说明了如何做到这一点。

void filechooser(GtkWidget* widget, gpointer data) {
   // we will pass the filepath by reference
   string* filepath = (string*) data;
   GtkWidget *dialog = gtk_file_chooser_dialog_new(
         "Open File", NULL, 
         GTK_FILE_CHOOSER_ACTION_OPEN,
         GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL);
   // add a button which allows the user to select a folder
   const guint selected = 0; // response from the button
   gtk_dialog_add_button(GTK_DIALOG(dialog),"Select",selected);
   // get the path the user selected
   guint response = gtk_dialog_run(GTK_DIALOG(dialog));
   if(response == GTK_RESPONSE_ACCEPT || response == selected){
      *filepath = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
   }
   gtk_widget_destroy(dialog);
}

请注意,如果选择了一个文件,我的示例中的“选择”按钮与“打开”的操作相同,只是文件夹才真正不同。