some moreInsetParamsDialog bug fixing...

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@33485 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Abdelrazak Younes 2010-02-16 10:50:06 +00:00
parent c775690b58
commit 3a26a8d9d7
2 changed files with 40 additions and 32 deletions

View File

@ -79,6 +79,7 @@ void InsetParamsDialog::setInsetParamsWidget(InsetParamsWidget * widget)
d->widget_ = widget; d->widget_ = widget;
stackedWidget->addWidget(widget); stackedWidget->addWidget(widget);
stackedWidget->setCurrentWidget(widget); stackedWidget->setCurrentWidget(widget);
connect(d->widget_, SIGNAL(changed()), this, SLOT(onWidget_changed()));
} }
@ -126,34 +127,42 @@ void InsetParamsDialog::on_synchronizedViewCB_stateChanged(int state)
bool const sync = (state == Qt::Checked); bool const sync = (state == Qt::Checked);
QString const label = sync ? qt_("&New") : qt_("&Apply"); QString const label = sync ? qt_("&New") : qt_("&Apply");
applyPB->setText(label); applyPB->setText(label);
okPB->setEnabled(!sync && d->widget_->checkWidgets()); checkWidgets(sync);
restorePB->setEnabled(!sync); }
if (sync)
connect(d->widget_, SIGNAL(changed()), this, SLOT(applyView()));
else { docstring InsetParamsDialog::checkWidgets(bool synchronized_view)
applyPB->setEnabled(d->widget_->checkWidgets()); {
d->widget_->setEnabled(!buffer().isReadonly()); bool const widget_ok = d->widget_->checkWidgets();
QObject::disconnect(d->widget_, SIGNAL(changed()), this, SLOT(applyView())); Inset const * ins = inset(d->widget_->insetCode());
} docstring const argument = d->widget_->dialogToParams();
bool valid_argument = !argument.empty();
if (ins)
valid_argument &= ins->validateModifyArgument(argument);
FuncCode const code = synchronized_view
? d->widget_->creationCode() : LFUN_INSET_MODIFY;
bool const lfun_ok = lyx::getStatus(FuncRequest(code, argument)).enabled();
bool const read_only = buffer().isReadonly();
okPB->setEnabled(!synchronized_view && widget_ok && !read_only && valid_argument);
restorePB->setEnabled(!synchronized_view && ins && !read_only);
applyPB->setEnabled(lfun_ok && widget_ok && !read_only && valid_argument);
d->widget_->setEnabled(!read_only);
return argument;
}
void InsetParamsDialog::onWidget_changed()
{
docstring const argument = checkWidgets(synchronizedViewCB->isChecked());
if (synchronizedViewCB->isChecked())
dispatch(FuncRequest(LFUN_INSET_MODIFY, argument));
} }
void InsetParamsDialog::applyView() void InsetParamsDialog::applyView()
{ {
if (!d->widget_->checkWidgets()) docstring const argument = checkWidgets(synchronizedViewCB->isChecked());
return;
Inset const * i = inset(d->widget_->insetCode());
if (!i)
return;
docstring const argument = d->widget_->dialogToParams();
if (argument.empty() || !i->validateModifyArgument(argument)) {
applyPB->setEnabled(false);
return;
}
applyPB->setEnabled(true);
dispatch(FuncRequest(LFUN_INSET_MODIFY, argument)); dispatch(FuncRequest(LFUN_INSET_MODIFY, argument));
} }
@ -161,16 +170,12 @@ void InsetParamsDialog::applyView()
void InsetParamsDialog::updateView() void InsetParamsDialog::updateView()
{ {
Inset const * i = inset(d->widget_->insetCode()); Inset const * i = inset(d->widget_->insetCode());
if (i) if (i) {
d->widget_->blockSignals(true);
d->widget_->paramsToDialog(i); d->widget_->paramsToDialog(i);
else d->widget_->blockSignals(false);
d->widget_->setEnabled(false); }
checkWidgets(synchronizedViewCB->isChecked());
docstring const argument = d->widget_->dialogToParams();
FuncCode const code = synchronizedViewCB->isChecked()
? d->widget_->creationCode() : LFUN_INSET_MODIFY;
applyPB->setEnabled(
lyx::getStatus(FuncRequest(code, argument)).enabled());
} }

View File

@ -36,6 +36,7 @@ public:
void setInsetParamsWidget(InsetParamsWidget * widget); void setInsetParamsWidget(InsetParamsWidget * widget);
protected Q_SLOTS: protected Q_SLOTS:
void onWidget_changed();
void applyView(); void applyView();
void on_restorePB_clicked(); void on_restorePB_clicked();
void on_okPB_clicked(); void on_okPB_clicked();
@ -53,6 +54,8 @@ private:
//@} //@}
/// ///
void newInset(); void newInset();
///
docstring checkWidgets(bool synchronized_view);
/// pimpl /// pimpl
struct Private; struct Private;
Private * d; Private * d;