Включите GtkFileChooserDialog, чтобы выбрать файлы ИЛИ папки - PullRequest
3 голосов
/ 03 июля 2010

Используя GTK + GtkFileChooserDialog , как я могу позволить пользователю выбрать файл или папку (оба действительны здесь). доступные действия являются взаимоисключающими.

Ответы [ 2 ]

5 голосов
/ 09 июля 2010

К сожалению, я не думаю, что это возможно.

Я немного поэкспериментировал с этим в диалоговом окне «Создать торрент» в Transmission и завелся с помощью радиоблока, чтобы включить одну из двух кнопок выбора, одна в файловом режиме, а другая в режиме папки.

1 голос
/ 21 ноября 2015

Вы можете добавить еще одну кнопку. Вот небольшой пример, который иллюстрирует, как вы могли бы это сделать.

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

Обратите внимание, что кнопка «Выбрать» в моем примере выполняет те же действия, что и «Открыть», если файл выбран, для папок он действительно отличается.

...