mirror of https://github.com/bsnes-emu/bsnes.git
58 lines
1.9 KiB
C++
58 lines
1.9 KiB
C++
string pDialogWindow::fileOpen(Window &parent, const string &path, const lstring &filter) {
|
|
string filterList;
|
|
for(auto &item : filter) {
|
|
filterList.append(item);
|
|
filterList.append(";;");
|
|
}
|
|
filterList.rtrim<1>(";;");
|
|
|
|
//convert filter list from phoenix to Qt format, example:
|
|
//"Text, XML files (*.txt,*.xml)" -> "Text, XML files (*.txt *.xml)"
|
|
signed parenthesis = 0;
|
|
for(auto &n : filterList) {
|
|
if(n == '(') parenthesis++;
|
|
if(n == ')') parenthesis--;
|
|
if(n == ',' && parenthesis) n = ' ';
|
|
}
|
|
|
|
QString filename = QFileDialog::getOpenFileName(
|
|
&parent != &Window::none() ? parent.p.qtWindow : nullptr, "Open File",
|
|
QString::fromUtf8(path), QString::fromUtf8(filterList)
|
|
);
|
|
return filename.toUtf8().constData();
|
|
}
|
|
|
|
string pDialogWindow::fileSave(Window &parent, const string &path, const lstring &filter) {
|
|
string filterList;
|
|
for(auto &item : filter) {
|
|
filterList.append(item);
|
|
filterList.append(";;");
|
|
}
|
|
filterList.rtrim<1>(";;");
|
|
|
|
//convert filter list from phoenix to Qt format, example:
|
|
//"Text, XML files (*.txt,*.xml)" -> "Text, XML files (*.txt *.xml)"
|
|
signed parenthesis = 0;
|
|
for(auto &n : filterList) {
|
|
if(n == '(') parenthesis++;
|
|
if(n == ')') parenthesis--;
|
|
if(n == ',' && parenthesis) n = ' ';
|
|
}
|
|
|
|
QString filename = QFileDialog::getSaveFileName(
|
|
&parent != &Window::none() ? parent.p.qtWindow : nullptr, "Save File",
|
|
QString::fromUtf8(path), QString::fromUtf8(filterList)
|
|
);
|
|
return filename.toUtf8().constData();
|
|
}
|
|
|
|
string pDialogWindow::folderSelect(Window &parent, const string &path) {
|
|
QString directory = QFileDialog::getExistingDirectory(
|
|
&parent != &Window::none() ? parent.p.qtWindow : nullptr, "Select Directory",
|
|
QString::fromUtf8(path), QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks
|
|
);
|
|
string name = directory.toUtf8().constData();
|
|
if(name != "" && name.endswith("/") == false) name.append("/");
|
|
return name;
|
|
}
|