git-svn-id: svn://db.shs.com.ru/libs@399 a8b55f48-bf90-11e4-a774-851b48703e85
This commit is contained in:
@@ -48,7 +48,9 @@ void KDockWidget::addK(const CDType & t, CDDirectKTypeDialog::TypeInfo ti) {
|
||||
if (k_list.contains(xp)) return;
|
||||
k_list << xp;
|
||||
info_list << ti;
|
||||
//piCout << "add" << xp;
|
||||
QWidget * ve = ti.create();
|
||||
//qDebug() << "add" << ve;
|
||||
lay->addRow(PI2QString(t.pathString().join(".")) + ":", ve);
|
||||
QCDCore::instance()->bindWidget(ve, t);
|
||||
//ve->setValue();
|
||||
@@ -94,7 +96,9 @@ void KDockWidget::clear() {
|
||||
|
||||
|
||||
void KDockWidget::changedGlobal() {
|
||||
piCout << "changedGlobal ..." << k_list.size_s() << info_list.size() << lay->count() << lay->rowCount();
|
||||
for (int i = 0; i < k_list.size_s(); ++i) {
|
||||
piCout << "update" << i << "0";
|
||||
if (!K.exists(k_list[i])) {
|
||||
k_list.remove(i);
|
||||
info_list.remove(i);
|
||||
@@ -102,9 +106,13 @@ void KDockWidget::changedGlobal() {
|
||||
--i;
|
||||
continue;
|
||||
}
|
||||
piCout << "update" << i << "1";
|
||||
QLabel * lbl = qobject_cast<QLabel*>(lay->itemAt(i, QFormLayout::LabelRole)->widget());
|
||||
piCout << "update" << i << "2";
|
||||
if (lbl) lbl->setText(PI2QString(K[k_list[i]].pathString().join(".")) + ":");
|
||||
piCout << "update" << i << "3";
|
||||
}
|
||||
piCout << "changedGlobal ok";
|
||||
}
|
||||
|
||||
|
||||
@@ -131,6 +139,8 @@ bool KDockWidget::eventFilter(QObject * o, QEvent * e) {
|
||||
if (k.type().left(1) == "n" || k.type().left(1) == "f") {
|
||||
if (type_dialog->exec() == QDialog::Accepted)
|
||||
ti = type_dialog->getType();
|
||||
else
|
||||
return true;
|
||||
}
|
||||
addK(k, ti);
|
||||
de->accept();
|
||||
@@ -165,10 +175,17 @@ void KDockWidget::contextMenuEvent(QContextMenuEvent * e) {
|
||||
|
||||
void KDockWidget::removeRow(int r) {
|
||||
if (r < 0 || r >= lay->rowCount()) return;
|
||||
QLayoutItem * i = lay->takeAt(r+r);
|
||||
if (i) {delete i->widget(); delete i;}
|
||||
i = lay->takeAt(r+r);
|
||||
if (i) {delete i->widget(); delete i;}
|
||||
#if QT_VERSION >= 0x050800
|
||||
QFormLayout::TakeRowResult rr = lay->takeRow(r);
|
||||
if (rr.fieldItem) {delete rr.fieldItem->widget(); delete rr.fieldItem;}
|
||||
if (rr.labelItem) {delete rr.labelItem->widget(); delete rr.labelItem;}
|
||||
#else
|
||||
piForTimes (2) {
|
||||
QLayoutItem * i = lay->itemAt(r+r);
|
||||
lay->removeItem(i);
|
||||
if (i) {delete i->widget(); delete i;}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -151,6 +151,7 @@ bool QCDCore::bindWidget(QWidget * w) {
|
||||
|
||||
bool QCDCore::bindWidget(QWidget * w, const CDType & k) {
|
||||
if (!w) return false;
|
||||
//piCout << "bind..." << k.name() << k.path();
|
||||
QString cn = w->metaObject()->className();
|
||||
bool ok = false;
|
||||
if (cn == "QCheckBox" || cn == "QGroupBox") {
|
||||
@@ -179,7 +180,7 @@ bool QCDCore::bindWidget(QWidget * w, const CDType & k) {
|
||||
connect(w, SIGNAL(destroyed(QObject*)), this, SLOT(slotDestroyed(QObject*)), Qt::UniqueConnection);
|
||||
setWidgetValue(w, k);
|
||||
if (!ok) return false;
|
||||
//piCout << k.name() << k.path();
|
||||
//piCout << k.name() << k.path() << "ok";
|
||||
binded_widgets.insert(w, k.path());
|
||||
return true;
|
||||
}
|
||||
@@ -252,6 +253,7 @@ int QCDCore::unbindWidgets(QList<QWidget * > wl) {
|
||||
|
||||
bool QCDCore::unbindWidget(QWidget * w) {
|
||||
if (!w) return false;
|
||||
//qDebug() << "unbind" << w;
|
||||
if (!binded_widgets.contains(w)) return false;
|
||||
QString cn = w->metaObject()->className();
|
||||
if (cn == "QCheckBox" || cn == "QGroupBox")
|
||||
@@ -264,13 +266,16 @@ bool QCDCore::unbindWidget(QWidget * w) {
|
||||
disconnect(w, SIGNAL(textChanged(QString)), this, SLOT(slotText(QString)));
|
||||
if (cn == "QVariantEdit")
|
||||
disconnect(w, SIGNAL(valueChanged(QVariant)), this, SLOT(slotVariant(QVariant)));
|
||||
//qDebug() << "remove b" << binded_widgets.size();
|
||||
binded_widgets.remove(w);
|
||||
//qDebug() << "remove a" << binded_widgets.size();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
void QCDCore::unbindAllWidgets() {
|
||||
QMapIterator<QWidget * , PIDeque<int> > it(binded_widgets);
|
||||
QMap<QWidget * , PIDeque<int> > bwm = binded_widgets;
|
||||
QMapIterator<QWidget * , PIDeque<int> > it(bwm);
|
||||
while (it.hasNext()) {
|
||||
QWidget * w = it.next().key();
|
||||
unbindWidget(w);
|
||||
|
||||
Reference in New Issue
Block a user