23#include <QStringListModel>
26#include <boost/scope_exit.hpp>
48base::base(std::shared_ptr<editor_data_state> editordata, QWidget* parent,
bool owned)
58std::shared_ptr<editor_data_state>
128 setWindowTitle(QString(
"Edit Relationship: %1").arg(Virtue.
p_name.c_str()));
129 ListWidget->setContextMenuPolicy(Qt::CustomContextMenu);
130 ComboBox->setHidden(
true);
149 SaveButton->setHidden(
true);
150 RemoveButton->setHidden(
true);
159 if (
dynamic_cast<QListWidget*
>(Target)) {
160 auto decode = [
this](
const QMimeData*
const data) -> QPair<bool, QStringList> {
162 QStringList newItems;
164 if (data->hasFormat(
"application/vnd.text.list") ==
true) {
165 QByteArray encodedData = data->data(
"application/vnd.text.list");
166 QDataStream stream(&encodedData, QIODevice::ReadOnly);
170 while (!stream.atEnd()) {
174 const QString& obj_id = text.at(0);
175 const QString& obj_class = text.at(1);
177 if ((obj_class.toStdString() == referenceClass) ||
179 newItems.append(obj_id);
188 return qMakePair(allGood, newItems);
191 if (Event->type() == QEvent::DragEnter) {
192 QDragEnterEvent* tDragEvent =
static_cast<QDragEnterEvent*
>(Event);
194 const QMimeData*
const data = tDragEvent->mimeData();
195 const auto& decodedData = decode(data);
196 if ((decodedData.first ==
true) && (decodedData.second.size() > 0)) {
197 tDragEvent->acceptProposedAction();
203 if (Event->type() == QEvent::Drop) {
204 QDropEvent* tDropEvent =
static_cast<QDropEvent*
>(Event);
206 const QMimeData*
const data = tDropEvent->mimeData();
207 for (
const QString& o : decode(data).second) {
213 tDropEvent->acceptProposedAction();
217 }
else if (QComboBox* Box =
dynamic_cast<QComboBox*
>(Target)) {
218 if (Event->type() == QEvent::Wheel) {
222 if (Event->type() == QEvent::KeyPress) {
223 QKeyEvent* KeyEvent =
dynamic_cast<QKeyEvent*
>(Event);
225 if (KeyEvent->key() == Qt::Key_Up || KeyEvent->key() == Qt::Key_Down) {
232 if (Event->type() == QEvent::FocusOut) {
233 QWidget* popup = Box->findChild<QFrame*>();
234 QWidget* popup1 = Box->lineEdit()->findChild<QFrame*>();
236 if (popup != popup1 and not popup->isHidden()) {
241 ListWidget->takeItem(ListWidget->row(
FirstItem));
242 ListWidget->setItemWidget(
FirstItem,
nullptr);
246 std::cout <<
"Do we ever get here? FirstItem is not null but other conditions not met!\n";
250 }
else if (QLineEdit* le =
dynamic_cast<QLineEdit*
>(Target)) {
251 if (Event->type() == QEvent::MouseButtonDblClick) {
252 const QString& value = le->text();
277 ListWidget->setAcceptDrops(
true);
278 ListWidget->installEventFilter(
this);
284 ListWidget->setSelectionMode(QAbstractItemView::ExtendedSelection);
285 ListWidget->setEditTriggers(QAbstractItemView::DoubleClicked);
286 ListWidget->setDragDropMode(QAbstractItemView::InternalMove);
304 for (
tref const& o : related) {
305 result.append(QString::fromStdString(o.full_name()));
322 ComboBox->addItems(ListOfObjects);
334 connect(SaveButton, SIGNAL(clicked()),
this, SLOT(
EndSignal()));
341 SIGNAL(itemDoubleClicked(QListWidgetItem*)),
344 Qt::UniqueConnection);
345 connect(ListWidget->model(), SIGNAL(layoutChanged()),
this, SLOT(
DummyMovement()));
346 connect(ListWidget, SIGNAL(itemPressed(QListWidgetItem*)),
this, SLOT(
EditItemEntered(QListWidgetItem*)));
364 FirstItem->setBackground(Qt::GlobalColor::lightGray);
365 FirstItem->setForeground(QColor(0, 0, 0, 127));
384 setToolTip(QString(
"Relationship Name: %1 \n").arg(Virtue.
p_name.c_str()) +
385 QString(
" Type: %1 \n").arg(Virtue.
p_type.c_str()) +
386 QString(
" Cardinality: %1 \n")
389 QString(
" Description: %1 \n").arg(Virtue.
p_description.c_str()));
397 QString oname = QString::fromStdString(obj.full_name());
399 for (QWidget* editor : QApplication::allWidgets()) {
401 if ((w->objectName()).compare(oname) == 0) {
420 std::string
const& ouid =
Item->data(Qt::DisplayRole).toString().toStdString();
430 MoveTop =
new QAction(tr(
"Move Top"),
this);
431 MoveTop->setShortcutContext(Qt::WidgetShortcut);
435 MoveBottom =
new QAction(tr(
"Move Bottom"),
this);
436 MoveBottom->setShortcutContext(Qt::WidgetShortcut);
440 MoveUp =
new QAction(tr(
"Move Up"),
this);
441 MoveUp->setShortcutContext(Qt::WidgetShortcut);
445 MoveDown =
new QAction(tr(
"Move Down"),
this);
446 MoveDown->setShortcutContext(Qt::WidgetShortcut);
453 EditAction->setShortcutContext(Qt::WidgetShortcut);
511 ListWidget->scrollTo(ListWidget->model()->index(index, 0));
512 ListWidget->setCurrentRow(index);
532 ListWidget->scrollTo(ListWidget->model()->index(index, 0));
533 ListWidget->setCurrentRow(index);
544 if (ItemPosition != 0) {
545 this_data.swapItemsAt(ItemPosition, ItemPosition - 1);
553 ListWidget->scrollTo(ListWidget->model()->index(index, 0));
554 ListWidget->setCurrentRow(index);
566 if (ItemPosition != (
this_data.size() - 1)) {
567 this_data.swapItemsAt(ItemPosition, ItemPosition + 1);
575 ListWidget->scrollTo(ListWidget->model()->index(index, 0));
576 ListWidget->setCurrentRow(index);
585 if (QComboBox* ComboBox =
dynamic_cast<QComboBox*
>(ListWidget->itemWidget(
FirstItem))) {
586 ComboBox->lineEdit()->setFocus();
593 QString
const& editorname = QString::fromStdString(obj.full_name());
595 for (QWidget* editor : QApplication::allWidgets()) {
597 if ((w->objectName()).compare(editorname) == 0) {
623 QStringList ListOfObjects;
625 for (
int i = 0; i < ComboBox->count(); ++i) {
626 ListOfObjects.append(ComboBox->itemText(i));
629 QComboBox* NewComboBox =
new QComboBox(
this);
631 NewComboBox->setLineEdit(
new QLineEdit());
633 NewComboBox->addItems(ListOfObjects);
635 QCompleter* Completer =
new QCompleter(ListOfObjects);
636 Completer->setCaseSensitivity(Qt::CaseInsensitive);
637 Completer->setFilterMode(Qt::MatchContains);
639 NewComboBox->lineEdit()->setCompleter(Completer);
641 NewComboBox->setEditable(
true);
643 NewComboBox->setEditText(
Item->text());
645 if (ListOfObjects.size() > 0) {
646 NewComboBox->lineEdit()->selectAll();
650 NewComboBox->setEnabled(
false);
653 QVariant VariantFromList(ListOfObjects);
655 NewComboBox->setValidator(MyCustomValidator);
656 NewComboBox->installEventFilter(
this);
658 connect(NewComboBox, SIGNAL(activated(
const QString&)),
this, SLOT(
AddToDataList(
const QString&)));
660 NewComboBox->lineEdit()->installEventFilter(
this);
662 ListWidget->setItemWidget(
FirstItem, NewComboBox);
676 for (
int i = 0; i != ListWidget->count(); ++i) {
677 QListWidgetItem*
Item = ListWidget->item(i);
678 QString
const& val =
Item->text();
708 int index =
this_data.indexOf(DataValue);
709 ListWidget->scrollTo(ListWidget->model()->index(index, 0));
710 ListWidget->setCurrentRow(index);
715 FirstItem =
new QListWidgetItem(DataValue.toStdString().c_str());
721 FirstItem->setBackground(Qt::GlobalColor::lightGray);
722 FirstItem->setForeground(QColor(0, 0, 0, 127));
735 QList<QListWidgetItem*> items;
738 items = ListWidget->selectedItems();
745 if (items.size() > 0) {
747 for (QListWidgetItem* item : items) {
748 QString text = item->text();
752 if (QListWidgetItem* toremove = ListWidget->takeItem(ListWidget->row(item))) {
757 if (QComboBox* editbox =
dynamic_cast<QComboBox*
>(ListWidget->itemWidget(
FirstItem))) {
758 editbox->lineEdit()->clear();
759 editbox->lineEdit()->clearFocus();
777 for (
int i = 0; i < ListWidget->count(); ++i) {
778 QString
const& value = ListWidget->item(i)->text();
781 values.append(value);
786 if (values.size() > 0) {
788 ListWidget->setPalette(QApplication::palette(
this));
830 StringLineEdit->setReadOnly(
true);
832 StringLineEdit->installEventFilter(
this);
834 StringLineEdit->setTabChangesFocus(
true);
836 setWindowTitle(QString(
"Edit Attr : %1").arg(virtue.
p_name.c_str()));
837 AttributeNameLabel->setText(QString(virtue.
p_name.c_str()) +
" : ");
839 AttributeNameLabel->setHidden(
true);
846 OkButton->setDisabled(
true);
853 StringLineEdit->setPalette(QApplication::palette(
this));
856 OkButton->setHidden(
true);
859 connect(StringLineEdit, SIGNAL(StringValidated()),
this, SLOT(
AddToDataList()), Qt::UniqueConnection);
860 OkButton->setHidden(
true);
868 AttributeNameLabel->setFocus();
884 StringLineEdit->setText(
this_data.value(0));
892 return StringLineEdit;
898 StringLineEdit->SetNullCheck(Check);
904 StringLineEdit->SetMultiCheck(Multi);
910 StringLineEdit->SetCheckDefault(Default);
916 StringLineEdit->selectAll();
922 if (target == StringLineEdit) {
923 if (evt->type() == QEvent::FocusIn) {
925 }
else if (evt->type() == QEvent::KeyPress) {
926 QKeyEvent* kevt =
static_cast<QKeyEvent*
>(evt);
927 switch (kevt->key()) {
931 if (kevt->modifiers() == Qt::AltModifier) {
932 kevt->setModifiers(Qt::NoModifier);
935 StringLineEdit->parentWidget()->setFocus(Qt::FocusReason::TabFocusReason);
961 QString(
"Attribute Name: %1 \n").arg(Virtue.
p_name.c_str()) +
963 QString(
" Range: %1 \n").arg(Virtue.
p_range.c_str()) +
968 QString(
" Description: %1 \n").arg(Virtue.
p_description.c_str()));
982 connect(StringLineEdit, SIGNAL(textChanged()),
this, SLOT(
UpdateActions()), Qt::UniqueConnection);
984 connect(OkButton, SIGNAL(clicked()),
this, SLOT(
AddToDataList()), Qt::UniqueConnection);
992 StringLineEdit->SetDefaultValue(ValueDefault);
1022 OkButton->setEnabled(
true);
1027 OkButton->setEnabled(
true);
1035 QString NewValue = StringLineEdit->toPlainText();
1038 StringLineEdit->setToolTip(QString(
"The set value is : %1").arg(NewValue));
1059 QVBoxLayout* Layout =
new QVBoxLayout();
1062 Dialog->setWindowTitle(QString(
"Edit Attr : %1").arg(Virtue.
p_name.c_str()));
1067 Dialog->setLayout(Layout);
1082 StringLineEdit->clear();
1112 setWindowTitle(QString(
"Edit Attribute: %1").arg(Virtue.
p_name.c_str()));
1114 LineEdit->setReadOnly(
true);
1116 LineEdit->SetPopupMenu();
1122 LineEdit->SetNullCheck(
false);
1127 FormatBox->setCurrentIndex(2);
1131 FormatBox->setCurrentIndex(0);
1135 FormatBox->setCurrentIndex(1);
1147 AttributeName->setText(QString(Virtue.
p_name.c_str()) +
" : ");
1148 AttributeName->setHidden(
true);
1151 QString Dummy(
"Dummy");
1179 if (not
this_data.value(0).startsWith(
"0x")) {
1180 LineEdit->setText(
"0x" +
this_data.value(0));
1186 LineEdit->setText(
"0" +
this_data.value(0));
1201 QString(
"Attribute Name: %1 \n").arg(Virtue.
p_name.c_str()) +
1203 QString(
" Range: %1 \n").arg(Virtue.
p_range.c_str()) +
1207 QString(
" Default Value: %1 \n").arg(Virtue.
p_default_value.c_str()) +
1208 QString(
" Description: %1 \n").arg(Virtue.
p_description.c_str()));
1221 connect(LineEdit, SIGNAL(DecChange()),
this, SLOT(
ChangeFormatDec()));
1222 connect(LineEdit, SIGNAL(OctChange()),
this, SLOT(
ChangeFormatOct()));
1223 connect(LineEdit, SIGNAL(HexChange()),
this, SLOT(
ChangeFormatHex()));
1225 connect(FormatBox, SIGNAL(currentIndexChanged(
int)),
this, SLOT(
ChangeFormat(
int)), Qt::UniqueConnection);
1227 connect(LineEdit, SIGNAL(editingFinished()),
this, SLOT(
AddToList()), Qt::UniqueConnection);
1228 connect(LineEdit, SIGNAL(textChanged(QString)),
this, SLOT(
UpdateActions(QString)), Qt::UniqueConnection);
1229 connect(LineEdit, SIGNAL(returnPressed()),
this, SLOT(
checkIfDuplicated()), Qt::UniqueConnection);
1239 QString Message = QString(
"The value for attribute %1 is in the wrong format").arg(Virtue.
p_name.c_str());
1242 QString RangeMex = QString(
" - The value should be in the range : %1").arg(Range);
1243 Message.append(
"\n\n" + RangeMex);
1247 Message.append(QString(
"\n\n - The value should be formatted as a %1.").arg(Format));
1250 QMessageBox::warning(
this, tr(
"Wrong value"), Message);
1257 auto checkInteger = [
this, text]() {
1260 bool convert_to_defined_base;
1262 qlonglong NewLongLong{ 0 };
1263 qulonglong NewULongLong{ 0 };
1265 auto check_convert = [
this, &convert_to_defined_base]() {
1268 if (not convert_to_defined_base) {
1285 NewULongLong = text.toULongLong(&convert_to_defined_base,
this_base);
1287 if (not check_convert()) {
1305 max_u = ULONG_LONG_MAX;
1310 if (min_u <= NewULongLong and NewULongLong <= max_u) {
1314 ShowWarning(
"", QString(
"[%1 - %2]").arg(min_u).arg(max_u));
1316 NewLongLong = text.toLongLong(&convert_to_defined_base,
this_base);
1318 if (not check_convert()) {
1335 min_s = -(LONG_LONG_MAX)-1;
1336 max_s = LONG_LONG_MAX;
1341 if (min_s <= NewLongLong and NewLongLong <= max_s) {
1345 ShowWarning(
"", QString(
"[%1 - %2]").arg(min_s).arg(max_s));
1359 QString Range = QString::fromStdString(Virtue.
p_range);
1361 if (Range.isEmpty()) {
1365 QStringList ValueList = Range.split(
",");
1367 QList<QPair<QString, QString>> RangeList;
1369 for (QString& RangeValue : ValueList) {
1370 if (RangeValue.contains(
"..")) {
1371 QStringList Ranges = RangeValue.split(
"..");
1372 RangeList.append(QPair<QString, QString>(Ranges.at(0), Ranges.at(1)));
1373 ValueList.removeOne(RangeValue);
1377 if (ValueList.contains(Value)) {
1381 for (QPair<QString, QString>& ValuePair : RangeList) {
1382 if (ValuePair.first ==
"*") {
1383 if (Value.toDouble() <= ValuePair.second.toDouble()) {
1392 else if (ValuePair.second ==
"*") {
1393 if (Value.toDouble() >= ValuePair.first.toDouble()) {
1403 if ((Value.toDouble() >= ValuePair.first.toDouble()) && (Value.toDouble() <= ValuePair.second.toDouble())) {
1421 bool validValue =
true;
1435 Value.toDouble(&ok);
1455 if (
this_data.contains(LineEdit->text())) {
1465 if (
this_data.contains(LineEdit->text())) {
1469 auto convert_to_proper_base = [
this](
const QString& value) -> QString {
1477 if (Unsigned ==
true) {
1485 if (cnvrtd.startsWith(
"0") ==
false) {
1486 cnvrtd.insert(0,
"0");
1488 LineEdit->EmitOctSlot();
1490 LineEdit->EmitDecSlot();
1492 if (cnvrtd.startsWith(
"0x", Qt::CaseInsensitive) ==
false) {
1493 cnvrtd.insert(0,
"0x");
1495 LineEdit->EmitHexSlot();
1507 LineEdit->blockSignals(
true);
1509 BOOST_SCOPE_EXIT(this_)
1511 this_->LineEdit->blockSignals(
false);
1513 BOOST_SCOPE_EXIT_END
1515 bool isValid =
true;
1517 QString input = LineEdit->text();
1534 this_data.append(convert_to_proper_base(input));
1538 if (isValid ==
true) {
1539 QString Dummy(
"Dummy");
1548 if (isValid ==
true) {
1564 QString CurrentString = LineEdit->text();
1566 if (CurrentString.isEmpty()) {
1586 QString ConvertedString;
1591 bool OkConversion =
false;
1597 ConvertedString.setNum(CurrentString.toULongLong(&OkConversion, 0), 10);
1599 ConvertedString.setNum(CurrentString.toLongLong(&OkConversion, 0), 10);
1608 ConvertedString.setNum(CurrentString.toULongLong(&OkConversion, 0), 8);
1610 ConvertedString.setNum(CurrentString.toLongLong(&OkConversion, 0), 8);
1613 ConvertedString.insert(0,
"0");
1620 ConvertedString.setNum(CurrentString.toULongLong(&OkConversion, 0), 16);
1622 ConvertedString.setNum(CurrentString.toLongLong(&OkConversion, 0), 16);
1625 ConvertedString.insert(0,
"0x");
1629 if (!OkConversion) {
1635 Format =
"HEX-DECIMAL";
1637 Format =
"OCT-DECIMAL";
1645 if (!ConvertedString.isEmpty()) {
1647 LineEdit->setText(ConvertedString);
1694 Combo->setFocusPolicy(Qt::ClickFocus);
1696 Combo->setEditable(
false);
1697 if (Combo->lineEdit() !=
nullptr) {
1698 Combo->lineEdit()->setReadOnly(
true);
1699 Combo->lineEdit()->hide();
1702 Combo->installEventFilter(
this);
1703 if (Combo->lineEdit() !=
nullptr) {
1704 Combo->lineEdit()->installEventFilter(
this);
1709 Combo->setEditable(
true);
1717 if (Data.isEmpty()) {
1721 int Index = Combo->findText(Data.value(0));
1724 Combo->setCurrentIndex(Index);
1725 Combo->setEditText(Data.value(0));
1733 Combo->addItems(Data);
1735 if (Combo->isEditable()) {
1736 QCompleter* Completer =
new QCompleter(Combo->model(), Combo);
1737 Completer->setCaseSensitivity(Qt::CaseInsensitive);
1738 Completer->setCompletionMode(QCompleter::PopupCompletion);
1739 Completer->setFilterMode(Qt::MatchContains);
1740 Combo->setCompleter(Completer);
1744 QVariant VarFromList(Data);
1746 if (AcceptNoMatch) {
1748 Combo->setValidator(TmpValidator);
1751 Combo->setValidator(TmpValidator);
1769 QStringList tmp{
"true",
"false" };
1772 QString rangename = virt.
p_range.c_str();
1773 QStringList range = rangename.split(
",");
1795 if (
dynamic_cast<QLineEdit*
>(Target) !=
nullptr) {
1796 std::cout <<
"cast to QLineEdit\n";
1798 if (Target == Combo && Combo->lineEdit() !=
nullptr) {
1799 if (Event->type() < 100) {
1801 if (Event->type() == QEvent::FocusOut) {
1802 if (Combo->lineEdit()->text().isEmpty()) {
1807 if (Event->type() == QEvent::FocusIn) {
1808 if (!Combo->lineEdit()->hasSelectedText()) {
1809 Combo->lineEdit()->selectAll();
1813 if (Event->type() == QEvent::KeyPress) {
1814 QKeyEvent* KeyEvent =
dynamic_cast<QKeyEvent*
>(Event);
1815 if (KeyEvent->key() == Qt::Key_Up || KeyEvent->key() == Qt::Key_Down) {
1823 if (Event->type() == QEvent::Wheel) {
1841 Combo, SIGNAL(editTextChanged(
const QString&)),
this, SLOT(
TryValidate(
const QString&)), Qt::UniqueConnection);
1842 connect(Combo, SIGNAL(activated(
const QString&)),
this, SLOT(
ChangeDetected(
const QString&)), Qt::UniqueConnection);
1849 Combo->lineEdit()->setPalette(QApplication::palette(
this));
1853 if (Combo->validator() !=
nullptr) {
1854 if (Combo->validator()->validate(tmp, index) == QValidator::Acceptable) {
1862 Combo->lineEdit()->setPalette(QApplication::palette(
this));
1866 else if (Combo->validator()->validate(tmp, index) == QValidator::Intermediate) {
1876 Combo->setPalette(QApplication::palette(
this));
1884 Q_UNUSED(StringChange)
1892 Q_UNUSED(DefaultIndex)
1934 setWindowTitle(QString(
"Edit Attribute : %1").arg(Virtue.
p_name.c_str()));
1935 QVBoxLayout* MainLayout =
new QVBoxLayout(
this);
1936 MainLayout->setSpacing(0);
1937 MainLayout->setMargin(0);
1938 MainLayout->setContentsMargins(0, 0, 0, 0);
1939 QHBoxLayout* ButtonLayout =
new QHBoxLayout();
1941 ListWidget->setContextMenuPolicy(Qt::CustomContextMenu);
1951 MainLayout->addWidget(Combo);
1952 connect(Combo->Combo,
1953 SIGNAL(activated(
const QString&)),
1956 Qt::UniqueConnection);
1958 Combo->setStyleSheet(
"QLineEdit { background: #c0c0c0;} "
1959 "QLineEdit:focus {background: white;}");
1976 MainLayout->addWidget(Numeric);
1978 connect(Numeric, SIGNAL(signal_value_duplicated()),
this, SLOT(
LineValueChanged()), Qt::UniqueConnection);
1984 Numeric->setStyleSheet(
"QLineEdit { background: #c0c0c0;} QLineEdit:focus {background: white;}");
1995 String->SetMultiCheck(
true);
1996 MainLayout->addWidget(String);
2000 String->GetLineEdit()->setReadOnly(
m_readonly);
2001 String->GetLineEdit()->setFrameStyle(QFrame::NoFrame);
2003 String->setStyleSheet(
"QLineEdit { background: #c0c0c0;} "
2004 "QLineEdit:focus {background: white;}");
2015 OkButton =
new QPushButton(tr(
"Apply"));
2024 MainLayout->addLayout(ButtonLayout);
2028 setLayout(MainLayout);
2041 QFontMetrics FontMetrics(Font);
2042 setMinimumWidth(2 * FontMetrics.horizontalAdvance(QString(
"Edit Relationship: %1").arg(Virtue.
p_name.c_str())) -
2044 setMinimumHeight(100);
2058 ListWidget->setSelectionMode(QAbstractItemView::ExtendedSelection);
2061 ListWidget->setEditTriggers(QAbstractItemView::DoubleClicked);
2062 ListWidget->setDragDropMode(QAbstractItemView::InternalMove);
2064 for (
int i = 0; i <
ListWidget->count(); ++i) {
2065 QListWidgetItem* widget =
ListWidget->item(i);
2066 widget->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEditable | Qt::ItemIsDragEnabled | Qt::ItemIsDropEnabled |
2080 QString(
"Attribute Name: %1 \n").arg(Virtue.
p_name.c_str()) +
2082 QString(
" Range: %1 \n").arg(Virtue.
p_range.c_str()) +
2086 QString(
" Default Value: %1 \n").arg(Virtue.
p_default_value.c_str()) +
2087 QString(
" Description: %1 \n").arg(Virtue.
p_description.c_str()));
2119 if (Data.isEmpty()) {
2127 StatusBar->showMessage(QString(
"Item %1 was added.").arg(Data));
2139 for (QListWidgetItem* widget :
widgets) {
2140 int index =
this_data.indexOf(widget->text());
2148 if (QListWidgetItem* w =
ListWidget->takeItem(r)) {
2154 StatusBar->showMessage(
"The selected items were removed.");
2177 StatusBar->showMessage(
"Attribute can not be null.");
2186 StatusBar->showMessage(
"Attribute is set.");
2187 ListWidget->setPalette(QApplication::palette(
this));
2214 QString newtext = changed->text();
2219 StatusBar->showMessage(QString(
"Item %1 was modified.").arg(oldtext));
2231 for (
int i = 0; i <
ListWidget->count(); ++i) {
2241 for (
int i = 0; i <
ListWidget->count(); ++i) {
ObjectEditor(QWidget *parent=nullptr)
static QPalette AlertStatusBarPallete
static QPalette LoadedDefault
static QPalette WarningStatusBarPallete
ValidatorAcceptMatch(QVariant &Storage, QObject *parent=0)
Including DBE.
ValidatorAcceptNoMatch(QVariant &Storage, QObject *parent=0)
static confaccessor & ref()
static bool derived(std::string const &fromclass, std::string const &aclass)
static std::vector< dbe::inner::configobject::tref > objects(std::string const &cname, bool const keep_inherited=true)
virtual ~editor_data_state()
editor_data_state(bool isvalid, bool isnotnull, bool isobligatory)
editor_data(T const &virtue)
static configobject::tref get(dbe::cokey const &desc)
inner::configobject::tref tref
config_object_description dref
int_format_t p_int_format
std::string p_description
std::string p_default_value
static const char * type2str(type_t type)
static const char * format2str(int_format_t format)
cardinality_t p_cardinality
static const char * card2str(cardinality_t cardinality)
std::string p_description