Use native dialogs with same code on Windows,Mac OSX and GTK
https://github.com/Geequlim/NativeDialogs.git
Native Dialogs
c++
MessageDialog("Notice","Hello World!",{"Close"}).show();
%%CODEBLOCK0%%c++
MessageDialog mdlg("Notice","Do you want to quit?",{"Yes","No"});
mdlg.setDecideHandler([](const Dialog& dlg){
auto mdlg = dynamic_cast<const MessageDialog&>(dlg);
if( mdlg.responseButtonTitle() == "Yes" ){
// He want to quit
}
else if(mdlg.responseButtonIndex() == 1) {
// He is not sure to quit
}
})
.show();
%%CODEBLOCK1%%c++
FileDialog fdlg("Open some text files",
FileDialog::SELECT_FILE|FileDialog::MULTI_SELECT);
fdlg.setDefaultPath("..")
.addFilter("Text Files","txt")
.addFilter("Code files","c;cpp;h;hpp")
.addFilter("All files","*")
//.setSaveMode(true) // Set save mode
.setDecideHandler([](const Dialog& dlg){
auto fdlg = dynamic_cast<const FileDialog&>(dlg);
const std::vector<std::string>& fileList = fdlg.selectedPathes();
// All pathes are in absolute format
})
.setCancelHandler( [](const Dialog& dlg){
// Nothing selected as it was canceled
}
)
.show();
%%CODEBLOCK2%%c++
ColorPickerDialog cdlg("Pick a color you like");
cdlg.setColor({1,0,1,1}) // Set default selected color
.setDecideHandler( [](const Dialog& dlg){
auto colorDlg = dynamic_cast<const ColorPickerDialog&>(dlg);
auto color = colorDlg.color();
// Get color value with color.r,color.g,color.b and color.a
})
.show();
`
Platform|Screenshot
---|---
Windows|
GTK|
OS X|
#### More about usage : [test.cc](test.cc)
### Notice for platform specifications
* Color Picker Dialog won't pause your thread on Mac OSX
* File Dialogs support set host window with a NSWindow* value by setHostWindow` method on Mac OSX