MATLAB Answers

Yu Li
0

uigetfile for multiple type problem

Asked by Yu Li
on 28 Apr 2019
Latest activity Commented on by dpb
on 28 Apr 2019
Accepted Answer by dpb
Hi:
I want to use uigetfile to pick files, the files needed have two types:
  1. 'abc*.mat'
  2. '*.dat'
but when I use command:
uigetfile({'abc*.mat','*.dat'})
only the type 'abc*.mat' is shown in the file selection window,
when I use command:
uigetfile({'*.dat','abc*.mat'})
only the type '*.dat' is shown in the file selection window.
these means that, my command only shows the 1st type.
is there any mistake with my command?
Thanks!
Yu

  0 Comments

Sign in to comment.

1 Answers

dpb
Answer by dpb
on 28 Apr 2019
 Accepted Answer

Gotta' have good eyes in reading the documentation...use
uigetfile({'abc*.mat';'*.dat'})
instead--a column instead of row vector of cell strings. A second column is interpreted as an optional file descriptor.
Also NB: only one selection criterion is active at a time; they're sequential lines in a dropdown box so when you select one, the other goes away. This may or may not be desired behavior. Unfortunately if the latter, even with 'MultiSelect','on' it will cancel the other file in the already selected list so whether having more than one file type in the dropdown box is even worth doing or not appears questionable...

  8 Comments

Yu Li
on 28 Apr 2019
Ok... I see a selection at the bottom right of the window... thank you.
I'm contacting Mathworks Technical Support to see if there is a perfect solution as I expected (display both together), will post here once I have it.
Bests,
Yu
uigetfile() always invokes the system file browser, and only showing one file type at a time is common for system file browsers.
dpb
on 28 Apr 2019
And, uicontrol won't allow the putgetfile style so appears TMW hasn't left any hooks to do anything else.
It seems to me the wrapper function in CVF Fortran let one do that but I've not reinstalled the compiler since the system crash as the installer won't run under 64-bit OS even though the command-line compiler will--but it takes setting a myriad of system variables to make linking work correctly and I've not taken the time to do so, so can't check...and I'm not enough of a masochist to go do it at the root level without the interface functions just for a Forum maybe question that doesn't have direct benefit to the OP! :)
I guess I also wasn't aware of that quirk...seems like a really rude implementation indeed; have to agree w/ Yu on that.

Sign in to comment.



Translated by