示例#1
0
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());
}