]> git.lyx.org Git - features.git/commitdiff
Improve read-only mode of InsetParams derived dialogs
authorJuergen Spitzmueller <spitz@lyx.org>
Mon, 30 Mar 2015 12:44:11 +0000 (14:44 +0200)
committerJuergen Spitzmueller <spitz@lyx.org>
Mon, 30 Mar 2015 12:44:11 +0000 (14:44 +0200)
* Disable "New Inset" button
* Do not disable line edits, but use setReadOnly instead (this allows copying contents)

Fixes: #9408
Note that some dialogs still need some care.

17 files changed:
src/frontends/qt4/GuiBibitem.cpp
src/frontends/qt4/GuiBibitem.h
src/frontends/qt4/GuiHSpace.cpp
src/frontends/qt4/GuiHSpace.h
src/frontends/qt4/GuiHyperlink.cpp
src/frontends/qt4/GuiHyperlink.h
src/frontends/qt4/GuiLabel.cpp
src/frontends/qt4/GuiLabel.h
src/frontends/qt4/GuiLine.cpp
src/frontends/qt4/GuiLine.h
src/frontends/qt4/GuiNomenclature.cpp
src/frontends/qt4/GuiNomenclature.h
src/frontends/qt4/GuiPrintNomencl.cpp
src/frontends/qt4/GuiPrintNomencl.h
src/frontends/qt4/InsetParamsDialog.cpp
src/frontends/qt4/InsetParamsWidget.cpp
src/frontends/qt4/InsetParamsWidget.h

index 0b2da16cce5ea35d4447962380e37c82ddbf3341..052be00f36d88196de0ba6928717442a174dc70d 100644 (file)
@@ -53,8 +53,10 @@ docstring GuiBibitem::dialogToParams() const
 }
 
 
-bool GuiBibitem::checkWidgets() const
+bool GuiBibitem::checkWidgets(bool readonly) const
 {
+       keyED->setReadOnly(readonly);
+       labelED->setReadOnly(readonly);
        if (!InsetParamsWidget::checkWidgets())
                return false;
        return !keyED->text().isEmpty();
index a64ba72e88cb29f169015b33414dbff113798a03..70dcb2aff40825e17d29c71a019d3a29a4442c47 100644 (file)
@@ -35,7 +35,7 @@ private:
        FuncCode creationCode() const { return LFUN_INSET_INSERT; }
        void paramsToDialog(Inset const *);
        docstring dialogToParams() const;
-       bool checkWidgets() const;
+       bool checkWidgets(bool readonly = false) const;
        //@}
 };
 
index 57d4e982e0b9647a0fb07a718c257b7fe5f1bf95..a85037a1813705cf41147831b68339832b521625 100644 (file)
@@ -299,8 +299,13 @@ docstring GuiHSpace::dialogToParams() const
 }
 
 
-bool GuiHSpace::checkWidgets() const
+bool GuiHSpace::checkWidgets(bool readonly) const
 {
+       spacingCO->setEnabled(!readonly);
+       unitCO->setEnabled(!readonly);
+       fillPatternCO->setEnabled(!readonly);
+       keepCB->setEnabled(!readonly);
+       valueLE->setReadOnly(readonly);
        if (!InsetParamsWidget::checkWidgets())
                return false;
        return spacingCO->itemData(spacingCO->currentIndex()).toString() != "custom"
index 6bc45ccc6f86225651c3e6370f9182f160426e2e..0913475cf61a7f99a9bb2ce1c513c0bf4a9224f6 100644 (file)
@@ -38,7 +38,7 @@ private:
        FuncCode creationCode() const { return LFUN_INSET_INSERT; }
        void paramsToDialog(Inset const *);
        docstring dialogToParams() const;
-       bool checkWidgets() const;
+       bool checkWidgets(bool readonly = false) const;
        //@}
        ///
        bool const math_mode_;
index 6cd9262798a0d092dfbf738edc150274344db55d..3111d193c46cbe3957c0706e09328d7fee9d9bb2 100644 (file)
@@ -102,8 +102,11 @@ docstring GuiHyperlink::dialogToParams() const
 }
 
 
-bool GuiHyperlink::checkWidgets() const
+bool GuiHyperlink::checkWidgets(bool readonly) const
 {
+       targetED->setReadOnly(readonly);
+       nameED->setReadOnly(readonly);
+       typeGB->setEnabled(!readonly);
        if (!InsetParamsWidget::checkWidgets())
                return false;
        return !targetED->text().isEmpty() || !nameED->text().isEmpty();
index d2dd0ee0fb57a37bc8b4816341f2b4e8de9d04be..0523aaa8dbdc8fb47845857c01de37af42e1bfb8 100644 (file)
@@ -34,7 +34,7 @@ private:
        FuncCode creationCode() const { return LFUN_INSET_INSERT; }
        void paramsToDialog(Inset const *);
        docstring dialogToParams() const;
-       bool checkWidgets() const;
+       bool checkWidgets(bool readonly = false) const;
        bool initialiseParams(std::string const & data);
        //@}
 };
index 5d1ea4a3ef6aaa62efc09a43219a9e0954f67eda..d5b207f7738ce426aa8b7f19e6c6d341b7b4d27b 100644 (file)
@@ -68,8 +68,9 @@ bool GuiLabel::initialiseParams(std::string const & data)
 }
 
 
-bool GuiLabel::checkWidgets() const
+bool GuiLabel::checkWidgets(bool readonly) const
 {
+       keywordED->setReadOnly(readonly);
        if (!InsetParamsWidget::checkWidgets())
                return false;
        return !keywordED->text().isEmpty();
index d616cbf1f5c5228f3a47026e3d70061f21209e31..6ba60ed216cec7876bb2b97d70983d06a97a4f7b 100644 (file)
@@ -34,7 +34,7 @@ private:
        FuncCode creationCode() const { return LFUN_INSET_INSERT; }
        void paramsToDialog(Inset const *);
        docstring dialogToParams() const;
-       bool checkWidgets() const;
+       bool checkWidgets(bool readonly = false) const;
        bool initialiseParams(std::string const &);
        //@}
 };
index 4ab2da8c942291efe06d70afa43e01b19475121d..2a8b9de2bc16429900fdb3d98c6da4af9c8037f0 100644 (file)
@@ -100,8 +100,14 @@ void GuiLine::paramsToDialog(Inset const * inset)
 }
 
 
-bool GuiLine::checkWidgets() const
+bool GuiLine::checkWidgets(bool readonly) const
 {
+       WidthLE->setReadOnly(readonly);
+       HeightLE->setReadOnly(readonly);
+       OffsetLE->setReadOnly(readonly);
+       OffsetUnitCO->setEnabled(!readonly);
+       HeightUnitCO->setEnabled(!readonly);
+       WidthUnitCO->setEnabled(!readonly);
        if (!InsetParamsWidget::checkWidgets())
                return false;
        // FIXME: this should be handled in unsignedGlueLengthValidator!
index 0ad68337f0ccbf3755cc13496db87a7084fbf1d5..9fa3e61146f93bd5c2aa1495806d5b71b98380fd 100644 (file)
@@ -33,7 +33,7 @@ private:
        FuncCode creationCode() const { return LFUN_INSET_INSERT; }
        void paramsToDialog(Inset const *);
        docstring dialogToParams() const;
-       bool checkWidgets() const;
+       bool checkWidgets(bool readonly = false) const;
        //@}
 };
 
index 7415f7f3dff3f21c446a3ddc4adb4f9cb2cb3ea1..0a52bd1403b8bfff3566672e9857289698d0b4b7 100644 (file)
@@ -70,8 +70,10 @@ bool GuiNomenclature::initialiseParams(std::string const & data)
 }
 
 
-bool GuiNomenclature::checkWidgets() const
+bool GuiNomenclature::checkWidgets(bool readonly) const
 {
+       symbolED->setReadOnly(readonly);
+       descriptionTE->setReadOnly(readonly);
        if (!InsetParamsWidget::checkWidgets())
                return false;
        QString const description = descriptionTE->toPlainText();
index dcdd10fab32506e90cf2d7b6dc81372d1e412312..9ec016f8742404e72ed105d382162ed9ba9e2448 100644 (file)
@@ -35,7 +35,7 @@ private:
        FuncCode creationCode() const { return LFUN_INSET_INSERT; }
        void paramsToDialog(Inset const *);
        docstring dialogToParams() const;
-       bool checkWidgets() const;
+       bool checkWidgets(bool readonly = false) const;
        bool initialiseParams(std::string const &);
        //@}
 };
index 1e41e3e93b1e508b467e14dc6f033640c947320d..93e00e9b4c735222f42a854db97372118164d550 100644 (file)
@@ -101,8 +101,11 @@ docstring GuiPrintNomencl::dialogToParams() const
 }
 
 
-bool GuiPrintNomencl::checkWidgets() const
+bool GuiPrintNomencl::checkWidgets(bool readonly) const
 {
+       valueLE->setReadOnly(readonly);
+       setWidthCO->setEnabled(!readonly);
+       unitLC->setEnabled(!readonly);
        if (!InsetParamsWidget::checkWidgets())
                return false;
        return setWidthCO->itemData(
index 8005f1d506476f141374dd6369d6d04b06897c3f..85897385c98c85025bd34bac5cd4b2094da5ae6f 100644 (file)
@@ -40,7 +40,7 @@ private:
        void paramsToDialog(Inset const *);
        void paramsToDialog(InsetCommandParams const &);
        docstring dialogToParams() const;
-       bool checkWidgets() const;
+       bool checkWidgets(bool readonly = false) const;
        //@}
 };
 
index f76427d68d7c56d810d00fe4763d133305e12f8b..9777d5951f6c92c2dd5f3251064a07a77fb1a2f8 100644 (file)
@@ -166,7 +166,8 @@ void InsetParamsDialog::on_synchronizedCB_stateChanged(int)
 
 docstring InsetParamsDialog::checkWidgets(bool immediate)
 {
-       bool const widget_ok = d->widget_->checkWidgets();
+       bool const read_only = buffer().isReadonly();
+       bool const widget_ok = d->widget_->checkWidgets(read_only);
        Inset const * ins = inset(d->widget_->insetCode());
        docstring const argument = d->widget_->dialogToParams();
        bool valid_argument = !argument.empty();
@@ -175,14 +176,13 @@ docstring InsetParamsDialog::checkWidgets(bool immediate)
        FuncCode const code = immediate
                ? d->widget_->creationCode() : LFUN_INSET_MODIFY;
        bool const lfun_ok = lyx::getStatus(FuncRequest(code, argument)).enabled();
-       bool const read_only = buffer().isReadonly();
 
        okPB->setEnabled(!immediate && widget_ok && !read_only && valid_argument);
        bool const can_be_restored = !immediate && !read_only
                        && ins && (ins != d->inset_ || d->changed_);
        restorePB->setEnabled(can_be_restored);
        applyPB->setEnabled(!immediate && lfun_ok && widget_ok && !read_only && valid_argument);
-       d->widget_->setEnabled(!read_only);
+       newPB->setEnabled(widget_ok && !read_only && valid_argument);
        synchronizedCB->setEnabled(!immediate);
        return argument;
 }
index 96d39ab37dbd7ef967fff31bf4c5659cd628ace9..91e2e7b595c007427b35fd1a42358b082c68a2b3 100644 (file)
@@ -54,7 +54,7 @@ void InsetParamsWidget::addCheckedWidget(QLineEdit * input, QWidget * label)
 }
 
 
-bool InsetParamsWidget::checkWidgets() const
+bool InsetParamsWidget::checkWidgets(bool readonly) const
 {
        bool valid = true;
        Q_FOREACH(CheckedWidget const & le, checked_widgets_)
index 00286c9b217f17136e8af534c63a5af26fe054a7..a5316454d2ec3b291ed2cf1c2c138a9a49993c86 100644 (file)
@@ -70,7 +70,7 @@ public:
                { return false; }
 
        /// \return true if all CheckedWidgets are in a valid state.
-       virtual bool checkWidgets() const;
+       virtual bool checkWidgets(bool readonly = false) const;
 
 protected:
        /// Add a widget to the list of all widgets whose validity should