]> git.lyx.org Git - features.git/commitdiff
InsetListings: turn off inline/float when another is clicked, fix bug 3641 and 3642
authorBo Peng <bpeng@lyx.org>
Fri, 18 May 2007 15:26:42 +0000 (15:26 +0000)
committerBo Peng <bpeng@lyx.org>
Fri, 18 May 2007 15:26:42 +0000 (15:26 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18407 a592a061-630c-0410-9148-cb99ea01b6c8

src/frontends/qt4/QListings.cpp
src/frontends/qt4/QListings.h

index 72948500a786ff01acc22e55fd74ce9e30b2a5cc..2feab752449a036094e21c507c6c8863b37b9e45 100644 (file)
@@ -103,7 +103,7 @@ string QListingsDialog::construct_params()
        string language = fromqstr(languageCO->currentText());
        
        bool float_ = floatCB->checkState() == Qt::Checked;
-       string placement = fromqstr(placementLE->text());
+       string placement = placementLE->isEnabled() ? fromqstr(placementLE->text()) : string();
        
        string numberSide = fromqstr(numberSideCO->currentText());
        string stepnumber = fromqstr(numberStepLE->text());
@@ -171,6 +171,25 @@ void QListingsDialog::validate_listings_params()
        }
 }
 
+
+void QListingsDialog::on_floatCB_stateChanged(int state)
+{
+       if (state == Qt::Checked) {
+               inlineCB->setChecked(false);
+               placementLE->setEnabled(true);
+       } else
+               placementLE->setEnabled(false);
+}
+
+
+void QListingsDialog::on_inlineCB_stateChanged(int state)
+{
+       if (state == Qt::Checked) {
+               floatCB->setChecked(false);
+               placementLE->setEnabled(false);
+       }
+}
+
 /////////////////////////////////////////////////////////////////////
 //
 // QListings
@@ -274,10 +293,11 @@ void QListings::update_contents()
 
        // set values from param string
        InsetListingsParams & params = controller().params();
-       if (params.isInline())
-               dialog_->inlineCB->setChecked(true);
-       else
-               dialog_->inlineCB->setChecked(false);
+       dialog_->inlineCB->setChecked(params.isInline());
+       if (params.isInline()) {
+               dialog_->floatCB->setChecked(false);
+               dialog_->placementLE->setEnabled(false);
+       }
        // break other parameters and set values
        vector<string> pars = getVectorFromString(params.separatedParams(), "\n");
        // process each of them
@@ -294,10 +314,14 @@ void QListings::update_contents()
                        }
                } else if (prefixIs(*it, "floatplacement=")) {
                        dialog_->floatCB->setChecked(true);
+                       dialog_->placementLE->setEnabled(true);
                        dialog_->placementLE->setText(toqstr(it->substr(15)));
+                       dialog_->inlineCB->setChecked(false);
                        *it = "";
                } else if (prefixIs(*it, "float")) {
                        dialog_->floatCB->setChecked(true);
+                       dialog_->inlineCB->setChecked(false);
+                       dialog_->placementLE->setEnabled(true);
                        if (prefixIs(*it, "float="))
                                dialog_->placementLE->setText(toqstr(it->substr(6)));
                        *it = "";
index e3a0966f18ce9c0f627ee4c1b6e5db99c6c6e873..e9eb84854b7b3a0c964878471d75de42124bf350 100644 (file)
@@ -34,6 +34,10 @@ protected Q_SLOTS:
        /// AFAIK, QValidator only works for QLineEdit so 
        /// I have to validate listingsED (QTextEdit) manually.
        void validate_listings_params();
+       /// turn off inline when float is clicked
+       void on_floatCB_stateChanged(int state);
+       /// turn off float when inline is clicked
+       void on_inlineCB_stateChanged(int state);
 protected:
        virtual void closeEvent(QCloseEvent * e);
 private: