1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126
|
#include "universalinputdialog.h"
#include "qdialogbuttonbox.h"
#include "smallUsefulFunctions.h"
UniversalInputDialog::UniversalInputDialog(QWidget *parent): QDialog(parent)
{
setWindowTitle(TEXSTUDIO);
gridLayout = new QGridLayout();
}
void UniversalInputDialog::myAccept()
{
for (int i = 0; i < properties.size(); i++)
properties[i].readFromObject((QWidget *)properties[i].widgetOffset);
accept();
}
void UniversalInputDialog::addWidget(QWidget *widget, const QString &description, const ManagedProperty &prop)
{
Q_ASSERT(prop.storage);
properties << prop;
properties.last().widgetOffset = (ptrdiff_t)widget;
prop.writeToObject(widget);
widget->setSizePolicy(QSizePolicy::MinimumExpanding, widget->sizePolicy().verticalPolicy());
QLabel *descWidget = new QLabel(description, this);
descWidget->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred);
if (description.length() < 32) {
gridLayout->addWidget(descWidget, gridLayout->rowCount(), 0, 0);
gridLayout->addWidget(widget, gridLayout->rowCount() - 1, 1, 0);
} else {
gridLayout->addWidget(descWidget, gridLayout->rowCount(), 0, 1, 2, 0 );
gridLayout->addWidget(widget, gridLayout->rowCount(), 0, 1, 2, 0);
}
}
QCheckBox *UniversalInputDialog::addCheckBox(const ManagedProperty &mp, const QString &description)
{
QCheckBox *checkBox = new QCheckBox(this);
checkBox->setText(description);
properties << mp;
mp.writeToObject(checkBox);
properties.last().widgetOffset = (ptrdiff_t)checkBox;
gridLayout->addWidget(checkBox, gridLayout->rowCount(), 1, 0);
return checkBox;
}
QComboBox *UniversalInputDialog::addComboBox(const ManagedProperty &mp, const QString &description)
{
QComboBox *cmb = new QComboBox(this);
addWidget(cmb, description, mp);
return cmb;
}
QSpinBox *UniversalInputDialog::addSpinBox(const ManagedProperty &mp, const QString &description)
{
QSpinBox *spinBox = new QSpinBox(this);
spinBox->setMaximum(10000000);
addWidget(spinBox, description, mp);
return spinBox;
}
QDoubleSpinBox *UniversalInputDialog::addDoubleSpinBox(const ManagedProperty &mp, const QString &description)
{
QDoubleSpinBox *spinBox = new QDoubleSpinBox(this);
spinBox->setMinimum(-10000000);
spinBox->setMaximum(10000000);
addWidget(spinBox, description, mp);
return spinBox;
}
QLineEdit *UniversalInputDialog::addLineEdit(const ManagedProperty &mp, const QString &description)
{
QLineEdit *edit = new QLineEdit(this);
addWidget(edit, description, mp);
return edit;
}
QTextEdit *UniversalInputDialog::addTextEdit(const ManagedProperty &mp, const QString &description)
{
QTextEdit *edit = new QTextEdit(this);
addWidget(edit, description, mp);
return edit;
}
QCheckBox *UniversalInputDialog::addVariable(bool *var, const QString &description)
{
return addCheckBox(ManagedProperty(var), description);
}
QSpinBox *UniversalInputDialog::addVariable(int *var, const QString &description)
{
return addSpinBox(ManagedProperty(var), description);
}
QLineEdit *UniversalInputDialog::addVariable(QString *var, const QString &description)
{
return addLineEdit(ManagedProperty(var), description);
}
QComboBox *UniversalInputDialog::addVariable(QStringList *var, const QString &description)
{
return addComboBox(ManagedProperty(var), description);
}
QTextEdit *UniversalInputDialog::addTextEdit(QString *var, const QString &description)
{
return addTextEdit(ManagedProperty(var), description);
}
QDoubleSpinBox *UniversalInputDialog::addVariable(float *var, const QString &description)
{
return addDoubleSpinBox(ManagedProperty(var), description);
}
void UniversalInputDialog::showEvent(QShowEvent *event)
{
QDialog::showEvent(event);
if (event->spontaneous()) return;
QDialogButtonBox *box = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, Qt::Horizontal, this);
box->button(QDialogButtonBox::Ok)->setDefault(true);
connect(box, SIGNAL(accepted()), this, SLOT(myAccept()));
connect(box, SIGNAL(rejected()), this, SLOT(reject()));
gridLayout->addWidget(box, gridLayout->rowCount(), 0, 1, 2, 0);
setLayout(gridLayout);
}
|