#include "InsetParamsDialog.h"\r
\r
#include "GuiBox.h"\r
+#include "GuiBranch.h"\r
+#include "GuiBibitem.h"\r
#include "GuiERT.h"\r
#include "GuiInfo.h"\r
+#include "GuiLine.h"\r
+#include "GuiHSpace.h"\r
+#include "GuiTabular.h"\r
#include "GuiVSpace.h"\r
#include "FloatPlacement.h"\r
\r
setInsetParamsWidget(widget);\r
synchronizedViewCB->setChecked(false);\r
on_synchronizedViewCB_stateChanged(false);\r
+ setFocusProxy(widget);\r
}\r
\r
InsetParamsDialog::~InsetParamsDialog()\r
}\r
\r
\r
+bool InsetParamsDialog::initialiseParams(std::string const &)\r
+{\r
+ on_restorePB_clicked();\r
+ return true;\r
+}\r
+\r
void InsetParamsDialog::setInsetParamsWidget(InsetParamsWidget * widget)\r
{\r
d->widget_ = widget;\r
stackedWidget->addWidget(widget);\r
stackedWidget->setCurrentWidget(widget);\r
+ connect(d->widget_, SIGNAL(changed()), this, SLOT(onWidget_changed()));\r
}\r
\r
\r
void InsetParamsDialog::on_restorePB_clicked()\r
{\r
- updateView();\r
+ updateView(true);\r
+ restorePB->setEnabled(false);\r
}\r
\r
\r
void InsetParamsDialog::on_okPB_clicked()\r
{\r
- applyView();\r
+ Inset const * i = inset(d->widget_->insetCode());\r
+ if (i)\r
+ applyView();\r
+ else\r
+ newInset();\r
hide();\r
}\r
\r
\r
+void InsetParamsDialog::newInset()\r
+{\r
+ docstring const argument = d->widget_->dialogToParams();\r
+ dispatch(FuncRequest(d->widget_->creationCode(), argument));\r
+}\r
+\r
+\r
+void InsetParamsDialog::on_newPB_clicked()\r
+{\r
+ newInset();\r
+}\r
+\r
+\r
void InsetParamsDialog::on_applyPB_clicked()\r
{\r
- if (synchronizedViewCB->isChecked()) {\r
- docstring const argument = d->widget_->dialogToParams();\r
- dispatch(FuncRequest(d->widget_->creationCode(), argument));\r
- } else {\r
- applyView();\r
- }\r
+ applyView();\r
}\r
\r
\r
\r
void InsetParamsDialog::on_synchronizedViewCB_stateChanged(int state)\r
{\r
- bool const sync = (state == Qt::Checked);\r
- QString const label = sync ? qt_("&New") : qt_("&Apply");\r
- applyPB->setText(label);\r
- okPB->setEnabled(!sync);\r
- restorePB->setEnabled(!sync);\r
- if (sync)\r
- connect(d->widget_, SIGNAL(changed()), this, SLOT(applyView()));\r
- else\r
- QObject::disconnect(d->widget_, SIGNAL(changed()), this, SLOT(applyView()));\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
}\r
\r
\r
void InsetParamsDialog::applyView()\r
{\r
- if (!d->widget_->checkWidgets())\r
- return;\r
+ docstring const argument = checkWidgets(synchronizedViewCB->isChecked());\r
+ dispatch(FuncRequest(LFUN_INSET_MODIFY, argument));\r
+}\r
\r
- Inset const * i = inset(d->widget_->insetCode());\r
- if (!i)\r
- return;\r
- \r
- docstring const argument = d->widget_->dialogToParams();\r
\r
- if (argument.empty() || !i->validateModifyArgument(argument)) {\r
- //FIXME: newPB is not accessible\r
- //newPB->setEnabled(false);\r
- return;\r
+void InsetParamsDialog::updateView(bool update_widget)\r
+{\r
+ if (update_widget) {\r
+ Inset const * i = inset(d->widget_->insetCode());\r
+ if (i) {\r
+ d->widget_->blockSignals(true);\r
+ d->widget_->paramsToDialog(i);\r
+ d->widget_->blockSignals(false);\r
+ }\r
}\r
- //FIXME: newPB is not accessible\r
- //newPB->setEnabled(true);\r
- dispatch(FuncRequest(LFUN_INSET_MODIFY, argument));\r
+ checkWidgets(synchronizedViewCB->isChecked());\r
}\r
\r
\r
void InsetParamsDialog::updateView()\r
{\r
- Inset const * i = inset(d->widget_->insetCode());\r
- if (i)\r
- d->widget_->paramsToDialog(i);\r
- else\r
- d->widget_->setEnabled(false);\r
-\r
- docstring const argument = d->widget_->dialogToParams();\r
- FuncCode const code = synchronizedViewCB->isChecked()\r
- ? d->widget_->creationCode() : LFUN_INSET_MODIFY;\r
- applyPB->setEnabled(\r
- lyx::getStatus(FuncRequest(code, argument)).enabled());\r
+ updateView(synchronizedViewCB->isChecked());\r
}\r
\r
\r
case FLOAT_CODE:\r
widget = new FloatPlacement(true);\r
break;\r
+ case BIBITEM_CODE:\r
+ widget = new GuiBibitem;\r
+ break;\r
+ case BRANCH_CODE:\r
+ widget = new GuiBranch;\r
+ break;\r
case BOX_CODE:\r
widget = new GuiBox;\r
break;\r
case INFO_CODE:\r
widget = new GuiInfo;\r
break;\r
+ case LINE_CODE:\r
+ widget = new GuiLine;\r
+ break;\r
+ case MATH_SPACE_CODE:\r
+ widget = new GuiHSpace(true);\r
+ break;\r
+ case SPACE_CODE:\r
+ widget = new GuiHSpace(false);\r
+ break;\r
+ case TABULAR_CODE:\r
+ widget = new GuiTabular;\r
+ break;\r
case VSPACE_CODE:\r
widget = new GuiVSpace;\r
break;\r