Bo Peng wrote: > > OK for this one? > > OK. I did some further cleanup and integrated Bo's patch for bug 3654. See attached.
Jürgen
Index: src/frontends/qt4/QDocument.cpp =================================================================== --- src/frontends/qt4/QDocument.cpp (Revision 18428) +++ src/frontends/qt4/QDocument.cpp (Arbeitskopie) @@ -214,7 +214,8 @@ this, SLOT(change_adaptor())); connect(textLayoutModule->listingsED, SIGNAL(textChanged()), this, SLOT(validate_listings_params())); - textLayoutModule->listingsTB->setPlainText("Input listings parameters below. Enter ? for a list of parameters."); + textLayoutModule->listingsTB->setPlainText( + qt_("Input listings parameters on the right. Enter ? for a list of parameters.")); textLayoutModule->lspacingLE->setValidator(new QDoubleValidator( textLayoutModule->lspacingLE)); textLayoutModule->skipLE->setValidator(unsignedLengthValidator( @@ -616,7 +617,8 @@ if (!isOK) { isOK = true; // listingsTB->setTextColor("black"); - textLayoutModule->listingsTB->setPlainText("Input listings parameters below. Enter ? for a list of parameters."); + textLayoutModule->listingsTB->setPlainText( + qt_("Input listings parameters on the right. Enter ? for a list of parameters.")); okPB->setEnabled(true); } } catch (invalidParam & e) { Index: src/frontends/qt4/QInclude.cpp =================================================================== --- src/frontends/qt4/QInclude.cpp (Revision 18428) +++ src/frontends/qt4/QInclude.cpp (Arbeitskopie) @@ -91,7 +91,8 @@ InsetListingsParams par(fromqstr(listingsED->toPlainText())); if (!isOK) { isOK = true; - listingsTB->setPlainText("Input listings parameters on the right. Enter ? for a list of parameters."); + listingsTB->setPlainText( + qt_("Input listings parameters on the right. Enter ? for a list of parameters.")); okPB->setEnabled(true); } } catch (invalidParam & e) { @@ -206,7 +207,8 @@ dialog_->captionLE->clear(); dialog_->labelLE->clear(); dialog_->listingsED->clear(); - dialog_->listingsTB->setPlainText("Input listings parameters on the right. Enter ? for a list of parameters."); + dialog_->listingsTB->setPlainText( + qt_("Input listings parameters on the right. Enter ? for a list of parameters.")); string cmdname = controller().params().getCmdName(); if (cmdname != "include" && @@ -246,6 +248,7 @@ if (cap[0] == '{' && cap[cap.size()-1] == '}') dialog_->captionLE->setText(toqstr(cap.substr(1, cap.size()-2))); else + // FIXME: make this translatable! throw invalidParam("caption parameter is not quoted with braces"); *it = ""; } else if (prefixIs(*it, "label=")) { @@ -253,6 +256,7 @@ if (lbl[0] == '{' && lbl[lbl.size()-1] == '}') dialog_->labelLE->setText(toqstr(lbl.substr(1, lbl.size()-2))); else + // FIXME: make this translatable! throw invalidParam("label parameter is not quoted with braces"); *it = ""; } Index: src/frontends/qt4/QListings.h =================================================================== --- src/frontends/qt4/QListings.h (Revision 18428) +++ src/frontends/qt4/QListings.h (Arbeitskopie) @@ -38,6 +38,8 @@ void on_floatCB_stateChanged(int state); /// turn off float when inline is clicked void on_inlineCB_stateChanged(int state); + /// turn off numbering options when none is selected + void on_numberSideCO_currentIndexChanged(int); protected: virtual void closeEvent(QCloseEvent * e); private: Index: src/frontends/qt4/ui/ListingsUi.ui =================================================================== --- src/frontends/qt4/ui/ListingsUi.ui (Revision 18428) +++ src/frontends/qt4/ui/ListingsUi.ui (Arbeitskopie) @@ -258,7 +258,7 @@ <string>Choose the Font Size</string> </property> <property name="editable" > - <bool>true</bool> + <bool>false</bool> </property> <property name="autoCompletion" > <bool>true</bool> @@ -269,7 +269,23 @@ </widget> </item> <item row="0" column="1" > - <widget class="QComboBox" name="numberSideCO" /> + <widget class="QComboBox" name="numberSideCO" > + <item> + <property name="text" > + <string>None</string> + </property> + </item> + <item> + <property name="text" > + <string>Left</string> + </property> + </item> + <item> + <property name="text" > + <string>Right</string> + </property> + </item> + </widget> </item> </layout> </widget> @@ -424,7 +440,7 @@ <string>Choose the Font Style</string> </property> <property name="editable" > - <bool>true</bool> + <bool>false</bool> </property> <property name="autoCompletion" > <bool>true</bool> @@ -461,7 +477,7 @@ <string>Choose the Font Size</string> </property> <property name="editable" > - <bool>true</bool> + <bool>false</bool> </property> <property name="autoCompletion" > <bool>true</bool> Index: src/frontends/qt4/QListings.cpp =================================================================== --- src/frontends/qt4/QListings.cpp (Revision 18428) +++ src/frontends/qt4/QListings.cpp (Arbeitskopie) @@ -30,6 +30,7 @@ using std::string; using std::vector; +using lyx::support::findToken; using lyx::support::getVectorFromString; using lyx::support::getStringFromVector; using lyx::support::prefixIs; @@ -45,18 +46,38 @@ ///////////////////////////////////////////////////////////////////// -string const allowed_languages = - "no language\nBAP\nACSL\nAda\nALGOL\nC\nC++\nCaml\nClean\nCobol\n" - "Comal 80\ncsh\nDelphi\nEiffel\nElan\nEuphoria\nFortran\nHaskell\n" - "HTML\nIDL\nJava\nLisp\nLogo\nmake\nMathematica\nMatlab\nMercury\n" - "Miranda\nML\nModula-2\nOberon-2\nOCL\nPascal\nPerl\nPHP\nPL/I\nPOV\n" - "Python\nProlog\nR\nS\nSAS\nSHELXL\nSimula\ntcl\nSQL\nTeX\nVBScript\n" - "VHDL\nXML"; -string const allowed_fontsizes = "default\ntiny\nscriptsize\nfootnotesize\nsmall\n" - "normalsize\nlarge\nLarge"; -string const allowed_fontstyles = "default\nrmfamily\nttfamily\nsffamily"; -string const allowed_sides = "none\nleft\nright"; +char const * languages[] = +{ "no language", "BAP", "ACSL", "Ada", "ALGOL", "C", "C++", "Caml", "Clean", "Cobol", + "Comal 80", "csh", "Delphi", "Eiffel", "Elan", "Euphoria", "Fortran", "Haskell", + "HTML", "IDL", "Java", "Lisp", "Logo", "make", "Mathematica", "Matlab", "Mercury", + "Miranda", "ML", "Modula-2", "Oberon-2", "OCL", "Pascal", "Perl", "PHP", "PL/I", "POV", + "Python", "Prolog", "R", "S", "SAS", "SHELXL", "Simula", "tcl", "SQL", "TeX", "VBScript", + "VHDL", "XML", "" }; +char const * languages_gui[] = +{ N_("No language"), "BAP", "ACSL", "Ada", "ALGOL", "C", "C++", "Caml", "Clean", "Cobol", + "Comal 80", "csh", "Delphi", "Eiffel", "Elan", "Euphoria", "Fortran", "Haskell", + "HTML", "IDL", "Java", "Lisp", "Logo", "make", "Mathematica", "Matlab", "Mercury", + "Miranda", "ML", "Modula-2", "Oberon-2", "OCL", "Pascal", "Perl", "PHP", "PL/I", "POV", + "Python", "Prolog", "R", "S", "SAS", "SHELXL", "Simula", "tcl", "SQL", "TeX", "VBScript", + "VHDL", "XML", "" }; + +char const * font_sizes[] = +{ "default", "tiny", "scriptsize", "footnotesize", "small", "normalsize", "large", + "Large", "" }; + +char const * font_sizes_gui[] = +{ N_("Default"), N_("Tiny"), N_("Smallest"), N_("Smaller"), N_("Small"), N_("Normal"), + N_("Large"), N_("Larger"), "" }; + +char const * font_styles[] = +{ "default", "rmfamily", "ttfamily", "sffamily", "" }; + +char const * font_styles_gui[] = +{ N_("Default"), N_("Roman"), N_("Typewriter"), N_("Sans Serif"), "" }; + + + QListingsDialog::QListingsDialog(QListings * form) : form_(form) { @@ -83,6 +104,41 @@ connect(listingsED, SIGNAL(textChanged()), this, SLOT(change_adaptor())); connect(listingsED, SIGNAL(textChanged()), this, SLOT(validate_listings_params())); + + for (int n = 0; languages[n][0]; ++n) + languageCO->addItem(languages_gui[n]); + + for (int n = 0; font_styles[n][0]; ++n) + fontstyleCO->addItem(font_styles_gui[n]); + + for (int n = 0; font_sizes[n][0]; ++n) { + QString font = toqstr(font_sizes_gui[n]); + fontsizeCO->addItem(font); + numberFontSizeCO->addItem(font); + } + + // set validators + numberStepLE->setValidator(new QIntValidator(0, 1000000, this)); + firstlineLE->setValidator(new QIntValidator(0, 1000000, this)); + lastlineLE->setValidator(new QIntValidator(0, 1000000, this)); + placementLE->setValidator(new QRegExpValidator(QRegExp("[tbph]*"), this)); + + // set default values + listingsTB->setPlainText( + qt_("Input listings parameters on the right. Enter ? for a list of parameters.")); + languageCO->setCurrentIndex(findToken(languages, "no language")); + floatCB->setChecked(false); + placementLE->clear(); + numberSideCO->setCurrentIndex(0); + numberStepLE->clear(); + numberFontSizeCO->setCurrentIndex(findToken(font_sizes, "default")); + firstlineLE->clear(); + lastlineLE->clear(); + fontstyleCO->setCurrentIndex(findToken(font_styles, "default")); + fontsizeCO->setCurrentIndex(findToken(font_sizes, "default")); + breaklinesCB->setChecked(false); + spaceCB->setChecked(false); + extendedcharsCB->setChecked(false); } @@ -101,27 +157,43 @@ string QListingsDialog::construct_params() { - string language = fromqstr(languageCO->currentText()); + string language = languages[languageCO->currentIndex()]; - bool float_ = floatCB->checkState() == Qt::Checked; - string placement = placementLE->isEnabled() ? fromqstr(placementLE->text()) : string(); - - string numberSide = fromqstr(numberSideCO->currentText()); + bool float_ = floatCB->isChecked(); + string placement; + if (placementLE->isEnabled()) + placement = fromqstr(placementLE->text()); + + string numberSide; + switch (numberSideCO->currentIndex()) { + case 0: + numberSide = "none"; + break; + case 1: + numberSide = "left"; + break; + case 2: + numberSide = "right"; + break; + default: + numberSide = "none"; + break; + } string stepnumber = fromqstr(numberStepLE->text()); - string numberfontsize = fromqstr(numberFontSizeCO->currentText()); + string numberfontsize = font_sizes[numberFontSizeCO->currentIndex()]; string firstline = fromqstr(firstlineLE->text()); string lastline = fromqstr(lastlineLE->text()); - string fontsize = fromqstr(fontsizeCO->currentText()); - string fontstyle = fromqstr(fontstyleCO->currentText()); + string fontsize = font_sizes[fontsizeCO->currentIndex()]; + string fontstyle = font_styles[fontstyleCO->currentIndex()]; string basicstyle; if (fontsize != "default") basicstyle = "\\" + fontsize; if (fontstyle != "default") basicstyle += "\\" + fontstyle; - bool breakline = breaklinesCB->checkState() == Qt::Checked; - bool space = spaceCB->checkState() == Qt::Checked; - bool extendedchars = extendedcharsCB->checkState() == Qt::Checked; + bool breakline = breaklinesCB->isChecked(); + bool space = spaceCB->isChecked(); + bool extendedchars = extendedcharsCB->isChecked(); string extra = fromqstr(listingsED->toPlainText()); // compose a string @@ -134,14 +206,14 @@ par.addParam("floatplacement", placement); if (numberSide != "none") par.addParam("numbers", numberSide); - if (numberfontsize != "default") + if (numberfontsize != "default" && numberSide != "none") par.addParam("numberstyle", "\\" + numberfontsize); + if (!stepnumber.empty() && numberSide != "none") + par.addParam("stepnumber", stepnumber); if (!firstline.empty()) par.addParam("firstline", firstline); if (!lastline.empty()) par.addParam("lastline", lastline); - if (!stepnumber.empty()) - par.addParam("stepnumber", stepnumber); if (!basicstyle.empty()) par.addParam("basicstyle", basicstyle); if (breakline) @@ -163,7 +235,7 @@ if (!isOK) { isOK = true; listingsTB->setPlainText( - "Input listings parameters on the right. Enter ? for a list of parameters."); + qt_("Input listings parameters on the right. Enter ? for a list of parameters.")); okPB->setEnabled(true); } } catch (invalidParam & e) { @@ -192,6 +264,14 @@ } } + +void QListingsDialog::on_numberSideCO_currentIndexChanged(int index) +{ + numberStepLE->setEnabled(index > 0); + numberFontSizeCO->setEnabled(index > 0); +} + + ///////////////////////////////////////////////////////////////////// // // QListings @@ -214,7 +294,7 @@ bcview().setApply(dialog_->applyPB); bcview().setCancel(dialog_->closePB); dialog_->listingsTB->setPlainText( - "Input listings parameters on the right. Enter ? for a list of parameters."); + qt_("Input listings parameters on the right. Enter ? for a list of parameters.")); update_contents(); } @@ -231,69 +311,6 @@ void QListings::update_contents() { - // first prepare all choices - vector<string> const languages = - getVectorFromString(allowed_languages, "\n"); - vector<string> const fontstyles = - getVectorFromString(allowed_fontstyles, "\n"); - vector<string> const fontsizes = - getVectorFromString(allowed_fontsizes, "\n"); - vector<string> const sides = - getVectorFromString(allowed_sides, "\n"); - - dialog_->languageCO->clear(); - for (vector<string>::const_iterator it = languages.begin(); - it != languages.end(); ++it) { - dialog_->languageCO->addItem(toqstr(*it)); - } - dialog_->numberSideCO->clear(); - for (vector<string>::const_iterator it = sides.begin(); - it != sides.end(); ++it) { - dialog_->numberSideCO->addItem(toqstr(*it)); - } - dialog_->fontstyleCO->clear(); - dialog_->fontstyleCO->setEditable(false); - for (vector<string>::const_iterator it = fontstyles.begin(); - it != fontstyles.end(); ++it) { - dialog_->fontstyleCO->addItem(toqstr(*it)); - } - dialog_->fontsizeCO->clear(); - dialog_->fontsizeCO->setEditable(false); - dialog_->numberFontSizeCO->clear(); - dialog_->numberFontSizeCO->setEditable(false); - for (vector<string>::const_iterator it = fontsizes.begin(); - it != fontsizes.end(); ++it) { - dialog_->fontsizeCO->addItem(toqstr(*it)); - dialog_->numberFontSizeCO->addItem(toqstr(*it)); - } - - // set validators - dialog_->numberStepLE->setValidator(new QIntValidator(0, 1000000, this)); - dialog_->firstlineLE->setValidator(new QIntValidator(0, 1000000, this)); - dialog_->lastlineLE->setValidator(new QIntValidator(0, 1000000, this)); - dialog_->placementLE->setValidator(new QRegExpValidator(QRegExp("[tbph]*"), this)); - - // set default values - dialog_->listingsTB->setPlainText("Input listings parameters on the right. Enter ? for a list of parameters."); - dialog_->languageCO->setCurrentIndex( - dialog_->languageCO->findText(toqstr("no language"))); - dialog_->floatCB->setChecked(false); - dialog_->placementLE->clear(); - dialog_->numberSideCO->setCurrentIndex( - dialog_->numberSideCO->findText(toqstr("none"))); - dialog_->numberStepLE->clear(); - dialog_->numberFontSizeCO->setCurrentIndex( - dialog_->numberFontSizeCO->findText(toqstr("default"))); - dialog_->firstlineLE->clear(); - dialog_->lastlineLE->clear(); - dialog_->fontstyleCO->setCurrentIndex( - dialog_->fontstyleCO->findText(toqstr("default"))); - dialog_->fontsizeCO->setCurrentIndex( - dialog_->fontsizeCO->findText(toqstr("default"))); - dialog_->breaklinesCB->setChecked(false); - dialog_->spaceCB->setChecked(false); - dialog_->extendedcharsCB->setChecked(false); - // set values from param string InsetListingsParams & params = controller().params(); dialog_->inlineCB->setChecked(params.isInline()); @@ -307,14 +324,9 @@ for (vector<string>::iterator it = pars.begin(); it != pars.end(); ++it) { if (prefixIs(*it, "language=")) { - for (vector<string>::const_iterator st = languages.begin(); - st != languages.end(); ++st) { - if (*it == "language=" + *st) { - dialog_->languageCO->setCurrentIndex( - dialog_->languageCO->findText(toqstr(*st))); - *it = ""; - } - } + int n = findToken(languages, it->substr(9)); + dialog_->languageCO->setCurrentIndex(n); + *it = ""; } else if (prefixIs(*it, "floatplacement=")) { dialog_->floatCB->setChecked(true); dialog_->placementLE->setEnabled(true); @@ -329,21 +341,21 @@ dialog_->placementLE->setText(toqstr(it->substr(6))); *it = ""; } else if (prefixIs(*it, "numbers=")) { - dialog_->numberSideCO->setCurrentIndex( - dialog_->numberSideCO->findText(toqstr(it->substr(8)))); + string s = it->substr(8); + int n = 0; + if (s == "left") + n = 1; + else if (s == "right") + n = 2; + dialog_->numberSideCO->setCurrentIndex(n); *it = ""; } else if (prefixIs(*it, "stepnumber=")) { dialog_->numberStepLE->setText(toqstr(it->substr(11))); *it = ""; } else if (prefixIs(*it, "numberstyle=")) { - for (vector<string>::const_iterator st = fontsizes.begin(); - st != fontsizes.end(); ++st) { - if (*it == "numberstyle=\\" + *st) { - dialog_->numberFontSizeCO->setCurrentIndex( - dialog_->numberFontSizeCO->findText(toqstr(*st))); - *it = ""; - } - } + int n = findToken(font_sizes, it->substr(13)); + dialog_->numberFontSizeCO->setCurrentIndex(n); + *it = ""; } else if (prefixIs(*it, "firstline=")) { dialog_->firstlineLE->setText(toqstr(it->substr(10))); *it = ""; @@ -353,25 +365,27 @@ } else if (prefixIs(*it, "basicstyle=")) { string style; string size; - for (vector<string>::const_iterator st = fontstyles.begin(); - st != fontstyles.end(); ++st) - if (contains(*it, "\\" + *st)) { - style = "\\" + *st; + for (int n = 0; font_styles[n][0]; ++n) { + string const s = font_styles[n]; + if (contains(*it, "\\" + s)) { + style = "\\" + s; break; } - for (vector<string>::const_iterator st = fontsizes.begin(); - st != fontsizes.end(); ++st) - if (contains(*it, "\\" + *st)) { - size = "\\" + *st; + } + for (int n = 0; font_sizes[n][0]; ++n) { + string const s = font_sizes[n]; + if (contains(*it, "\\" + s)) { + size = "\\" + s; break; } + } if (it->substr(11) == style + size || it->substr(11) == size + style) { if (!style.empty()) dialog_->fontstyleCO->setCurrentIndex( - dialog_->fontstyleCO->findText(toqstr(style.substr(1)))); + findToken(font_styles, style.substr(1))); if (!size.empty()) dialog_->fontsizeCO->setCurrentIndex( - dialog_->fontsizeCO->findText(toqstr(size.substr(1)))); + findToken(font_sizes, size.substr(1))); *it = ""; } } else if (prefixIs(*it, "breaklines=")) { @@ -385,6 +399,9 @@ *it = ""; } } + + dialog_->numberStepLE->setEnabled(dialog_->numberSideCO->currentIndex() > 0); + dialog_->numberFontSizeCO->setEnabled(dialog_->numberSideCO->currentIndex() > 0); // parameters that can be handled by widgets are cleared // the rest is put to the extra edit box. string extra = getStringFromVector(pars);