]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/InsetParamsDialog.cpp
Whitespace.
[lyx.git] / src / frontends / qt4 / InsetParamsDialog.cpp
index ddd2d349299750d5ee8de6415ab073ee2b74f26e..e6ee1d09ec8a19c339e5b715b52ff7550f9292ef 100644 (file)
 #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
@@ -66,6 +70,7 @@ InsetParamsDialog::InsetParamsDialog(GuiView & lv, InsetParamsWidget * widget)
        setInsetParamsWidget(widget);\r
        synchronizedViewCB->setChecked(false);\r
        on_synchronizedViewCB_stateChanged(false);\r
+       setFocusProxy(widget);\r
 }\r
 \r
 InsetParamsDialog::~InsetParamsDialog()\r
@@ -74,17 +79,25 @@ InsetParamsDialog::~InsetParamsDialog()
 }\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
@@ -106,12 +119,15 @@ void InsetParamsDialog::newInset()
 }\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
-               newInset();\r
-       else\r
-               applyView();\r
+       applyView();\r
 }\r
 \r
 \r
@@ -123,54 +139,63 @@ void InsetParamsDialog::on_closePB_clicked()
 \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 && 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
 }\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
-               applyPB->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
-       applyPB->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
@@ -184,18 +209,30 @@ Dialog * createDialog(GuiView & lv, InsetCode code)
        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
-       //FIXME: not ready yet.\r
-       /*\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
-       */\r
        case VSPACE_CODE:\r
                widget = new GuiVSpace;\r
                break;\r