]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/InsetParamsDialog.cpp
Move the buffer related part from GuiView::renameBuffer to Buffer::saveAs.
[lyx.git] / src / frontends / qt4 / InsetParamsDialog.cpp
index e6ee1d09ec8a19c339e5b715b52ff7550f9292ef..698cf899bf77711e294e4340807255a9436018e0 100644 (file)
 #include "GuiBranch.h"\r
 #include "GuiBibitem.h"\r
 #include "GuiERT.h"\r
+#include "GuiHSpace.h"\r
+#include "GuiHyperlink.h"\r
 #include "GuiInfo.h"\r
+#include "GuiLabel.h"\r
 #include "GuiLine.h"\r
-#include "GuiHSpace.h"\r
+#include "GuiNomenclature.h"\r
+#include "GuiPrintNomencl.h"\r
 #include "GuiTabular.h"\r
 #include "GuiVSpace.h"\r
 #include "FloatPlacement.h"\r
@@ -52,8 +56,14 @@ namespace frontend {
 \r
 struct InsetParamsDialog::Private\r
 {\r
+       Private() : widget_(0), inset_(0), changed_(false) {}\r
        ///\r
        InsetParamsWidget * widget_;\r
+       /// The inset that was used at last Restore or Apply operation.\r
+       Inset const * inset_;\r
+       /// Set to true whenever the dialog is changed and set back to\r
+       /// false when the dialog is applied or restored.\r
+       bool changed_;\r
 };\r
 \r
 /////////////////////////////////////////////////////////////////\r
@@ -79,12 +89,14 @@ InsetParamsDialog::~InsetParamsDialog()
 }\r
 \r
 \r
-bool InsetParamsDialog::initialiseParams(std::string const &)\r
+bool InsetParamsDialog::initialiseParams(std::string const & data)\r
 {\r
-       on_restorePB_clicked();\r
+       if (!d->widget_->initialiseParams(data))\r
+               on_restorePB_clicked();\r
        return true;\r
 }\r
 \r
+\r
 void InsetParamsDialog::setInsetParamsWidget(InsetParamsWidget * widget)\r
 {\r
        d->widget_ = widget;\r
@@ -98,6 +110,8 @@ void InsetParamsDialog::on_restorePB_clicked()
 {\r
        updateView(true);\r
        restorePB->setEnabled(false);\r
+       d->changed_ = false;\r
+       d->inset_ = inset(d->widget_->insetCode());\r
 }\r
 \r
 \r
@@ -157,7 +171,9 @@ docstring InsetParamsDialog::checkWidgets(bool synchronized_view)
        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
+       bool const can_be_restored = !synchronized_view && !read_only\r
+                       && ins && (ins != d->inset_ || d->changed_);\r
+       restorePB->setEnabled(can_be_restored);\r
        applyPB->setEnabled(lfun_ok && widget_ok && !read_only && valid_argument);\r
        d->widget_->setEnabled(!read_only);\r
        return argument;\r
@@ -166,6 +182,7 @@ docstring InsetParamsDialog::checkWidgets(bool synchronized_view)
 \r
 void InsetParamsDialog::onWidget_changed()\r
 {\r
+       d->changed_ = true;\r
        docstring const argument = checkWidgets(synchronizedViewCB->isChecked());\r
        if (synchronizedViewCB->isChecked())\r
                dispatch(FuncRequest(LFUN_INSET_MODIFY, argument));\r
@@ -176,6 +193,9 @@ void InsetParamsDialog::applyView()
 {\r
        docstring const argument = checkWidgets(synchronizedViewCB->isChecked());\r
        dispatch(FuncRequest(LFUN_INSET_MODIFY, argument));\r
+       d->changed_ = false;\r
+       d->inset_ = inset(d->widget_->insetCode());\r
+       updateView(true);\r
 }\r
 \r
 \r
@@ -218,15 +238,27 @@ Dialog * createDialog(GuiView & lv, InsetCode code)
        case BOX_CODE:\r
                widget = new GuiBox;\r
                break;\r
+       case HYPERLINK_CODE:\r
+               widget = new GuiHyperlink;\r
+               break;\r
        case INFO_CODE:\r
                widget = new GuiInfo;\r
                break;\r
+       case LABEL_CODE:\r
+               widget = new GuiLabel;\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 NOMENCL_CODE:\r
+               widget = new GuiNomenclature;\r
+               break;\r
+       case NOMENCL_PRINT_CODE:\r
+               widget = new GuiPrintNomencl;\r
+               break;\r
        case SPACE_CODE:\r
                widget = new GuiHSpace(false);\r
                break;\r