代码之家  ›  专栏  ›  技术社区  ›  Matt Joiner

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

  •  3
  • Matt Joiner  · 技术社区  · 14 年前

    GtkFileChooserDialog ,如何允许用户选择文件或文件夹(两者在此处均有效)。这个 actions available 相互排斥。

    2 回复  |  直到 11 年前
        1
  •  5
  •   user367660    14 年前

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

    我在Transmission中的“Createatorrent”对话框中对此进行了一些讨论,最后使用radibox启用两个chooserdialogbuttons中的一个,一个在文件模式,另一个在文件夹模式。

        2
  •  1
  •   Daniel Guenther    5 年前

    你可以再加一个按钮。下面是一个小示例文件选择器窗口,其中有一个用于打开文件或文件夹的“打开”按钮和用于选择文件的“选择”按钮。

    void filechooser(GtkWidget* widget, gpointer gFilepath) {
       // create the dialogue with an "Open" button
       string* filepath = (string*) gFilepath;
       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 the additional "Select" button
       const guint MY_SELECTED = 0;
       gtk_dialog_add_button(GTK_DIALOG(dialog), "Select", MY_SELECTED);
    
       guint response = gtk_dialog_run(GTK_DIALOG(dialog));
       if(response == GTK_RESPONSE_ACCEPT || response == MY_SELECTED){
          *filepath = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
       }
       gtk_widget_destroy(dialog);
    }