- bool const sync = (state == Qt::Checked);\r
- QString const label = sync ? qt_("&New") : qt_("&Apply");\r
- applyPB->setText(label);\r
- okPB->setEnabled(!sync && d->widget_->checkWidgets());\r
- restorePB->setEnabled(!sync);\r
- if (sync)\r
- connect(d->widget_, SIGNAL(changed()), this, SLOT(applyView()));\r
- else {\r
- applyPB->setEnabled(d->widget_->checkWidgets());\r
- d->widget_->setEnabled(!buffer().isReadonly());\r
- QObject::disconnect(d->widget_, SIGNAL(changed()), this, SLOT(applyView()));\r
- }\r
+ checkWidgets(state == Qt::Checked);\r
+}\r
+\r
+\r
+docstring InsetParamsDialog::checkWidgets(bool synchronized_view)\r
+{\r
+ bool const widget_ok = d->widget_->checkWidgets();\r
+ Inset const * ins = inset(d->widget_->insetCode());\r
+ docstring const argument = d->widget_->dialogToParams();\r
+ bool valid_argument = !argument.empty();\r
+ if (ins)\r
+ valid_argument &= ins->validateModifyArgument(argument);\r
+ FuncCode const code = synchronized_view\r
+ ? d->widget_->creationCode() : LFUN_INSET_MODIFY;\r
+ bool const lfun_ok = lyx::getStatus(FuncRequest(code, argument)).enabled();\r
+ bool const read_only = buffer().isReadonly();\r
+\r
+ okPB->setEnabled(!synchronized_view && widget_ok && !read_only && valid_argument);\r
+ restorePB->setEnabled(!synchronized_view && ins && !read_only);\r
+ applyPB->setEnabled(lfun_ok && widget_ok && !read_only && valid_argument);\r
+ d->widget_->setEnabled(!read_only);\r
+ return argument;\r
+}\r
+\r
+\r
+void InsetParamsDialog::onWidget_changed()\r
+{\r
+ docstring const argument = checkWidgets(synchronizedViewCB->isChecked());\r
+ if (synchronizedViewCB->isChecked())\r
+ dispatch(FuncRequest(LFUN_INSET_MODIFY, argument));\r