size_t TemplatesCallbackUI::SelectTemplate( std::shared_ptr<std::vector<TemplateDescriptor> >templates) { promise<size_t> prom; auto res = prom.get_future(); // readdress call to main UI thread postToMainThread([&]() { // show dialog auto selectTemplateDlg = new QDialog(0, 0); Ui_TemplatesDialog selectTemplate; selectTemplate.setupUi(selectTemplateDlg); for (size_t pos = 0, last = templates->size(); pos < last; ++pos) { selectTemplate.comboBoxTemplates->insertItem(0, QString::fromStdString( (*templates)[pos].Name())); } selectTemplateDlg->exec(); prom.set_value(static_cast<size_t>(selectTemplate.comboBoxTemplates-> currentIndex())); }, _mainApp); // wait for result and return it return res.get(); }
size_t TemplatesCallback::SelectTemplate( std::vector<TemplateDescriptor>& templates) { // show dialog auto selectTemplateDlg = new QDialog(0, 0); Ui_TemplatesDialog selectTemplate; selectTemplate.setupUi(selectTemplateDlg); for (size_t pos = 0, last = templates.size(); pos < last; ++pos) { selectTemplate.comboBoxTemplates->insertItem(0, QString::fromStdString( templates[pos].Name())); } selectTemplateDlg->exec(); return static_cast<size_t>(selectTemplate.comboBoxTemplates->currentIndex()); }