]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/GuiListings.cpp
* fix spelling in comments to please John.
[lyx.git] / src / frontends / qt4 / GuiListings.cpp
index d6894d0f62b8a690b930c681e85ffdfec08e5007..9bb8f05dba0cef6f8f7df61ee45ec5722ff725e4 100644 (file)
@@ -4,7 +4,7 @@
  * Licence details can be found in the file COPYING.
  *
  * \author Bo Peng
- * \author Jürgen Spitzmüller
+ * \author Jürgen Spitzmüller
  *
  * Full author contact details are available in file CREDITS.
  */
 #include "GuiListings.h"
 
 #include "qt_helpers.h"
+
 #include "FuncRequest.h"
+
 #include "insets/InsetListings.h"
 #include "insets/InsetListingsParams.h"
-#include "support/debug.h"
 
+#include "support/convert.h"
+#include "support/debug.h"
 #include "support/gettext.h"
 #include "support/lstrings.h"
 
 #include <QLineEdit>
-#include <QCloseEvent>
 #include <QPushButton>
 #include <QValidator>
 #include <QRegExpValidator>
@@ -197,17 +199,19 @@ GuiListings::GuiListings(GuiView & lv)
                this, SLOT(change_adaptor()));
        connect(spaceInStringCB, SIGNAL(clicked()),
                this, SLOT(change_adaptor()));
+       connect(tabsizeSB, SIGNAL(valueChanged(int)),
+               this, SLOT(change_adaptor()));
        connect(extendedcharsCB, SIGNAL(clicked()),
                this, SLOT(change_adaptor()));
 
        connect(listingsED,  SIGNAL(textChanged()),
                this, SLOT(change_adaptor()));
        connect(listingsED,  SIGNAL(textChanged()),
-               this, SLOT(set_listings_msg()));
+               this, SLOT(setListingsMsg()));
        connect(bypassCB, SIGNAL(clicked()),
                this, SLOT(change_adaptor()));
        connect(bypassCB, SIGNAL(clicked()),
-               this, SLOT(set_listings_msg()));
+               this, SLOT(setListingsMsg()));
 
        for (int n = 0; languages[n][0]; ++n)
                languageCO->addItem(qt_(languages_gui[n]));
@@ -227,6 +231,7 @@ GuiListings::GuiListings(GuiView & lv)
        lastlineLE->setValidator(new QIntValidator(0, 1000000, this));
        placementLE->setValidator(new QRegExpValidator(QRegExp("[\\*tbph]*"), this));
 
+       bc().setPolicy(ButtonPolicy::NoRepeatedApplyReadOnlyPolicy);
        bc().setOK(okPB);
        bc().setApply(applyPB);
        bc().setCancel(closePB);
@@ -246,7 +251,7 @@ void GuiListings::change_adaptor()
 
 string GuiListings::construct_params()
 {
-       string language = languages[languageCO->currentIndex()];
+       string language = languages[qMax(0, languageCO->currentIndex())];
        string dialect;
        string const dialect_gui = fromqstr(dialectCO->currentText());
        if (dialectCO->currentIndex() > 0) {
@@ -266,7 +271,7 @@ string GuiListings::construct_params()
                placement = fromqstr(placementLE->text());
 
        string numberSide;
-       switch (numberSideCO->currentIndex()) {
+       switch (qMax(0, numberSideCO->currentIndex())) {
        case 0:
                numberSide = "none";
                break;
@@ -281,12 +286,12 @@ string GuiListings::construct_params()
                break;
        }
        string stepnumber = fromqstr(numberStepLE->text());
-       string numberfontsize = font_sizes[numberFontSizeCO->currentIndex()];
+       string numberfontsize = font_sizes[qMax(0, numberFontSizeCO->currentIndex())];
        string firstline = fromqstr(firstlineLE->text());
        string lastline = fromqstr(lastlineLE->text());
 
-       string fontsize = font_sizes[fontsizeCO->currentIndex()];
-       string fontstyle = font_styles[fontstyleCO->currentIndex()];
+       string fontsize = font_sizes[qMax(0, fontsizeCO->currentIndex())];
+       string fontstyle = font_styles[qMax(0, fontstyleCO->currentIndex())];
        string basicstyle;
        if (fontsize != "default")
                basicstyle = "\\" + fontsize;
@@ -294,6 +299,7 @@ string GuiListings::construct_params()
                basicstyle += "\\" + fontstyle;
        bool breakline = breaklinesCB->isChecked();
        bool space = spaceCB->isChecked();
+       int tabsize = tabsizeSB->value();
        bool spaceInString = spaceInStringCB->isChecked();
        bool extendedchars = extendedcharsCB->isChecked();
        string extra = fromqstr(listingsED->toPlainText());
@@ -329,6 +335,8 @@ string GuiListings::construct_params()
                par.addParam("showspaces", "true");
        if (!spaceInString)
                par.addParam("showstringspaces", "false");
+       if (tabsize != 8)
+               par.addParam("tabsize", convert<string>(tabsize));
        if (extendedchars)
                par.addParam("extendedchars", "true");
        par.addParams(extra);
@@ -355,7 +363,7 @@ docstring GuiListings::validate_listings_params()
 }
 
 
-void GuiListings::set_listings_msg()
+void GuiListings::setListingsMsg()
 {
        static bool isOK = true;
        docstring msg = validate_listings_params();
@@ -454,6 +462,7 @@ void GuiListings::updateContents()
        breaklinesCB->setChecked(false);
        spaceCB->setChecked(false);
        spaceInStringCB->setChecked(true);
+       tabsizeSB->setValue(8);
        extendedcharsCB->setChecked(false);
 
        // set values from param string
@@ -581,6 +590,9 @@ void GuiListings::updateContents()
                } else if (prefixIs(*it, "showstringspaces=")) {
                        spaceInStringCB->setChecked(contains(*it, "true"));
                        *it = "";
+               } else if (prefixIs(*it, "tabsize=")) {
+                       tabsizeSB->setValue(convert<int>(plainParam(it->substr(8))));
+                       *it = "";
                } else if (prefixIs(*it, "extendedchars=")) {
                        extendedcharsCB->setChecked(contains(*it, "true"));
                        *it = "";
@@ -604,7 +616,7 @@ bool GuiListings::isValid()
 
 bool GuiListings::initialiseParams(string const & data)
 {
-       InsetListingsMailer::string2params(data, params_);
+       InsetListings::string2params(data, params_);
        return true;
 }
 
@@ -617,7 +629,7 @@ void GuiListings::clearParams()
 
 void GuiListings::dispatchParams()
 {
-       string const lfun = InsetListingsMailer::params2string(params_);
+       string const lfun = InsetListings::params2string(params_);
        dispatch(FuncRequest(getLfun(), lfun));
 }
 
@@ -635,4 +647,4 @@ Dialog * createGuiListings(GuiView & lv) { return new GuiListings(lv); }
 } // namespace lyx
 
 
-#include "GuiListings_moc.cpp"
+#include "moc_GuiListings.cpp"