zenity로 쉽게 기본 파일 선택 다이얼로그를 띄울 수 있다.
주목해야할 옵션은 --multiple
과 --file-filter
옵션이다.
std::string cmd="zenity --file-selection --multiple --file-filter=\'Image files (png,jpg,bmp) | *.png *.jpg *.bmp\'";
FILE* fp=popen(cmd.c_str(), "r");
std::string buffer;
char c;
while(fread(&c,1,1,fp)==1 && c!=EOF) {
buffer.push_back(c);
}
if(buffer.length()==0)return;
buffer.pop_back(); //last char is '\n'
std::vector<std::string> files;
std::string::size_type offset = 0;
while (offset<buffer.length()){
std::string word = buffer.substr(offset, buffer.find('|', offset) - offset);
offset += word.length() + 1;
files.push_back(word);
}