@@ -350,15 +350,40 @@ void PortWidget::doMouseRelease(Qt::MouseButton button, const QPointF& pos, Qt::
350350
351351void PortWidget::pickConnectModule ()
352352{
353- QInputDialog qid;
354- qid.setWindowTitle (" Connect new module here" );
355- qid.setLabelText (" New module to connect:" );
356- qid.setComboBoxItems (menu_->compatibleModules ());
357- qid.setOption (QInputDialog::UseListViewForComboBoxItems, true );
358- auto ok = qid.exec ();
359- if (ok == QDialog::Accepted)
353+ if (isInput ())
360354 {
361- menu_->portPicked (qid.textValue ());
355+ QInputDialog qid;
356+ qid.setWindowTitle (" Connect new module here" );
357+ qid.setLabelText (" New module to connect:" );
358+ qid.setComboBoxItems (menu_->compatibleModules ());
359+ qid.setOption (QInputDialog::UseListViewForComboBoxItems, true );
360+ if (qid.exec () == QDialog::Accepted)
361+ {
362+ menu_->portPicked (qid.textValue ());
363+ }
364+ }
365+ else
366+ {
367+ QDialog dialog;
368+ dialog.setWindowTitle (" Connect new module(s) here" );
369+ QVBoxLayout form (&dialog);
370+ form.addWidget (new QLabel (" New module(s) to connect:" ));
371+
372+ QListWidget list;
373+ list.addItems (menu_->compatibleModules ());
374+ list.setSelectionMode (QAbstractItemView::MultiSelection);
375+ form.addWidget (&list);
376+
377+ QDialogButtonBox buttonBox (QDialogButtonBox::Ok | QDialogButtonBox::Cancel, Qt::Horizontal, &dialog);
378+ form.addWidget (&buttonBox);
379+ connect (&buttonBox, SIGNAL (accepted ()), &dialog, SLOT (accept ()));
380+ connect (&buttonBox, SIGNAL (rejected ()), &dialog, SLOT (reject ()));
381+
382+ if (dialog.exec () == QDialog::Accepted)
383+ {
384+ Q_FOREACH (QListWidgetItem* lineEdit, list.selectedItems ())
385+ menu_->portPicked (lineEdit->text ());
386+ }
362387 }
363388}
364389
0 commit comments