12 #include <QListWidgetItem>
18 : QDialog(parent, Qt::Tool),
Ui::ItemSelectionDlg() {
22 if (multiSelectionEnabled) {
23 label->setText(tr(
"Please select one or several %1:\n(press CTRL+A to "
26 listWidget->setSelectionMode(QAbstractItemView::ExtendedSelection);
28 label->setText(tr(
"Please select one %1").arg(itemName));
31 if (!labelStr.isNull()) {
32 label->setText(labelStr);
37 int defaultSelectedIndex) {
38 for (
int i = 0; i < items.size(); ++i) {
40 listWidget->insertItem(
static_cast<int>(i),
41 new QListWidgetItem(items[i]));
45 if (defaultSelectedIndex >= 0 && defaultSelectedIndex < items.size()) {
46 listWidget->item(defaultSelectedIndex)->setSelected(
true);
54 QList<QListWidgetItem*> list = listWidget->selectedItems();
55 return list.empty() ? -1 : listWidget->row(list.front());
60 QList<QListWidgetItem*> list = listWidget->selectedItems();
63 indexes.resize(
static_cast<size_t>(list.size()));
64 }
catch (
const std::bad_alloc&) {
69 for (
int i = 0; i < list.size(); ++i) {
70 indexes[i] = listWidget->row(list[i]);
81 for (
size_t i = 0; i < entities.size(); ++i) {
83 items << QString(
"%1 (ID=%2)")
84 .arg(entities[i]->getName())
85 .arg(entities[i]->getUniqueID());
87 epDlg.
setItems(items, selectedIndex);
98 std::vector<int>& selectedIndexes,
101 selectedIndexes.clear();
106 for (
size_t i = 0; i < entities.size(); ++i) {
108 items << QString(
"%1 (ID=%2)")
109 .arg(entities[i]->getName())
110 .arg(entities[i]->getUniqueID());
114 if (!epDlg.exec())
return false;
std::vector< ccHObject * > Container
Standard instances container (for children, etc.)
Dialog to select one or multiple items.
ccItemSelectionDlg(bool multiSelectionEnabled, QWidget *parent=0, QString itemName="entities", QString label=QString())
Default constructor.
void getSelectedIndexes(std::vector< int > &indexes) const
Returns selected indexes (multi-selection mode)
void setItems(const QStringList &items, int defaultSelectedIndex=0)
Sets the list of items.
int getSelectedIndex() const
Returns selected index (unique selection mode)
static int SelectEntity(const ccHObject::Container &entities, int defaultSelectedIndex=0, QWidget *parent=0, QString label=QString())
Static shortcut: unique selection mode.
static bool SelectEntities(const ccHObject::Container &entities, std::vector< int > &indexes, QWidget *parent=0, QString label=QString())
Static shortcut: multi-selection mode.