]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/GuiListings.cpp
Fix the tab ordering of GuiDocument components.
[lyx.git] / src / frontends / qt4 / GuiListings.cpp
index 614a1c199549de4fd5337a776f44fd0706548092..6591b5550c8c896e5ace0211ae2c9091f7b1dd26 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.
  */
@@ -20,6 +20,7 @@
 #include "insets/InsetListings.h"
 #include "insets/InsetListingsParams.h"
 
+#include "support/convert.h"
 #include "support/debug.h"
 #include "support/gettext.h"
 #include "support/lstrings.h"
@@ -43,7 +44,7 @@ namespace frontend {
 /////////////////////////////////////////////////////////////////////
 
 
-char const * languages[] =
+char const * languages_supported[] =
 { "no language", "ABAP", "ACSL", "Ada", "ALGOL", "Assembler", "Awk", "bash", "Basic", "C",
   "C++", "Caml", "Clean", "Cobol", "Comal 80", "command.com", "Comsol", "csh", "Delphi",
   "Eiffel", "Elan", "erlang", "Euphoria", "Fortran", "Gnuplot", "Haskell", "HTML", "IDL", "inform",
@@ -198,19 +199,21 @@ 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)
+       for (int n = 0; languages_supported[n][0]; ++n)
                languageCO->addItem(qt_(languages_gui[n]));
 
        for (int n = 0; font_styles[n][0]; ++n)
@@ -228,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);
@@ -247,7 +251,7 @@ void GuiListings::change_adaptor()
 
 string GuiListings::construct_params()
 {
-       string language = languages[qMax(0, languageCO->currentIndex())];
+       string language = languages_supported[qMax(0, languageCO->currentIndex())];
        string dialect;
        string const dialect_gui = fromqstr(dialectCO->currentText());
        if (dialectCO->currentIndex() > 0) {
@@ -295,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());
@@ -330,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);
@@ -356,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();
@@ -405,7 +412,7 @@ void GuiListings::on_languageCO_currentIndexChanged(int index)
        // 0 is "no dialect"
        int default_dialect = 0;
        dialectCO->addItem(qt_("No dialect"));
-       string const language = languages[index];
+       string const language = languages_supported[index];
 
        for (size_t i = 0; i != nr_dialects; ++i) {
                if (language == dialects[i].language) {
@@ -441,7 +448,7 @@ void GuiListings::updateContents()
        // set default values
        listingsTB->setPlainText(
                qt_("Input listing parameters on the right. Enter ? for a list of parameters."));
-       languageCO->setCurrentIndex(findToken(languages, "no language"));
+       languageCO->setCurrentIndex(findToken(languages_supported, "no language"));
        dialectCO->setCurrentIndex(0);
        floatCB->setChecked(false);
        placementLE->clear();
@@ -455,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
@@ -481,7 +489,7 @@ void GuiListings::updateContents()
                        } else {
                                language = arg;
                        }
-                       int n = findToken(languages, language);
+                       int n = findToken(languages_supported, language);
                        if (n >= 0) {
                                languageCO->setCurrentIndex(n);
                                in_gui = true;
@@ -582,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 = "";
@@ -605,7 +616,7 @@ bool GuiListings::isValid()
 
 bool GuiListings::initialiseParams(string const & data)
 {
-       InsetListingsMailer::string2params(data, params_);
+       InsetListings::string2params(data, params_);
        return true;
 }
 
@@ -618,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));
 }
 
@@ -636,4 +647,4 @@ Dialog * createGuiListings(GuiView & lv) { return new GuiListings(lv); }
 } // namespace lyx
 
 
-#include "GuiListings_moc.cpp"
+#include "moc_GuiListings.cpp"