GtkFileChooser + GtkFileFilter = can't select any file



 

Hello everyone, I’m the developer of BIMP (http://alessandrofrancesconi.it/projects/bimp), that’s a plugin 
for Gimp written using the version 2.16 of GTK.

 

Some of my users are complaing a bug when trying to select image files using the classic GtkFileChooser: the 
list of files into every folder (that actually contains images) is always empty. The fact is that I can’t 
reproduce the bug while still having likely their same system configuration.

 

But proceed with order... There is a piece of code in my plugin that shows a GtkFileChooser filtered in order 
to show image files only. Here is the code:

 

/* +++++++++++++++++++++++++++++++++++++ */

 GtkFileFilter *filter_all, *supported[7];

 

  file_chooser = gtk_file_chooser_dialog_new(
   _("Select images"), 
   NULL, 
   GTK_FILE_CHOOSER_ACTION_OPEN, 
   GTK_STOCK_CANCEL, GTK_RESPONSE_CLOSE, 
   GTK_STOCK_ADD, GTK_RESPONSE_ACCEPT, NULL
  );
  gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(file_chooser), TRUE);
  
  filter_all = gtk_file_filter_new();
  gtk_file_filter_set_name(filter_all,_("All supported types"));
  
  supported[0] = gtk_file_filter_new();
  gtk_file_filter_set_name(supported[0],"BMP");
 #ifdef __APPLE__
  /* Workaround for Mac OSX, that seems to have a bug on GTK file selectors */
  gtk_file_filter_add_pattern (supported[0], "*.[bB][mM][pP]");
  gtk_file_filter_add_pattern (filter_all, "*.[bB][mM][pP]");
 #else
  gtk_file_filter_add_mime_type(supported[0],"image/bmp");
  gtk_file_filter_add_mime_type(filter_all,"image/bmp");
 #endif
 
  supported[1] = gtk_file_filter_new();
  gtk_file_filter_set_name(supported[1],"JPEG");
 #ifdef __APPLE__
  gtk_file_filter_add_pattern (supported[1], "*.[jJ][pP][gG]");
  gtk_file_filter_add_pattern (supported[1], "*.[jJ][pP][eE][gG]");
  gtk_file_filter_add_pattern (filter_all, "*.[jJ][pP][gG]");
  gtk_file_filter_add_pattern (filter_all, "*.[jJ][pP][eE][gG]");
 #else
  gtk_file_filter_add_mime_type(supported[1],"image/jpeg");
  gtk_file_filter_add_mime_type(filter_all,"image/jpeg");
 #endif
 
  supported[2] = gtk_file_filter_new();
  gtk_file_filter_set_name(supported[2],"GIF");
 #ifdef __APPLE__
  gtk_file_filter_add_pattern (supported[2], "*.[gG][iI][fF]");
  gtk_file_filter_add_pattern (filter_all, "*.[gG][iI][fF]");
 #else
  gtk_file_filter_add_mime_type(supported[2],"image/gif");
  gtk_file_filter_add_mime_type(filter_all,"image/gif");
 #endif
 

/* ... other file formats... */
 
  supported[6] = gtk_file_filter_new();
  gtk_file_filter_set_name(supported[6],"XCF");
 #ifdef __APPLE__
  gtk_file_filter_add_pattern (supported[6], "*.[xX][cC][fF]");
  gtk_file_filter_add_pattern (filter_all, "*.[xX][cC][fF]");
 #else
  gtk_file_filter_add_mime_type(supported[6],"image/x-xcf");
  gtk_file_filter_add_mime_type(supported[6],"image/x-compressed-xcf");
  gtk_file_filter_add_mime_type(supported[6],"application/x-ext-xcf");
  gtk_file_filter_add_mime_type(filter_all,"image/x-xcf");
  gtk_file_filter_add_mime_type(filter_all,"image/x-compressed-xcf");
  gtk_file_filter_add_mime_type(filter_all,"application/x-ext-xcf");
 #endif
 

/* finally adds all the filters to the chooser */
  gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(file_chooser), filter_all);
  int i;
  for(i = 0; i < 7; i++) {
     gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(file_chooser), supported[i]);
  }

/* ++++++++++++++++++++++++++++++++++++ */

 

 

You’ve seen already a thing: I use the mime type filtering by default because I think that’s the best 
approach (in this way the filter should catch files without extension too), but apparently it does not work 
for OSX users, so I needed to switch to the less robust “gtk_file_filter_add_pattern” function for them. I 
did the same thing written here https://mail.gnome.org/archives/commits-list/2011-February/msg07666.html

 

On the other hand, “some” people on Windows are complaing that they can’t select any file too. They have the 
last version of GIMP (2.8.4), with GTK set to 2.16 or higher and they run Windows 7 32bit or XP SP3.

 

Instead, while still having GIMP 2.8 + GTK 2.16 and Windows 7, I personally have no bugs when using the 
FileChooser. So what’s the real problem (also regarding OSX users)? Is it a known bug of the GTK core?

 

Could you help me? Thanks!

Ale


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]