启用 GtkFileChooserDialog 选择文件或文件夹

发布于 2024-09-07 21:51:02 字数 308 浏览 10 评论 0原文

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

Using GTK+'s GtkFileChooserDialog, how can I allow the user to select a file or a folder (both are valid here). The actions available are mutually exclusive.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

一个人的旅程 2024-09-14 21:51:02

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

我在 Transmission 的“创建 torrent”对话框中对此进行了一些尝试,最后使用radibox 来启用两个选择器对话框按钮之一,一个处于文件模式,另一个处于文件夹模式。

Unfortunately I don't think this is possible.

I played around with this a bit in the "create a torrent" dialog in Transmission, and wound up using a radibox to enable one of two chooserdialogbuttons, one in file mode and the other in folder mode.

最美不过初阳 2024-09-14 21:51:02

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

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

You could add another button. Here is a small example file-chooser window that has a button for "open" which opens files or folders and "select" button for selecting files.

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);
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文