From f9fb0b8770d8cb270b619c4c8a10da98d4092fe4 Mon Sep 17 00:00:00 2001 From: Kornel Benko Date: Sat, 14 Jan 2017 19:33:13 +0100 Subject: [PATCH 1/9] Update sk.po --- po/sk.gmo | Bin 503639 -> 503738 bytes po/sk.po | 116 +++++++++++++++++++++++++++++++++++------------------- 2 files changed, 75 insertions(+), 41 deletions(-) diff --git a/po/sk.gmo b/po/sk.gmo index eaf761a1eca6af4f9e64ccb9c60641afaa4ba0e6..f61985886c0026b2a8d440ca7c580ad402d70f47 100644 GIT binary patch delta 143058 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 z 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\n" "Language-Team: Slovak \n" "Language: sk\n" @@ -83,17 +83,18 @@ msgid "Citation Style" msgstr "Ε tΓ½l citovania" #: src/frontends/qt4/ui/BiblioUi.ui:55 -msgid "Sty&le engine:" -msgstr "Obsluha Ε tΓ½&lu:" +msgid "Sty&le format:" +msgstr "Ε tΓ½&l formΓ‘tu:" #: src/frontends/qt4/ui/BiblioUi.ui:65 msgid "" -"A selection of different style engines (such as natbib) that respectively " -"provide support for specific citytion and bibliography styles. Expand to get " -"more information." +"A selection of different style format approaches (such as natbib) that " +"respectively provide support for specific citation and bibliography styles. " +"Expand to get more information." msgstr "" -"VΓ½ber inej obsluhy (ako napr. natbib) ktorΓ‘ poskytuje podporu Ε‘pecifickΓ½ch " -"bibliografickΓ½ch Ε‘tΓ½lov. Rozviňte keď chcete viac informΓ‘ciΓ­." +"VΓ½ber inΓ½ch formΓ‘tovΓ½ch metΓ³d (ako napr. natbib) ktorΓ© poskytujΓΊ podporu " +"Ε‘pecifickΓ½ch citΓ‘ciΓ­ a bibliografickΓ½ch Ε‘tΓ½lov. Rozviňte keď chcete viac " +"informΓ‘ciΓ­." #: src/frontends/qt4/ui/BiblioUi.ui:75 msgid "&Variant:" @@ -103,16 +104,17 @@ msgstr "&VariΓ‘cia:" msgid "Provides available cite style variants." msgstr "Poskytuje dostupnΓ© varianty Ε‘tΓ½lov citovania." -#: src/frontends/qt4/ui/BiblioUi.ui:118 +#: src/frontends/qt4/ui/BiblioUi.ui:118 src/frontends/qt4/GuiPrefs.cpp:825 +#: src/frontends/qt4/GuiPrefs.cpp:958 msgid "Opt&ions:" -msgstr "M&oΕΎnosti:" +msgstr "MoΕΎno&sti:" #: src/frontends/qt4/ui/BiblioUi.ui:134 -msgid "Here you can enter further options of the biblatex package" -msgstr "Tu mΓ΄ΕΎte vloΕΎiΕ₯ ďalΕ‘ie voΔΎby balΓ­ka biblatex" +msgid "Here you can enter further options of the bibliography package" +msgstr "Tu mΓ΄ΕΎte vloΕΎiΕ₯ ďalΕ‘ie voΔΎby balΓ­ka pre bibliografickΓ© zΓ‘znamy" #: src/frontends/qt4/ui/BiblioUi.ui:154 -msgid "&Biblatex citation style:" +msgid "Biblatex &citation style:" msgstr "Ε tΓ½l &biblatex-citΓ‘cie:" #: src/frontends/qt4/ui/BiblioUi.ui:164 @@ -167,10 +169,10 @@ msgstr "" msgid "Bibliography Generation" msgstr "GenerΓ‘cia Bibliografie" -#: src/frontends/qt4/ui/BiblioUi.ui:167 src/frontends/qt4/ui/IndicesUi.ui:33 -#: src/frontends/qt4/ui/PrefLatexUi.ui:85 +#: src/frontends/qt4/ui/BiblioUi.ui:363 src/frontends/qt4/ui/IndicesUi.ui:33 +#: src/frontends/qt4/ui/PrefLatexUi.ui:209 msgid "&Processor:" -msgstr "&GenerΓ‘tor:" +msgstr "&Procesor:" #: src/frontends/qt4/ui/BiblioUi.ui:177 src/frontends/qt4/ui/IndicesUi.ui:43 msgid "Select a processor" @@ -373,9 +375,9 @@ msgstr "Prid&aΕ₯…" msgid "Remove the selected database" msgstr "OdstrΓ‘niΕ₯ vybranΓΊ databΓ‘zu" -#: src/frontends/qt4/ui/BibtexUi.ui:282 src/frontends/qt4/ui/CitationUi.ui:156 +#: src/frontends/qt4/ui/BibtexUi.ui:61 src/frontends/qt4/ui/CitationUi.ui:156 msgid "&Delete" -msgstr "Zm&azaΕ₯" +msgstr "&ZmazaΕ₯" #: src/frontends/qt4/ui/BoxUi.ui:23 msgid "Type and Size" @@ -613,7 +615,7 @@ msgstr "UkΓ‘zaΕ₯ ne-definovanΓ© vetvy pouΕΎitΓ© v tomto dokumente." #: src/frontends/qt4/ui/BranchesUi.ui:64 msgid "&Undefined Branches" -msgstr "&NedefinovanΓ© vetvy" +msgstr "N&edefinovanΓ© vetvy" #: src/frontends/qt4/ui/BranchesUi.ui:84 msgid "A&vailable Branches:" @@ -3305,7 +3307,7 @@ msgstr "&Konvertor:" #: src/frontends/qt4/ui/PrefConvertersUi.ui:91 msgid "E&xtra flag:" -msgstr "PrΓ­&davnΓ½ indikΓ‘tor:" +msgstr "PrΓ­da&vnΓ½ indikΓ‘tor:" #: src/frontends/qt4/ui/PrefConvertersUi.ui:121 msgid "&From format:" @@ -3313,7 +3315,7 @@ msgstr "&Z formΓ‘tu:" #: src/frontends/qt4/ui/PrefConvertersUi.ui:153 msgid "&To format:" -msgstr "D&o formΓ‘tu:" +msgstr "&Do formΓ‘tu:" #: src/frontends/qt4/ui/PrefConvertersUi.ui:194 #: src/frontends/qt4/ui/PrefShortcutsUi.ui:54 @@ -3356,9 +3358,9 @@ msgid "" msgstr "" "Keď aktΓ­vne, pouΕΎΓ­vanie konvertorov s 'needauth' voΔΎbou je neprΓ­stupnΓ©." -#: src/frontends/qt4/ui/PrefConvertersUi.ui:340 +#: src/frontends/qt4/ui/PrefConvertersUi.ui:322 msgid "Use need&auth option" -msgstr "PouΕΎi needau&th voΔΎbu" +msgstr "PouΕΎi needa&uth voΔΎbu" #: src/frontends/qt4/ui/PrefConvertersUi.ui:343 msgid "" @@ -3620,7 +3622,7 @@ msgstr "" #: src/frontends/qt4/ui/PrefFileformatsUi.ui:83 msgid "Sho&w in export menu" -msgstr "ZobraziΕ₯ v menu &export" +msgstr "ZobraziΕ₯ v menu e&xport" #: src/frontends/qt4/ui/PrefFileformatsUi.ui:90 msgid "Vector &graphics format" @@ -3628,7 +3630,7 @@ msgstr "&VektorovΓ½ formΓ‘t obrΓ‘zku" #: src/frontends/qt4/ui/PrefFileformatsUi.ui:97 msgid "S&hort name:" -msgstr "K&rΓ‘tke meno:" +msgstr "&KrΓ‘tke meno:" #: src/frontends/qt4/ui/PrefFileformatsUi.ui:110 msgid "E&xtensions:" @@ -3900,6 +3902,10 @@ msgid "Optional paper size flag (-paper) for some DVI viewers" msgstr "" "VoliteΔΎnΓ½ indikΓ‘tor veΔΎkosti papiera (-paper) pre niektorΓ© DVI prehliadače" +#: src/frontends/qt4/ui/PrefLatexUi.ui:107 +msgid "P&rocessor:" +msgstr "Pro&cesor:" + #: src/frontends/qt4/ui/PrefLatexUi.ui:108 msgid "BibTeX command and options" msgstr "PrΓ­kaz a voΔΎby pre BibTeX" @@ -3909,18 +3915,20 @@ msgstr "PrΓ­kaz a voΔΎby pre BibTeX" msgid "Processor for &Japanese:" msgstr "GenerΓ‘tor pre &Japončinu:" +#: src/frontends/qt4/ui/PrefLatexUi.ui:150 +msgid "Options:" +msgstr "MoΕΎnosti:" + #: src/frontends/qt4/ui/PrefLatexUi.ui:138 msgid "Specific BibTeX command and options for pLaTeX (Japanese)" msgstr "BibTeX prΓ­kaz a voΔΎby pre pLaTeX (Japonsky)" -#: src/frontends/qt4/ui/PrefLatexUi.ui:173 -msgid "Pr&ocessor:" -msgstr "&GenerΓ‘tor:" - -#: src/frontends/qt4/ui/PrefLatexUi.ui:199 src/frontends/qt4/GuiPrefs.cpp:824 -#: src/frontends/qt4/GuiPrefs.cpp:919 +#: src/frontends/qt4/ui/BiblioUi.ui:397 +#: src/frontends/qt4/ui/PrefLatexUi.ui:120 +#: src/frontends/qt4/ui/PrefLatexUi.ui:222 src/frontends/qt4/GuiPrefs.cpp:850 +#: src/frontends/qt4/GuiPrefs.cpp:985 msgid "Op&tions:" -msgstr "&MoΕΎnosti:" +msgstr "MoΕΎnos&ti:" #: src/frontends/qt4/ui/PrefLatexUi.ui:209 msgid "Index command and options (makeindex, xindy)" @@ -3938,14 +3946,14 @@ msgstr "P&rΓ­kaz nomenklatΓΊry:" msgid "Command and options for nomencl (usually makeindex)" msgstr "PrΓ­kaz a voΔΎby pre nomenklatΓΊru (beΕΎne makeindex)" -#: src/frontends/qt4/ui/PrefLatexUi.ui:265 -msgid "Chec&kTeX command:" -msgstr "PrΓ­kaz Chec&kTeX:" - #: src/frontends/qt4/ui/PrefLatexUi.ui:275 msgid "CheckTeX start options and flags" msgstr "ZačiatočnΓ© voΔΎby a indikΓ‘tory pre CheckTeX" +#: src/frontends/qt4/ui/PrefLatexUi.ui:299 +msgid "&CheckTeX command:" +msgstr "PrΓ­kaz Chec&kTeX:" + #: src/frontends/qt4/ui/PrefLatexUi.ui:285 msgid "" "Select whether LyX should output Windows or Cygwin style paths to LaTeX " @@ -29058,6 +29066,10 @@ msgstr "KlΓ‘vesnica/MyΕ‘" msgid "Input Completion" msgstr "Doplňovanie" +#: src/frontends/qt4/GuiPrefs.cpp:784 src/frontends/qt4/GuiPrefs.cpp:934 +msgid "C&ommand:" +msgstr "PrΓ­kaz:" + #: src/frontends/qt4/GuiPrefs.cpp:783 src/frontends/qt4/GuiPrefs.cpp:808 #: src/frontends/qt4/GuiPrefs.cpp:896 src/frontends/qt4/GuiPrefs.cpp:923 msgid "Co&mmand:" @@ -30653,10 +30665,6 @@ msgstr "" msgid "Biblatex" msgstr "Biblatex" -#: src/insets/InsetBibtex.cpp:152 -msgid "BibTex" -msgstr "BibTeX" - #: src/insets/InsetBibtex.cpp:153 #, c-format msgid "" @@ -32244,6 +32252,15 @@ msgstr "" msgid "Unknown user" msgstr "NeznΓ‘my pouΕΎΓ­vateΔΎ" +#~ msgid "Sty&le engine:" +#~ msgstr "Obsluha Ε tΓ½&lu:" + +#~ msgid "BibTex" +#~ msgstr "BibTeX" + +#~ msgid "Pr&ocessor:" +#~ msgstr "&GenerΓ‘tor:" + #~ msgid "Use BibTeX's default numerical styles" #~ msgstr "PouΕΎiΕ₯ Ε‘tandardnΓ© BibTeX numerickΓ© Ε‘tΓ½ly" @@ -36286,3 +36303,20 @@ msgstr "NeznΓ‘my pouΕΎΓ­vateΔΎ" #~ msgstr "" #~ "VloΕΎka BibTeX-u zahrňuje %1$s databΓ‘zy.\n" #~ "Keď budete pokračovaΕ₯, budΓΊ vΕ‘etky otvorenΓ©." + +#~ msgid "Here you can enter further options of the biblatex package" +#~ msgstr "Tu mΓ΄ΕΎte vloΕΎiΕ₯ ďalΕ‘ie voΔΎby balΓ­ka biblatex" + +#~ msgid "Chec&kTeX command:" +#~ msgstr "PrΓ­kaz Chec&kTeX:" + +#~ msgid "" +#~ "A selection of different style engines (such as natbib) that respectively " +#~ "provide support for specific citytion and bibliography styles. Expand to get " +#~ "more information." +#~ msgstr "" +#~ "VΓ½ber inej obsluhy (ako napr. natbib) ktorΓ‘ poskytuje podporu Ε‘pecifickΓ½ch " +#~ "bibliografickΓ½ch Ε‘tΓ½lov. Rozviňte keď chcete viac informΓ‘ciΓ­." + +#~ msgid "&Biblatex citation style:" +#~ msgstr "Ε tΓ½l &biblatex-citΓ‘cie:" From cb6ea902566e064185fecf11c870b8df55939c9f Mon Sep 17 00:00:00 2001 From: Richard Heck Date: Sat, 14 Jan 2017 16:12:58 -0500 Subject: [PATCH 2/9] Section and Section* should have the same font size. Going with normal corresponds better to how the PDF displays. --- lib/layouts/amsart.layout | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/layouts/amsart.layout b/lib/layouts/amsart.layout index 1f704bd522..86fed14a51 100644 --- a/lib/layouts/amsart.layout +++ b/lib/layouts/amsart.layout @@ -77,7 +77,7 @@ Style Section* Font Series Medium Shape Smallcaps - Size Large + Size Normal EndFont End From 809b8b62a43f7dc18fef9b28759007456c586931 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=BCnter=20Milde?= Date: Sat, 14 Jan 2017 22:43:37 +0100 Subject: [PATCH 3/9] Add FontEncoding to language descriptions. Add FontEncoding tag for all languages with 8-bit hyphenation patterns requiring a specific font encoding. No FontEncoding tag means the language is either not supported with Babel or accepts both, OT1 and standard text encodings. Prerequisite for fontenc="auto" (ticket #9741) --- lib/languages | 69 ++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 60 insertions(+), 9 deletions(-) diff --git a/lib/languages b/lib/languages index 8ec526e9b1..0b272c4b3f 100644 --- a/lib/languages +++ b/lib/languages @@ -70,7 +70,10 @@ # If True, LyX cares for characters/macros that do not exist in # some font encodings ("<", ">", "|" and straight quote). # It is not required for standard encodings like T2A. See bug #5091. -# * "FontEncoding none" tells LyX that fontenc should not be loaded with this +# * FontEncoding is the required font encoding for correct hyphenation with +# 8-bit TeX (http://www.hyphenation.org ). +# If not given, all standard text encodings as well as OT1 work. +# "FontEncoding none" tells LyX that fontenc should not be loaded with this # language. # * AsBabelOptions advices LyX to pass the languages locally to babel, not # globally to the class. Some languages (basically those not directly @@ -120,6 +123,7 @@ Language afrikaans BabelName afrikaans QuoteStyle polish Encoding iso8859-15 + FontEncoding T1 LangCode af_ZA End @@ -129,6 +133,7 @@ Language albanian PolyglossiaName albanian QuoteStyle swiss Encoding iso8859-2 + # FontEncoding ?? (no hyphenation support?) LangCode sq_AL End @@ -186,7 +191,7 @@ Language arabic_arabi PolyglossiaName arabic QuoteStyle french Encoding cp1256 - FontEncoding "LFE,LAE" + FontEncoding LAE RTL true AsBabelOptions true LangCode ar_SA @@ -210,6 +215,7 @@ Language asturian LangCode ast_ES End + Language australian GuiName "English (Australia)" BabelName australian @@ -229,6 +235,7 @@ Language austrian PolyglossiaOpts "variant=austrian,spelling=old,babelshorthands=true" QuoteStyle german Encoding iso8859-15 + FontEncoding T1 LangCode de_AT End @@ -241,6 +248,7 @@ Language naustrian PolyglossiaOpts "variant=austrian,spelling=new,babelshorthands=true" QuoteStyle german Encoding iso8859-15 + FontEncoding T1 LangCode de_AT End @@ -270,6 +278,7 @@ Language basque PolyglossiaName basque QuoteStyle swiss Encoding iso8859-15 + FontEncoding T1 LangCode eu_ES PostBabelPreamble \addto\extrasbasque{\bbl@deactivate{~}} @@ -282,6 +291,7 @@ Language belarusian BabelName belarusian QuoteStyle french Encoding cp1251 + FontEncoding T2A LangCode be_BY AsBabelOptions true End @@ -292,6 +302,7 @@ Language bosnian BabelName bosnian QuoteStyle polish Encoding iso8859-2 + FontEncoding T1 LangCode bs_BA End @@ -302,6 +313,7 @@ Language brazilian PolyglossiaName brazil QuoteStyle english Encoding iso8859-15 + FontEncoding T1 LangCode pt_BR End @@ -355,6 +367,7 @@ Language canadien # PolyglossiaOpts "variant=canadien" QuoteStyle french Encoding iso8859-15 + FontEncoding T1 LangCode fr_CA End @@ -366,6 +379,7 @@ Language catalan PolyglossiaOpts "babelshorthands=true" QuoteStyle french Encoding iso8859-15 + FontEncoding T1 LangCode ca_ES End @@ -403,6 +417,7 @@ Language croatian PolyglossiaName croatian QuoteStyle polish Encoding iso8859-2 + FontEncoding T1 LangCode hr_HR End @@ -413,6 +428,7 @@ Language czech PolyglossiaName czech QuoteStyle german Encoding iso8859-2 + FontEncoding T1 LangCode cs_CZ End @@ -423,6 +439,7 @@ Language danish PolyglossiaName danish QuoteStyle danish Encoding iso8859-15 + FontEncoding T1 LangCode da_DK End @@ -442,6 +459,7 @@ Language dutch PolyglossiaOpts "babelshorthands=true" QuoteStyle polish Encoding iso8859-15 + FontEncoding T1 LangCode nl_NL End @@ -464,6 +482,7 @@ Language esperanto PolyglossiaName esperanto QuoteStyle english Encoding iso8859-3 + FontEncoding IL3 LangCode eo_EO End @@ -473,6 +492,7 @@ Language estonian PolyglossiaName estonian QuoteStyle german Encoding iso8859-15 + FontEncoding T1 LangCode et_EE PostBabelPreamble \addto\extrasestonian{\bbl@deactivate{~}} @@ -486,7 +506,7 @@ Language farsi BabelName farsi PolyglossiaName farsi Encoding utf8 - FontEncoding "LFE,LAE" + FontEncoding LFE RTL true LangCode fa_IR QuoteStyle english @@ -503,6 +523,7 @@ Language finnish PolyglossiaName finnish QuoteStyle swedish Encoding iso8859-15 + FontEncoding T1 LangCode fi_FI End @@ -514,6 +535,7 @@ Language french PolyglossiaName french QuoteStyle french Encoding iso8859-15 + FontEncoding T1 LangCode fr_FR PostBabelPreamble \addto\extrasfrench{% @@ -530,6 +552,7 @@ Language friulan PolyglossiaName friulan QuoteStyle french Encoding iso8859-15 + FontEncoding T1 LangCode fur_IT End @@ -540,6 +563,7 @@ Language galician PolyglossiaName galician QuoteStyle french Encoding iso8859-15 + FontEncoding T1 LangCode gl_ES PostBabelPreamble \addto\shorthandsgalician{\galiciandeactivate{~}} @@ -563,6 +587,7 @@ Language german PolyglossiaOpts "variant=german,spelling=old,babelshorthands=true" QuoteStyle german Encoding iso8859-15 + FontEncoding T1 LangCode de LangVariety alt End @@ -575,6 +600,7 @@ Language ngerman PolyglossiaOpts "variant=german,spelling=new,babelshorthands=true" QuoteStyle german Encoding iso8859-15 + FontEncoding T1 LangCode de_DE End @@ -589,6 +615,7 @@ Language german-ch PolyglossiaOpts "variant=swiss,spelling=new,babelshorthands=true" QuoteStyle swiss Encoding iso8859-15 + FontEncoding T1 LangCode de_CH End @@ -602,6 +629,7 @@ Language german-ch-old PolyglossiaOpts "variant=swiss,spelling=old,babelshorthands=true" QuoteStyle swiss Encoding iso8859-15 + FontEncoding T1 LangCode de_CH End @@ -671,6 +699,7 @@ Language icelandic PolyglossiaName icelandic QuoteStyle german Encoding iso8859-15 + FontEncoding T1 LangCode is_IS End @@ -692,6 +721,7 @@ Language irish PolyglossiaName irish QuoteStyle english Encoding iso8859-15 + FontEncoding T1 LangCode ga_IE End @@ -743,9 +773,10 @@ End # not yet supported by polyglossia # not supported by babel Language kazakh - GuiName "Kazakh" - Encoding ascii - LangCode kk_KZ + GuiName "Kazakh" + Encoding ascii + FontEncoding T2A + LangCode kk_KZ PostBabelPreamble \input{t2aenc.def} \AtBeginDocument{\fontencoding{T2A}\selectfont} @@ -773,6 +804,7 @@ Language kurmanji GuiName "Kurmanji" BabelName kurmanji Encoding utf8 + FontEncoding T1 LangCode kmr AsBabelOptions true End @@ -792,6 +824,7 @@ Language latin BabelName latin PolyglossiaName latin Encoding iso8859-15 + FontEncoding T1 LangCode la_LA End @@ -803,7 +836,7 @@ Language latvian PolyglossiaName latvian QuoteStyle german Encoding iso8859-4 -# FontEncoding L7x # (required for hyphenation but not set by babel) + FontEncoding L7x # (required for hyphenation but not set by babel) LangCode lv_LV AsBabelOptions true End @@ -827,6 +860,7 @@ Language lowersorbian PolyglossiaName lsorbian QuoteStyle german Encoding iso8859-2 + FontEncoding T1 LangCode dsb_DE End @@ -837,6 +871,7 @@ Language magyar PolyglossiaName magyar QuoteStyle polish Encoding iso8859-2 + FontEncoding T1 LangCode hu_HU End @@ -887,6 +922,7 @@ Language norsk PolyglossiaName norsk QuoteStyle swiss Encoding iso8859-15 + FontEncoding T1 LangCode nb_NO End @@ -897,6 +933,7 @@ Language nynorsk PolyglossiaName nynorsk QuoteStyle swiss Encoding iso8859-15 + FontEncoding T1 LangCode nn_NO End @@ -939,7 +976,7 @@ Language polish PolyglossiaName polish QuoteStyle polish Encoding iso8859-2 -# FontEncoding QX # (required for hyphenation but not set by babel) + FontEncoding QX # (required for hyphenation but not set by babel) LangCode pl_PL End @@ -950,6 +987,7 @@ Language portuguese PolyglossiaName portuges QuoteStyle french Encoding iso8859-15 + FontEncoding T1 LangCode pt_PT End @@ -960,6 +998,7 @@ Language romanian PolyglossiaName romanian QuoteStyle polish Encoding iso8859-16 + FontEncoding T1 LangCode ro_RO End @@ -989,6 +1028,7 @@ Language samin BabelName samin PolyglossiaName samin Encoding iso8859-15 + FontEncoding T1 LangCode se_NO End @@ -1033,6 +1073,7 @@ Language serbian-latin PolyglossiaOpts "script=Latin" QuoteStyle polish Encoding iso8859-2 + FontEncoding T1 LangCode sr_RS-Latin End @@ -1043,6 +1084,7 @@ Language slovak PolyglossiaName slovak QuoteStyle german Encoding iso8859-2 + FontEncoding T1 LangCode sk_SK End @@ -1052,6 +1094,7 @@ Language slovene PolyglossiaName slovenian QuoteStyle german Encoding iso8859-2 + FontEncoding T1 LangCode sl_SI End @@ -1062,6 +1105,7 @@ Language spanish PolyglossiaName spanish QuoteStyle french Encoding iso8859-15 + FontEncoding T1 LangCode es_ES PostBabelPreamble \addto\shorthandsspanish{\spanishdeactivate{~<>}} @@ -1075,6 +1119,7 @@ Language spanish-mexico PolyglossiaName spanish QuoteStyle french Encoding iso8859-15 + FontEncoding T1 LangCode es_MX PostBabelPreamble \addto\shorthandsspanish{\spanishdeactivate{~<>.}} @@ -1088,6 +1133,7 @@ Language swedish PolyglossiaName swedish QuoteStyle swedish Encoding iso8859-15 + FontEncoding T1 LangCode sv_SE End @@ -1122,7 +1168,7 @@ Language thai PolyglossiaName thai QuoteStyle english Encoding tis620-0 -# FontEncoding LTH + FontEncoding LTH LangCode th_TH PostBabelPreamble \usepackage{thswitch} @@ -1144,6 +1190,7 @@ Language turkish PolyglossiaName turkish QuoteStyle english Encoding iso8859-9 + FontEncoding T1 LangCode tr_TR PostBabelPreamble \usepackage{xkeyval} @@ -1158,6 +1205,7 @@ Language turkmen PolyglossiaName turkmen QuoteStyle swiss Encoding utf8 + FontEncoding T1 LangCode tk_TM AsBabelOptions true End @@ -1179,6 +1227,7 @@ Language uppersorbian PolyglossiaName usorbian QuoteStyle german Encoding iso8859-2 + FontEncoding T1 LangCode hsb_DE End @@ -1200,6 +1249,7 @@ Language vietnamese PolyglossiaName vietnamese QuoteStyle english Encoding utf8 + FontEncoding T5 LangCode vi_VN AsBabelOptions true Requires vietnamese @@ -1211,5 +1261,6 @@ Language welsh PolyglossiaName welsh QuoteStyle british Encoding iso8859-15 + FontEncoding T1 LangCode cy_GB End From fd14b6f5a31d047b5217449d25649fd1f7eb04c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=BCnter=20Milde?= Date: Sat, 14 Jan 2017 22:44:46 +0100 Subject: [PATCH 4/9] Document changes to configure.py. --- lib/RELEASE-NOTES | 2 ++ lib/configure.py | 1 + 2 files changed, 3 insertions(+) diff --git a/lib/RELEASE-NOTES b/lib/RELEASE-NOTES index 875c095cfa..8debb19b16 100644 --- a/lib/RELEASE-NOTES +++ b/lib/RELEASE-NOTES @@ -72,8 +72,10 @@ !!Changes with respect to external programs and libraries in 2.3: + * Inkscape SVG with separate LaTeX + PDF output is experimentally supported. +* Add some editor/viewer applications to (re)configure checks. !!Known issues in version 2.3.0 diff --git a/lib/configure.py b/lib/configure.py index 3d4c0cff07..e43e1b5774 100644 --- a/lib/configure.py +++ b/lib/configure.py @@ -686,6 +686,7 @@ def checkFormatEntries(dtl_tools): \Format eps3 eps "EPS (cropped)" "" "%%" "" "document" "" \Format ps ps Postscript t "%%" "" "document,vector,menu=export" "application/postscript"''']) # for xdg-open issues look here: http://www.mail-archive.com/lyx-devel@lists.lyx.org/msg151818.html + # maybe use "bestApplication()" from https://github.com/jleclanche/python-mime # the MIME type is set for pdf6, because that one needs to be autodetectable by libmime checkViewer('a PDF previewer', ['pdfview', 'kpdf', 'okular', 'qpdfview --unique', From bd1ce03b407856b0126e3684183696a50e657811 Mon Sep 17 00:00:00 2001 From: Guillaume Munch Date: Wed, 11 Jan 2017 21:03:47 +0100 Subject: [PATCH 5/9] Two separators collapse into one It seems guaranteed by the Qt docs that two menu separators collapse into one. This allows this little simplification. --- src/frontends/qt4/Menus.cpp | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/src/frontends/qt4/Menus.cpp b/src/frontends/qt4/Menus.cpp index 9887093255..2a3032c4da 100644 --- a/src/frontends/qt4/Menus.cpp +++ b/src/frontends/qt4/Menus.cpp @@ -1703,7 +1703,7 @@ void MenuDefinition::expandQuotes(BufferView const * bv) { if (!bv) return; - + if (!bv->cursor().inTexted()) return; @@ -1719,7 +1719,7 @@ void MenuDefinition::expandQuotes(BufferView const * bv) map styles = quoteparams.getTypes(); string const qtype = qinset->getType(); - + map::const_iterator qq = styles.begin(); map::const_iterator end = styles.end(); @@ -1768,7 +1768,7 @@ void MenuDefinition::expandQuotes(BufferView const * bv) docstring const style = from_ascii(qq->first); bool langdef = (style[0] == langqs); bool globaldef = (style[0] == globalqsc); - + if (prefixIs(style, qtype[0])) { FuncRequest cmd = FuncRequest(LFUN_INSET_MODIFY, subcmd + style); docstring const desc = quoteparams.getShortGuiLabel(style); @@ -1786,7 +1786,6 @@ void MenuDefinition::expandQuotes(BufferView const * bv) add(MenuItem(MenuItem::Separator)); - bool have_section = false; bool display_static = false; // ... then potentially items to reset to the defaults and to dynamic style ... if (!main_dynamic_qs && globalqsc != 'x') { @@ -1794,7 +1793,6 @@ void MenuDefinition::expandQuotes(BufferView const * bv) docstring const desc = bformat(_("Use dynamic quotes (%1$s)|d"), quoteparams.getGuiLabel(globalqs)); add(MenuItem(MenuItem::Command, toqstr(desc), cmd)); - have_section = true; display_static = true; } if (!main_global_qs && langdefqs != globalqs) { @@ -1803,7 +1801,6 @@ void MenuDefinition::expandQuotes(BufferView const * bv) docstring const desc = bformat(_("Reset to document default (%1$s, %2$s)|o"), quoteparams.getGuiLabel(globalqs), variant); add(MenuItem(MenuItem::Command, toqstr(desc), cmd)); - have_section = true; } if (!main_langdef_qs) { FuncRequest cmd = FuncRequest(LFUN_INSET_MODIFY, subcmd + globalqsc + wildcards); @@ -1813,11 +1810,9 @@ void MenuDefinition::expandQuotes(BufferView const * bv) : bformat(_("Reset to language default (%1$s)|l"), quoteparams.getGuiLabel(langdefqs)); add(MenuItem(MenuItem::Command, toqstr(desc), cmd)); - have_section = true; } - if (have_section) - add(MenuItem(MenuItem::Separator)); + add(MenuItem(MenuItem::Separator)); // ... and a subitem with the rest MenuItem item(MenuItem::Submenu, qt_("Change Style|y")); From 54f5100e74788ba20d8e360cbaaaf6bfdc85266f Mon Sep 17 00:00:00 2001 From: Guillaume Munch Date: Wed, 11 Jan 2017 23:36:20 +0100 Subject: [PATCH 6/9] Simplify The main point is the flag which is much simpler now. --- src/Changes.cpp | 106 ++++++++++++++++-------------------------------- src/Changes.h | 10 ++--- 2 files changed, 41 insertions(+), 75 deletions(-) diff --git a/src/Changes.cpp b/src/Changes.cpp index 90ad07501a..5a803c21e8 100644 --- a/src/Changes.cpp +++ b/src/Changes.cpp @@ -145,8 +145,6 @@ void Changes::set(Change const & change, pos_type const start, pos_type const en << ", author: " << change.author << ", time: " << long(change.changetime) << ") in range (" << start << ", " << end << ")"); - if (!isChanged()) - is_update_required_ = true; } Range const newRange(start, end); @@ -215,16 +213,13 @@ void Changes::erase(pos_type const pos) { LYXERR(Debug::CHANGES, "Erasing change at position " << pos); - ChangeTable::iterator it = table_.begin(); - ChangeTable::iterator end = table_.end(); - - for (; it != end; ++it) { + for (ChangeRange & cr : table_) { // range (pos,pos+x) becomes (pos,pos+x-1) - if (it->range.start > pos) - --(it->range.start); + if (cr.range.start > pos) + --(cr.range.start); // range (pos-x,pos) stays (pos-x,pos) - if (it->range.end > pos) - --(it->range.end); + if (cr.range.end > pos) + --(cr.range.end); } merge(); @@ -238,17 +233,14 @@ void Changes::insert(Change const & change, lyx::pos_type pos) << " at position " << pos); } - ChangeTable::iterator it = table_.begin(); - ChangeTable::iterator end = table_.end(); - - for (; it != end; ++it) { + for (ChangeRange & cr : table_) { // range (pos,pos+x) becomes (pos+1,pos+x+1) - if (it->range.start >= pos) - ++(it->range.start); + if (cr.range.start >= pos) + ++(cr.range.start); // range (pos-x,pos) stays as it is - if (it->range.end > pos) - ++(it->range.end); + if (cr.range.end > pos) + ++(cr.range.end); } set(change, pos, pos + 1); // set will call merge @@ -258,70 +250,52 @@ void Changes::insert(Change const & change, lyx::pos_type pos) Change const & Changes::lookup(pos_type const pos) const { static Change const noChange = Change(Change::UNCHANGED); - - ChangeTable::const_iterator it = table_.begin(); - ChangeTable::const_iterator const end = table_.end(); - - for (; it != end; ++it) { - if (it->range.contains(pos)) - return it->change; - } - + for (ChangeRange const & cr : table_) + if (cr.range.contains(pos)) + return cr.change; return noChange; } bool Changes::isDeleted(pos_type start, pos_type end) const { - ChangeTable::const_iterator it = table_.begin(); - ChangeTable::const_iterator const itend = table_.end(); - - for (; it != itend; ++it) { - if (it->range.contains(Range(start, end))) { + for (ChangeRange const & cr : table_) + if (cr.range.contains(Range(start, end))) { LYXERR(Debug::CHANGES, "range (" << start << ", " << end << ") fully contains (" - << it->range.start << ", " << it->range.end - << ") of type " << it->change.type); - return it->change.type == Change::DELETED; + << cr.range.start << ", " << cr.range.end + << ") of type " << cr.change.type); + return cr.change.type == Change::DELETED; } - } return false; } bool Changes::isChanged(pos_type const start, pos_type const end) const { - ChangeTable::const_iterator it = table_.begin(); - ChangeTable::const_iterator const itend = table_.end(); - - for (; it != itend; ++it) { - if (it->range.intersects(Range(start, end))) { + for (ChangeRange const & cr : table_) + if (cr.range.intersects(Range(start, end))) { LYXERR(Debug::CHANGES, "found intersection of range (" << start << ", " << end << ") with (" - << it->range.start << ", " << it->range.end - << ") of type " << it->change.type); + << cr.range.start << ", " << cr.range.end + << ") of type " << cr.change.type); return true; } - } return false; } bool Changes::isChanged() const { - ChangeTable::const_iterator it = table_.begin(); - ChangeTable::const_iterator const itend = table_.end(); - for (; it != itend; ++it) { - if (it->change.changed()) + for (ChangeRange const & cr : table_) + if (cr.change.changed()) return true; - } return false; } void Changes::merge() { - bool merged = false; ChangeTable::iterator it = table_.begin(); while (it != table_.end()) { @@ -334,7 +308,6 @@ void Changes::merge() << it->range.start); table_.erase(it); - merged = true; // start again it = table_.begin(); continue; @@ -353,7 +326,6 @@ void Changes::merge() (it + 1)->change.changetime = max(it->change.changetime, (it + 1)->change.changetime); table_.erase(it); - merged = true; // start again it = table_.begin(); continue; @@ -361,8 +333,6 @@ void Changes::merge() ++it; } - if (merged && !isChanged()) - is_update_required_ = true; } @@ -498,11 +468,9 @@ void Changes::lyxMarkChange(ostream & os, BufferParams const & bparams, int & co void Changes::checkAuthors(AuthorList const & authorList) { - ChangeTable::const_iterator it = table_.begin(); - ChangeTable::const_iterator endit = table_.end(); - for ( ; it != endit ; ++it) - if (it->change.type != Change::UNCHANGED) - authorList.get(it->change.author).setUsed(true); + for (ChangeRange const & cr : table_) + if (cr.change.type != Change::UNCHANGED) + authorList.get(cr.change.author).setUsed(true); } @@ -516,11 +484,9 @@ void Changes::addToToc(DocIterator const & cdit, Buffer const & buffer, AuthorList const & author_list = buffer.params().authors(); DocIterator dit = cdit; - ChangeTable::const_iterator it = table_.begin(); - ChangeTable::const_iterator const itend = table_.end(); - for (; it != itend; ++it) { + for (ChangeRange const & cr : table_) { docstring str; - switch (it->change.type) { + switch (cr.change.type) { case Change::UNCHANGED: continue; case Change::DELETED: @@ -532,13 +498,13 @@ void Changes::addToToc(DocIterator const & cdit, Buffer const & buffer, str.push_back(0x270d); break; } - dit.pos() = it->range.start; + dit.pos() = cr.range.start; Paragraph const & par = dit.paragraph(); - str += " " + par.asString(it->range.start, min(par.size(), it->range.end)); - if (it->range.end > par.size()) + str += " " + par.asString(cr.range.start, min(par.size(), cr.range.end)); + if (cr.range.end > par.size()) // ΒΆ U+00B6 PILCROW SIGN str.push_back(0xb6); - docstring const & author = author_list.get(it->change.author).name(); + docstring const & author = author_list.get(cr.change.author).name(); Toc::iterator it = TocBackend::findItem(*change_list, 0, author); if (it == change_list->end()) { change_list->push_back(TocItem(dit, 0, author, true)); @@ -556,9 +522,9 @@ void Changes::addToToc(DocIterator const & cdit, Buffer const & buffer, void Changes::updateBuffer(Buffer const & buf) { - is_update_required_ = false; - if (!buf.areChangesPresent() && isChanged()) - buf.setChangesPresent(true); + bool const changed = isChanged(); + buf.setChangesPresent(buf.areChangesPresent() || changed); + previously_changed_ = changed; } diff --git a/src/Changes.h b/src/Changes.h index ea6e4b3931..f2fa1a4d9f 100644 --- a/src/Changes.h +++ b/src/Changes.h @@ -94,7 +94,7 @@ class BufferParams; class Changes { public: - Changes() : is_update_required_(false) {} + Changes() : previously_changed_(false) {} /// set the pos to the given change void set(Change const & change, pos_type pos); @@ -142,7 +142,7 @@ public: /// void updateBuffer(Buffer const & buf); /// - bool isUpdateRequired() const { return is_update_required_; } + bool isUpdateRequired() const { return previously_changed_ != isChanged(); } private: class Range { @@ -187,9 +187,9 @@ private: /// table of changes, every row a change and range descriptor ChangeTable table_; - /// signals that the buffer's flag tracked_changes_present_ needs to be - /// recalculated - bool is_update_required_; + /// cache previous value of isChanged to be able to tell whether the + /// buffer's flag tracked_changes_present_ needs to be recomputed + bool previously_changed_; }; From 461fda9ca9a8079f235fe6d26031aa6b9c5ff36e Mon Sep 17 00:00:00 2001 From: Guillaume Munch Date: Sat, 14 Jan 2017 18:40:58 +0100 Subject: [PATCH 7/9] Collect the outliner names for the children's tocs Fixes missing outliner names in various situations. Now if the warning "Missing outliner name" appears in the console, this correctly hints at an actual issue with the layout. --- src/TextClass.cpp | 12 ------- src/TextClass.h | 6 ++-- src/TocBackend.cpp | 54 ++++++++++++++++++++++++++++++-- src/TocBackend.h | 8 ++++- src/frontends/qt4/Menus.cpp | 3 +- src/frontends/qt4/TocModel.cpp | 5 +-- src/frontends/qt4/qt_helpers.cpp | 42 ------------------------- src/frontends/qt4/qt_helpers.h | 4 --- src/insets/InsetInclude.cpp | 15 ++++++--- 9 files changed, 79 insertions(+), 70 deletions(-) diff --git a/src/TextClass.cpp b/src/TextClass.cpp index 5d01b9d219..9b25a67b18 100644 --- a/src/TextClass.cpp +++ b/src/TextClass.cpp @@ -1416,18 +1416,6 @@ bool TextClass::readOutlinerName(Lexer & lexrc) } -docstring TextClass::outlinerName(std::string const & type) const -{ - std::map::const_iterator const it - = outliner_names_.find(type); - if (it == outliner_names_.end()) { - LYXERR0("Missing OutlinerName for " << type << "!"); - return translateIfPossible(from_utf8(type)); - } else - return translateIfPossible(it->second); -} - - string const & TextClass::prerequisites(string const & sep) const { if (contains(prerequisites_, ',')) { diff --git a/src/TextClass.h b/src/TextClass.h index da217a57aa..56a61da48f 100644 --- a/src/TextClass.h +++ b/src/TextClass.h @@ -205,8 +205,10 @@ public: OutputType outputType() const { return outputType_; } /// Can be latex, docbook ... (the name of a format) std::string outputFormat() const { return outputFormat_; } - /// - docstring outlinerName(std::string const & type) const; + /// Return the non-localised names for the toc types. + std::map const & + outlinerNames() const { return outliner_names_; } + protected: /// Protect construction TextClass(); diff --git a/src/TocBackend.cpp b/src/TocBackend.cpp index 1c1606608e..4630d85b9d 100644 --- a/src/TocBackend.cpp +++ b/src/TocBackend.cpp @@ -17,6 +17,7 @@ #include "Buffer.h" #include "BufferParams.h" +#include "IndicesList.h" #include "InsetList.h" #include "Paragraph.h" #include "TextClass.h" @@ -213,6 +214,7 @@ void TocBackend::update(bool output_active, UpdateType utype) it->second->clear(); tocs_.clear(); builders_.clear(); + resetOutlinerNames(); if (!buffer_->isInternal()) { DocIterator dit; buffer_->inset().addToToc(dit, output_active, utype); @@ -249,8 +251,56 @@ void TocBackend::writePlaintextTocList(string const & type, docstring TocBackend::outlinerName(string const & type) const { - return translateIfPossible( - buffer_->params().documentClass().outlinerName(type)); + map::const_iterator const it + = outliner_names_.find(type); + if (it != outliner_names_.end()) + return it->second; + + // Legacy treatment of index:... type + if (support::prefixIs(type, "index:")) { + string const itype = support::split(type, ':'); + IndicesList const & indiceslist = buffer_->params().indiceslist(); + Index const * index = indiceslist.findShortcut(from_utf8(itype)); + docstring indextype = _("unknown type!"); + if (index) + indextype = index->index(); + return support::bformat(_("Index Entries (%1$s)"), indextype); + } + + LYXERR0("Missing OutlinerName for " << type << "!"); + return from_utf8(type); +} + + +void TocBackend::resetOutlinerNames() +{ + outliner_names_.clear(); + // names from this document class + for (pair const & name + : buffer_->params().documentClass().outlinerNames()) + addName(name.first, translateIfPossible(name.second)); + // Hardcoded types + addName("tableofcontents", _("Table of Contents")); + addName("change", _("Changes")); + addName("senseless", _("Senseless")); + addName("citation", _("Citations")); + addName("label", _("Labels and References")); + // Customizable, but the corresponding insets have no layout definition + addName("child", _("Child Documents")); + addName("graphics", _("Graphics")); + addName("equation", _("Equations")); + addName("external", _("External Material")); + addName("math-macro", _("Math Macros")); + addName("nomencl", _("Nomenclature Entries")); +} + + +void TocBackend::addName(string const & type, docstring const & name) +{ + if (name.empty()) + return; + // only inserts if the key does not exist + outliner_names_.insert({type, name}); } diff --git a/src/TocBackend.h b/src/TocBackend.h index 3f2ee419c0..a38a972834 100644 --- a/src/TocBackend.h +++ b/src/TocBackend.h @@ -133,17 +133,23 @@ public: /// void writePlaintextTocList(std::string const & type, odocstringstream & os, size_t max_length) const; - /// + /// Localised name for type docstring outlinerName(std::string const & type) const; + /// Add a new (localised) name if yet unknown + void addName(std::string const & type, docstring const & name); /// Whether a toc type is less important and appears in the "Other lists" /// submenu static bool isOther(std::string const & type); private: + /// + void resetOutlinerNames(); /// TocList tocs_; /// std::map> builders_; + /// Stores localised outliner names from this buffer and its children + std::map outliner_names_; /// Buffer const * buffer_; }; // TocBackend diff --git a/src/frontends/qt4/Menus.cpp b/src/frontends/qt4/Menus.cpp index 2a3032c4da..249d742013 100644 --- a/src/frontends/qt4/Menus.cpp +++ b/src/frontends/qt4/Menus.cpp @@ -1320,7 +1320,8 @@ void MenuDefinition::expandToc(Buffer const * buf) continue; MenuDefinition submenu; submenu.expandTocSubmenu(cit->first, *cit->second); - MenuItem item(MenuItem::Submenu, guiName(cit->first, buf->params())); + docstring const toc_name = buf->tocBackend().outlinerName(cit->first); + MenuItem item(MenuItem::Submenu, toqstr(toc_name)); item.setSubmenu(submenu); // deserves to be in the main menu? if (!TocBackend::isOther(cit->first)) diff --git a/src/frontends/qt4/TocModel.cpp b/src/frontends/qt4/TocModel.cpp index e40d99c9cb..03dbf38671 100644 --- a/src/frontends/qt4/TocModel.cpp +++ b/src/frontends/qt4/TocModel.cpp @@ -351,7 +351,8 @@ void TocModels::reset(BufferView const * bv) names_->blockSignals(true); names_->beginResetModel(); names_->insertColumns(0, 1); - TocList const & tocs = bv->buffer().masterBuffer()->tocBackend().tocs(); + TocBackend const & backend = bv->buffer().masterBuffer()->tocBackend(); + TocList const & tocs = backend.tocs(); TocList::const_iterator it = tocs.begin(); TocList::const_iterator toc_end = tocs.end(); for (; it != toc_end; ++it) { @@ -364,7 +365,7 @@ void TocModels::reset(BufferView const * bv) mod_it.value()->reset(it->second); // Fill in the names_ model. - QString const gui_name = guiName(it->first, bv->buffer().params()); + QString const gui_name = toqstr(backend.outlinerName(it->first)); int const current_row = names_->rowCount(); names_->insertRows(current_row, 1); QModelIndex const index = names_->index(current_row, 0); diff --git a/src/frontends/qt4/qt_helpers.cpp b/src/frontends/qt4/qt_helpers.cpp index 2237d7d507..1e3befc79f 100644 --- a/src/frontends/qt4/qt_helpers.cpp +++ b/src/frontends/qt4/qt_helpers.cpp @@ -21,7 +21,6 @@ #include "BufferParams.h" #include "FloatList.h" -#include "IndicesList.h" #include "Language.h" #include "Length.h" #include "TextClass.h" @@ -596,47 +595,6 @@ QStringList fileFilters(QString const & desc) } -QString guiName(string const & type, BufferParams const & bp) -{ - // Hardcoded types - if (type == "tableofcontents") - return qt_("Table of Contents"); - if (type == "change") - return qt_("Changes"); - if (type == "senseless") - return qt_("Senseless"); - if (type == "citation") - return qt_("Citations"); - if (type == "label") - return qt_("Labels and References"); - // Customizable, but the corresponding insets have no layout definition - if (type == "child") - return qt_("Child Documents"); - if (type == "graphics") - return qt_("Graphics"); - if (type == "equation") - return qt_("Equations"); - if (type == "external") - return qt_("External material"); - if (type == "math-macro") - return qt_("Math macros"); - if (type == "nomencl") - return qt_("Nomenclature Entries"); - - if (prefixIs(type, "index:")) { - string const itype = split(type, ':'); - IndicesList const & indiceslist = bp.indiceslist(); - Index const * index = indiceslist.findShortcut(from_utf8(itype)); - docstring indextype = _("unknown type!"); - if (index) - indextype = index->index(); - return toqstr(bformat(_("Index Entries (%1$s)"), indextype)); - } - - return toqstr(bp.documentClass().outlinerName(type)); -} - - QString formatToolTip(QString text, int em) { // 1. QTooltip activates word wrapping only if mightBeRichText() diff --git a/src/frontends/qt4/qt_helpers.h b/src/frontends/qt4/qt_helpers.h index 9569d90f82..90f2017f43 100644 --- a/src/frontends/qt4/qt_helpers.h +++ b/src/frontends/qt4/qt_helpers.h @@ -191,10 +191,6 @@ QString getExtension(QString const & name); QString makeAbsPath(QString const & relpath, QString const & base); QString changeExtension(QString const & oldname, QString const & ext); -/// \return the display string associated with given type and buffer -/// parameter. -QString guiName(std::string const & type, BufferParams const & bp); - /// Format \param text for display as a ToolTip, breaking at lines of \param /// width ems. Note: this function is expensive. Better call it in a delayed /// manner, i.e. not to fill in a model (see for instance the function diff --git a/src/insets/InsetInclude.cpp b/src/insets/InsetInclude.cpp index 4e44ec8c87..c39b7d349f 100644 --- a/src/insets/InsetInclude.cpp +++ b/src/insets/InsetInclude.cpp @@ -1143,10 +1143,11 @@ void InsetInclude::addPreview(DocIterator const & /*inset_pos*/, void InsetInclude::addToToc(DocIterator const & cpit, bool output_active, UpdateType utype) const { + TocBackend & backend = buffer().tocBackend(); if (isListings(params())) { if (label_) label_->addToToc(cpit, output_active, utype); - TocBuilder & b = buffer().tocBackend().builder("listing"); + TocBuilder & b = backend.builder("listing"); b.pushItem(cpit, screenLabel(), output_active); InsetListingsParams p(to_utf8(params()["lstparams"])); b.argumentItem(from_utf8(p.getParamValue("caption"))); @@ -1154,7 +1155,7 @@ void InsetInclude::addToToc(DocIterator const & cpit, bool output_active, } else { Buffer const * const childbuffer = getChildBuffer(); - TocBuilder & b = buffer().tocBackend().builder("child"); + TocBuilder & b = backend.builder("child"); docstring str = childbuffer ? childbuffer->fileName().displayName() : from_ascii("?"); b.pushItem(cpit, str, output_active); @@ -1167,10 +1168,16 @@ void InsetInclude::addToToc(DocIterator const & cpit, bool output_active, childbuffer->tocBackend().update(output_active, utype); for(auto const & pair : childbuffer->tocBackend().tocs()) { string const & type = pair.first; - shared_ptr child_toc = pair.second; - shared_ptr toc = buffer().tocBackend().toc(type); + shared_ptr child_toc = pair.second; + shared_ptr toc = backend.toc(type); toc->insert(toc->end(), child_toc->begin(), child_toc->end()); } + //Copy missing outliner names (though the user has been warned against + //having different document class and module selection between master + //and child). + for (pair const & name + : childbuffer->params().documentClass().outlinerNames()) + backend.addName(name.first, translateIfPossible(name.second)); } } From 3391fed36a574fb729f243888258d1b6d45b0251 Mon Sep 17 00:00:00 2001 From: Guillaume Munch Date: Fri, 13 Jan 2017 11:06:48 +0100 Subject: [PATCH 8/9] Make the generation of children's tocs more robust Let the children directly access the TocBuilders, instead of concatenating after the fact. --- src/Changes.cpp | 4 ++-- src/Changes.h | 5 +++-- src/Paragraph.cpp | 6 +++--- src/Paragraph.h | 3 ++- src/TocBackend.cpp | 2 +- src/frontends/qt4/Menus.cpp | 20 ++++++++++---------- src/frontends/qt4/TocModel.cpp | 12 +++++------- src/insets/Inset.h | 6 +++++- src/insets/InsetArgument.cpp | 7 +++---- src/insets/InsetArgument.h | 2 +- src/insets/InsetCaption.cpp | 6 +++--- src/insets/InsetCaption.h | 3 ++- src/insets/InsetCaptionable.cpp | 6 +++--- src/insets/InsetCaptionable.h | 2 +- src/insets/InsetCitation.cpp | 4 ++-- src/insets/InsetCitation.h | 2 +- src/insets/InsetCollapsable.cpp | 8 ++++---- src/insets/InsetCollapsable.h | 2 +- src/insets/InsetExternal.cpp | 4 ++-- src/insets/InsetExternal.h | 2 +- src/insets/InsetGraphics.cpp | 4 ++-- src/insets/InsetGraphics.h | 2 +- src/insets/InsetInclude.cpp | 13 +++---------- src/insets/InsetInclude.h | 2 +- src/insets/InsetIndex.cpp | 6 +++--- src/insets/InsetIndex.h | 2 +- src/insets/InsetLabel.cpp | 4 ++-- src/insets/InsetLabel.h | 2 +- src/insets/InsetNomencl.cpp | 4 ++-- src/insets/InsetNomencl.h | 2 +- src/insets/InsetRef.cpp | 4 ++-- src/insets/InsetRef.h | 2 +- src/insets/InsetTabular.cpp | 8 ++++---- src/insets/InsetTabular.h | 4 ++-- src/insets/InsetText.cpp | 27 +++++++++++++++------------ src/insets/InsetText.h | 11 +++++++---- src/mathed/InsetMathHull.cpp | 6 +++--- src/mathed/InsetMathHull.h | 2 +- src/mathed/MathMacroTemplate.cpp | 5 +++-- src/mathed/MathMacroTemplate.h | 2 +- 40 files changed, 111 insertions(+), 107 deletions(-) diff --git a/src/Changes.cpp b/src/Changes.cpp index 5a803c21e8..5db28010fa 100644 --- a/src/Changes.cpp +++ b/src/Changes.cpp @@ -475,12 +475,12 @@ void Changes::checkAuthors(AuthorList const & authorList) void Changes::addToToc(DocIterator const & cdit, Buffer const & buffer, - bool output_active) const + bool output_active, TocBackend & backend) const { if (table_.empty()) return; - shared_ptr change_list = buffer.tocBackend().toc("change"); + shared_ptr change_list = backend.toc("change"); AuthorList const & author_list = buffer.params().authors(); DocIterator dit = cdit; diff --git a/src/Changes.h b/src/Changes.h index f2fa1a4d9f..5bded171ac 100644 --- a/src/Changes.h +++ b/src/Changes.h @@ -29,10 +29,11 @@ namespace lyx { class AuthorList; class Buffer; class DocIterator; +class FontInfo; class OutputParams; class otexstream; class PainterInfo; -class FontInfo; +class TocBackend; class Change { @@ -137,7 +138,7 @@ public: /// void addToToc(DocIterator const & cdit, Buffer const & buffer, - bool output_active) const; + bool output_active, TocBackend & backend) const; /// void updateBuffer(Buffer const & buf); diff --git a/src/Paragraph.cpp b/src/Paragraph.cpp index 6d50f278c4..425ac39dee 100644 --- a/src/Paragraph.cpp +++ b/src/Paragraph.cpp @@ -562,10 +562,10 @@ Paragraph::Private::Private(Private const & p, Paragraph * owner, } -void Paragraph::addChangesToToc(DocIterator const & cdit, - Buffer const & buf, bool output_active) const +void Paragraph::addChangesToToc(DocIterator const & cdit, Buffer const & buf, + bool output_active, TocBackend & backend) const { - d->changes_.addToToc(cdit, buf, output_active); + d->changes_.addToToc(cdit, buf, output_active, backend); } diff --git a/src/Paragraph.h b/src/Paragraph.h index 813640e548..03a652ec08 100644 --- a/src/Paragraph.h +++ b/src/Paragraph.h @@ -47,6 +47,7 @@ class MetricsInfo; class OutputParams; class PainterInfo; class ParagraphParameters; +class TocBackend; class WordLangTuple; class XHTMLStream; class otexstream; @@ -150,7 +151,7 @@ public: /// void addChangesToToc(DocIterator const & cdit, Buffer const & buf, - bool output_active) const; + bool output_active, TocBackend & backend) const; /// set the buffer flag if there are changes in the paragraph void addChangesToBuffer(Buffer const & buf) const; /// diff --git a/src/TocBackend.cpp b/src/TocBackend.cpp index 4630d85b9d..c013cca03f 100644 --- a/src/TocBackend.cpp +++ b/src/TocBackend.cpp @@ -217,7 +217,7 @@ void TocBackend::update(bool output_active, UpdateType utype) resetOutlinerNames(); if (!buffer_->isInternal()) { DocIterator dit; - buffer_->inset().addToToc(dit, output_active, utype); + buffer_->inset().addToToc(dit, output_active, utype, *this); } } diff --git a/src/frontends/qt4/Menus.cpp b/src/frontends/qt4/Menus.cpp index 249d742013..c8682bb081 100644 --- a/src/frontends/qt4/Menus.cpp +++ b/src/frontends/qt4/Menus.cpp @@ -1311,20 +1311,20 @@ void MenuDefinition::expandToc(Buffer const * buf) } MenuDefinition other_lists; - TocList const & toc_list = buf->tocBackend().tocs(); - TocList::const_iterator cit = toc_list.begin(); - TocList::const_iterator end = toc_list.end(); - for (; cit != end; ++cit) { + // In the navigation menu, only add tocs from this document + TocBackend const & backend = buf->tocBackend(); + TocList const & toc_list = backend.tocs(); + for (pair> const & toc : toc_list) { // Handle table of contents later - if (cit->first == "tableofcontents" || cit->second->empty()) + if (toc.first == "tableofcontents" || toc.second->empty()) continue; MenuDefinition submenu; - submenu.expandTocSubmenu(cit->first, *cit->second); - docstring const toc_name = buf->tocBackend().outlinerName(cit->first); + submenu.expandTocSubmenu(toc.first, *toc.second); + docstring const toc_name = backend.outlinerName(toc.first); MenuItem item(MenuItem::Submenu, toqstr(toc_name)); item.setSubmenu(submenu); // deserves to be in the main menu? - if (!TocBackend::isOther(cit->first)) + if (!TocBackend::isOther(toc.first)) add(item); else other_lists.add(item); @@ -1336,8 +1336,8 @@ void MenuDefinition::expandToc(Buffer const * buf) } // Handle normal TOC add(MenuItem(MenuItem::Separator)); - cit = toc_list.find("tableofcontents"); - if (cit == end) + TocList::const_iterator cit = toc_list.find("tableofcontents"); + if (cit == toc_list.end()) LYXERR(Debug::GUI, "No table of contents."); else { if (!cit->second->empty()) diff --git a/src/frontends/qt4/TocModel.cpp b/src/frontends/qt4/TocModel.cpp index 03dbf38671..0733c1f641 100644 --- a/src/frontends/qt4/TocModel.cpp +++ b/src/frontends/qt4/TocModel.cpp @@ -351,21 +351,19 @@ void TocModels::reset(BufferView const * bv) names_->blockSignals(true); names_->beginResetModel(); names_->insertColumns(0, 1); + // In the outliner, add Tocs from the master document TocBackend const & backend = bv->buffer().masterBuffer()->tocBackend(); - TocList const & tocs = backend.tocs(); - TocList::const_iterator it = tocs.begin(); - TocList::const_iterator toc_end = tocs.end(); - for (; it != toc_end; ++it) { - QString const type = toqstr(it->first); + for (pair> const & toc : backend.tocs()) { + QString const type = toqstr(toc.first); // First, fill in the toc models. iterator mod_it = models_.find(type); if (mod_it == models_.end()) mod_it = models_.insert(type, new TocModel(this)); - mod_it.value()->reset(it->second); + mod_it.value()->reset(toc.second); // Fill in the names_ model. - QString const gui_name = toqstr(backend.outlinerName(it->first)); + QString const gui_name = toqstr(backend.outlinerName(toc.first)); int const current_row = names_->rowCount(); names_->insertRows(current_row, 1); QModelIndex const index = names_->index(current_row, 0); diff --git a/src/insets/Inset.h b/src/insets/Inset.h index 0783ec1ffb..0b339cc126 100644 --- a/src/insets/Inset.h +++ b/src/insets/Inset.h @@ -57,6 +57,7 @@ class PainterInfo; class ParConstIterator; class ParIterator; class Text; +class TocBackend; class TocList; class XHTMLStream; class otexstream; @@ -512,9 +513,12 @@ public: /// /// \param utype : is the toc being generated for use by the output /// routines? + /// + /// \param tocbackend : where to add the toc information. virtual void addToToc(DocIterator const & /* di */, bool /* output_active */, - UpdateType /* utype*/) const {} + UpdateType /* utype*/, + TocBackend & /* tocbackend */) const {} /// Collect BibTeX information virtual void collectBibKeys(InsetIterator const &) const {} /// Update the counters of this inset and of its contents. diff --git a/src/insets/InsetArgument.cpp b/src/insets/InsetArgument.cpp index 605286ca20..2acf71fa1a 100644 --- a/src/insets/InsetArgument.cpp +++ b/src/insets/InsetArgument.cpp @@ -317,17 +317,16 @@ void InsetArgument::latexArgument(otexstream & os, } - void InsetArgument::addToToc(DocIterator const & dit, bool output_active, - UpdateType utype) const + UpdateType utype, TocBackend & backend) const { if (!caption_of_toc_.empty()) { docstring str; text().forOutliner(str, TOC_ENTRY_LENGTH); - buffer().tocBackend().builder(caption_of_toc_).argumentItem(str); + backend.builder(caption_of_toc_).argumentItem(str); } // Proceed with the rest of the inset. - InsetText::addToToc(dit, output_active, utype); + InsetText::addToToc(dit, output_active, utype, backend); } diff --git a/src/insets/InsetArgument.h b/src/insets/InsetArgument.h index 0ccdc41bc0..3e200e3b1c 100644 --- a/src/insets/InsetArgument.h +++ b/src/insets/InsetArgument.h @@ -83,7 +83,7 @@ public: //@} /// void addToToc(DocIterator const & dit, bool output_active, - UpdateType utype) const; //override + UpdateType utype, TocBackend & backend) const; //override private: /// diff --git a/src/insets/InsetCaption.cpp b/src/insets/InsetCaption.cpp index 613249b6b2..7570fa52fa 100644 --- a/src/insets/InsetCaption.cpp +++ b/src/insets/InsetCaption.cpp @@ -94,7 +94,7 @@ void InsetCaption::setCustomLabel(docstring const & label) void InsetCaption::addToToc(DocIterator const & cpit, bool output_active, - UpdateType utype) const + UpdateType utype, TocBackend & backend) const { string const & type = floattype_.empty() ? "senseless" : floattype_; DocIterator pit = cpit; @@ -109,9 +109,9 @@ void InsetCaption::addToToc(DocIterator const & cpit, bool output_active, str = full_label_; text().forOutliner(str, length); } - buffer().tocBackend().builder(type).captionItem(pit, str, output_active); + backend.builder(type).captionItem(pit, str, output_active); // Proceed with the rest of the inset. - InsetText::addToToc(cpit, output_active, utype); + InsetText::addToToc(cpit, output_active, utype, backend); } diff --git a/src/insets/InsetCaption.h b/src/insets/InsetCaption.h index 461d9ce4f4..a2aca81c4b 100644 --- a/src/insets/InsetCaption.h +++ b/src/insets/InsetCaption.h @@ -82,7 +82,8 @@ private: /// void setCustomLabel(docstring const & label); /// - void addToToc(DocIterator const & di, bool output_active, UpdateType utype) const; + void addToToc(DocIterator const & di, bool output_active, UpdateType utype, + TocBackend & backend) const; /// virtual bool forcePlainLayout(idx_type = 0) const { return true; } /// Captions don't accept alignment, spacing, etc. diff --git a/src/insets/InsetCaptionable.cpp b/src/insets/InsetCaptionable.cpp index 94326f4c35..0683aa6948 100644 --- a/src/insets/InsetCaptionable.cpp +++ b/src/insets/InsetCaptionable.cpp @@ -97,7 +97,7 @@ docstring InsetCaptionable::getCaptionHTML(OutputParams const & runparams) const void InsetCaptionable::addToToc(DocIterator const & cpit, bool output_active, - UpdateType utype) const + UpdateType utype, TocBackend & backend) const { DocIterator pit = cpit; pit.push_back(CursorSlice(const_cast(*this))); @@ -107,10 +107,10 @@ void InsetCaptionable::addToToc(DocIterator const & cpit, bool output_active, // non-empty. if (utype != OutputUpdate) text().forOutliner(str, TOC_ENTRY_LENGTH); - TocBuilder & b = buffer().tocBackend().builder(caption_type_); + TocBuilder & b = backend.builder(caption_type_); b.pushItem(pit, str, output_active); // Proceed with the rest of the inset. - InsetCollapsable::addToToc(cpit, output_active, utype); + InsetCollapsable::addToToc(cpit, output_active, utype, backend); b.pop(); } diff --git a/src/insets/InsetCaptionable.h b/src/insets/InsetCaptionable.h index 5e06d77b73..005c371ea2 100644 --- a/src/insets/InsetCaptionable.h +++ b/src/insets/InsetCaptionable.h @@ -43,7 +43,7 @@ protected: virtual bool hasSubCaptions(ParIterator const &) const { return false; } /// void addToToc(DocIterator const & di, bool output_active, - UpdateType utype) const; + UpdateType utype, TocBackend & backend) const; /// Update the counters of this inset and of its contents void updateBuffer(ParIterator const &, UpdateType); /// diff --git a/src/insets/InsetCitation.cpp b/src/insets/InsetCitation.cpp index 29964fb727..0a5da5b119 100644 --- a/src/insets/InsetCitation.cpp +++ b/src/insets/InsetCitation.cpp @@ -420,7 +420,7 @@ void InsetCitation::updateBuffer(ParIterator const &, UpdateType) void InsetCitation::addToToc(DocIterator const & cpit, bool output_active, - UpdateType) const + UpdateType, TocBackend & backend) const { // NOTE // BiblioInfo::collectCitedEntries() uses the TOC to collect the citations @@ -428,7 +428,7 @@ void InsetCitation::addToToc(DocIterator const & cpit, bool output_active, // by both XHTML and plaintext output. So, if we change what goes into the TOC, // then we will also need to change that routine. docstring const tocitem = getParam("key"); - TocBuilder & b = buffer().tocBackend().builder("citation"); + TocBuilder & b = backend.builder("citation"); b.pushItem(cpit, tocitem, output_active); b.pop(); } diff --git a/src/insets/InsetCitation.h b/src/insets/InsetCitation.h index cde7bd126c..38624ed6f5 100644 --- a/src/insets/InsetCitation.h +++ b/src/insets/InsetCitation.h @@ -69,7 +69,7 @@ public: void updateBuffer(ParIterator const & it, UpdateType); /// void addToToc(DocIterator const & di, bool output_active, - UpdateType utype) const; + UpdateType utype, TocBackend & backend) const; /// std::string contextMenuName() const; //@} diff --git a/src/insets/InsetCollapsable.cpp b/src/insets/InsetCollapsable.cpp index fa9f01056a..beb9f6d4f1 100644 --- a/src/insets/InsetCollapsable.cpp +++ b/src/insets/InsetCollapsable.cpp @@ -662,19 +662,19 @@ bool InsetCollapsable::canPaintChange(BufferView const & bv) const void InsetCollapsable::addToToc(DocIterator const & cpit, bool output_active, - UpdateType utype) const + UpdateType utype, TocBackend & backend) const { bool doing_output = output_active && producesOutput(); InsetLayout const & layout = getLayout(); if (layout.addToToc()) { - TocBuilder & b = buffer().tocBackend().builder(layout.tocType()); + TocBuilder & b = backend.builder(layout.tocType()); // Cursor inside the inset DocIterator pit = cpit; pit.push_back(CursorSlice(const_cast(*this))); docstring const label = getLabel(); b.pushItem(pit, label + (label.empty() ? "" : ": "), output_active); // Proceed with the rest of the inset. - InsetText::addToToc(cpit, doing_output, utype); + InsetText::addToToc(cpit, doing_output, utype, backend); if (layout.isTocCaption()) { docstring str; text().forOutliner(str, TOC_ENTRY_LENGTH); @@ -682,7 +682,7 @@ void InsetCollapsable::addToToc(DocIterator const & cpit, bool output_active, } b.pop(); } else - InsetText::addToToc(cpit, doing_output, utype); + InsetText::addToToc(cpit, doing_output, utype, backend); } diff --git a/src/insets/InsetCollapsable.h b/src/insets/InsetCollapsable.h index 016d73207f..a426db034a 100644 --- a/src/insets/InsetCollapsable.h +++ b/src/insets/InsetCollapsable.h @@ -152,7 +152,7 @@ public: std::string contextMenuName() const; /// void addToToc(DocIterator const & dit, bool output_active, - UpdateType utype) const; //override + UpdateType utype, TocBackend & backend) const; //override protected: /// diff --git a/src/insets/InsetExternal.cpp b/src/insets/InsetExternal.cpp index 6e0baff5d7..8ddd7565d7 100644 --- a/src/insets/InsetExternal.cpp +++ b/src/insets/InsetExternal.cpp @@ -504,10 +504,10 @@ bool InsetExternal::getStatus(Cursor & cur, FuncRequest const & cmd, void InsetExternal::addToToc(DocIterator const & cpit, bool output_active, - UpdateType) const + UpdateType, TocBackend & backend) const { docstring str = screenLabel(params_, buffer()); - TocBuilder & b = buffer().tocBackend().builder("external"); + TocBuilder & b = backend.builder("external"); b.pushItem(cpit, str, output_active); b.pop(); } diff --git a/src/insets/InsetExternal.h b/src/insets/InsetExternal.h index 497f1c653a..5eca6641cc 100644 --- a/src/insets/InsetExternal.h +++ b/src/insets/InsetExternal.h @@ -121,7 +121,7 @@ public: bool clickable(BufferView const &, int, int) const { return true; } /// void addToToc(DocIterator const & di, bool output_active, - UpdateType utype) const; + UpdateType utype, TocBackend & backend) const; private: /// InsetExternal(InsetExternal const &); diff --git a/src/insets/InsetGraphics.cpp b/src/insets/InsetGraphics.cpp index d1458c05a3..b41d72bc70 100644 --- a/src/insets/InsetGraphics.cpp +++ b/src/insets/InsetGraphics.cpp @@ -1036,11 +1036,11 @@ void InsetGraphics::editGraphics(InsetGraphicsParams const & p) const void InsetGraphics::addToToc(DocIterator const & cpit, bool output_active, - UpdateType) const + UpdateType, TocBackend & backend) const { //FIXME UNICODE docstring const str = from_utf8(params_.filename.onlyFileName()); - TocBuilder & b = buffer().tocBackend().builder("graphics"); + TocBuilder & b = backend.builder("graphics"); b.pushItem(cpit, str, output_active); b.pop(); } diff --git a/src/insets/InsetGraphics.h b/src/insets/InsetGraphics.h index a2fef00a39..88ded43e1b 100644 --- a/src/insets/InsetGraphics.h +++ b/src/insets/InsetGraphics.h @@ -102,7 +102,7 @@ private: bool getStatus(Cursor &, FuncRequest const &, FuncStatus &) const; /// void addToToc(DocIterator const & di, bool output_active, - UpdateType utype) const; + UpdateType utype, TocBackend & backend) const; /// std::string contextMenuName() const; /// Force inset into LTR environment if surroundings are RTL diff --git a/src/insets/InsetInclude.cpp b/src/insets/InsetInclude.cpp index c39b7d349f..482fdb2110 100644 --- a/src/insets/InsetInclude.cpp +++ b/src/insets/InsetInclude.cpp @@ -1141,12 +1141,11 @@ void InsetInclude::addPreview(DocIterator const & /*inset_pos*/, void InsetInclude::addToToc(DocIterator const & cpit, bool output_active, - UpdateType utype) const + UpdateType utype, TocBackend & backend) const { - TocBackend & backend = buffer().tocBackend(); if (isListings(params())) { if (label_) - label_->addToToc(cpit, output_active, utype); + label_->addToToc(cpit, output_active, utype, backend); TocBuilder & b = backend.builder("listing"); b.pushItem(cpit, screenLabel(), output_active); InsetListingsParams p(to_utf8(params()["lstparams"])); @@ -1165,13 +1164,7 @@ void InsetInclude::addToToc(DocIterator const & cpit, bool output_active, return; // Include Tocs from children - childbuffer->tocBackend().update(output_active, utype); - for(auto const & pair : childbuffer->tocBackend().tocs()) { - string const & type = pair.first; - shared_ptr child_toc = pair.second; - shared_ptr toc = backend.toc(type); - toc->insert(toc->end(), child_toc->begin(), child_toc->end()); - } + childbuffer->inset().addToToc(cpit, output_active, utype, backend); //Copy missing outliner names (though the user has been warned against //having different document class and module selection between master //and child). diff --git a/src/insets/InsetInclude.h b/src/insets/InsetInclude.h index c844075489..e616f55626 100644 --- a/src/insets/InsetInclude.h +++ b/src/insets/InsetInclude.h @@ -110,7 +110,7 @@ public: void addPreview(DocIterator const &, graphics::PreviewLoader &) const; /// void addToToc(DocIterator const & di, bool output_active, - UpdateType utype) const; + UpdateType utype, TocBackend & backend) const; /// void updateBuffer(ParIterator const &, UpdateType); /// diff --git a/src/insets/InsetIndex.cpp b/src/insets/InsetIndex.cpp index a328d27de6..d5d487f78e 100644 --- a/src/insets/InsetIndex.cpp +++ b/src/insets/InsetIndex.cpp @@ -351,7 +351,7 @@ void InsetIndex::string2params(string const & in, InsetIndexParams & params) void InsetIndex::addToToc(DocIterator const & cpit, bool output_active, - UpdateType utype) const + UpdateType utype, TocBackend & backend) const { DocIterator pit = cpit; pit.push_back(CursorSlice(const_cast(*this))); @@ -361,10 +361,10 @@ void InsetIndex::addToToc(DocIterator const & cpit, bool output_active, type += ":" + to_utf8(params_.index); // this is unlikely to be terribly long text().forOutliner(str, INT_MAX); - TocBuilder & b = buffer().tocBackend().builder(type); + TocBuilder & b = backend.builder(type); b.pushItem(pit, str, output_active); // Proceed with the rest of the inset. - InsetCollapsable::addToToc(cpit, output_active, utype); + InsetCollapsable::addToToc(cpit, output_active, utype, backend); b.pop(); } diff --git a/src/insets/InsetIndex.h b/src/insets/InsetIndex.h index c0e23d8124..80d8149bc4 100644 --- a/src/insets/InsetIndex.h +++ b/src/insets/InsetIndex.h @@ -72,7 +72,7 @@ private: bool neverIndent() const { return true; } /// void addToToc(DocIterator const & di, bool output_active, - UpdateType utype) const; + UpdateType utype, TocBackend & backend) const; /// docstring toolTip(BufferView const & bv, int x, int y) const; /// diff --git a/src/insets/InsetLabel.cpp b/src/insets/InsetLabel.cpp index 553c6d7b96..b025de31c1 100644 --- a/src/insets/InsetLabel.cpp +++ b/src/insets/InsetLabel.cpp @@ -170,10 +170,10 @@ void InsetLabel::updateBuffer(ParIterator const & par, UpdateType utype) void InsetLabel::addToToc(DocIterator const & cpit, bool output_active, - UpdateType) const + UpdateType, TocBackend & backend) const { docstring const & label = getParam("name"); - shared_ptr toc = buffer().tocBackend().toc("label"); + shared_ptr toc = backend.toc("label"); if (buffer().insetLabel(label) != this) { toc->push_back(TocItem(cpit, 0, screen_label_, output_active)); } else { diff --git a/src/insets/InsetLabel.h b/src/insets/InsetLabel.h index 27f445c1af..65a6d3aa20 100644 --- a/src/insets/InsetLabel.h +++ b/src/insets/InsetLabel.h @@ -58,7 +58,7 @@ public: void updateBuffer(ParIterator const & it, UpdateType); /// void addToToc(DocIterator const & di, bool output_active, - UpdateType utype) const; + UpdateType utype, TocBackend & backend) const; /// Is the content of this inset part of the immediate (visible) text sequence? bool isPartOfTextSequence() const { return false; } //@} diff --git a/src/insets/InsetNomencl.cpp b/src/insets/InsetNomencl.cpp index fe4f7fb141..1613542db3 100644 --- a/src/insets/InsetNomencl.cpp +++ b/src/insets/InsetNomencl.cpp @@ -138,10 +138,10 @@ void InsetNomencl::validate(LaTeXFeatures & features) const void InsetNomencl::addToToc(DocIterator const & cpit, bool output_active, - UpdateType) const + UpdateType, TocBackend & backend) const { docstring const str = getParam("symbol"); - TocBuilder & b = buffer().tocBackend().builder("nomencl"); + TocBuilder & b = backend.builder("nomencl"); b.pushItem(cpit, str, output_active); b.pop(); } diff --git a/src/insets/InsetNomencl.h b/src/insets/InsetNomencl.h index 5e161a6ca5..d222c65266 100644 --- a/src/insets/InsetNomencl.h +++ b/src/insets/InsetNomencl.h @@ -41,7 +41,7 @@ public: void validate(LaTeXFeatures & features) const; /// void addToToc(DocIterator const & di, bool output_active, - UpdateType utype) const; + UpdateType utype, TocBackend & backend) const; /// InsetCode lyxCode() const { return NOMENCL_CODE; } /// diff --git a/src/insets/InsetRef.cpp b/src/insets/InsetRef.cpp index 31c0187cc1..32b80589d1 100644 --- a/src/insets/InsetRef.cpp +++ b/src/insets/InsetRef.cpp @@ -356,7 +356,7 @@ void InsetRef::updateBuffer(ParIterator const & it, UpdateType) void InsetRef::addToToc(DocIterator const & cpit, bool output_active, - UpdateType) const + UpdateType, TocBackend & backend) const { docstring const & label = getParam("reference"); if (buffer().insetLabel(label)) @@ -365,7 +365,7 @@ void InsetRef::addToToc(DocIterator const & cpit, bool output_active, // It seems that this reference does not point to any valid label. screen_label_ = _("BROKEN: ") + screen_label_; - shared_ptr toc = buffer().tocBackend().toc("label"); + shared_ptr toc = backend.toc("label"); toc->push_back(TocItem(cpit, 0, screen_label_, output_active)); } diff --git a/src/insets/InsetRef.h b/src/insets/InsetRef.h index a28d233fc2..80b767814c 100644 --- a/src/insets/InsetRef.h +++ b/src/insets/InsetRef.h @@ -71,7 +71,7 @@ public: void updateBuffer(ParIterator const & it, UpdateType); /// void addToToc(DocIterator const & di, bool output_active, - UpdateType utype) const; + UpdateType utype, TocBackend & backend) const; /// bool forceLTR() const { return true; } //@} diff --git a/src/insets/InsetTabular.cpp b/src/insets/InsetTabular.cpp index bf21ae73f1..a6a280551a 100644 --- a/src/insets/InsetTabular.cpp +++ b/src/insets/InsetTabular.cpp @@ -3510,9 +3510,9 @@ docstring InsetTableCell::asString(bool intoInsets) void InsetTableCell::addToToc(DocIterator const & di, bool output_active, - UpdateType utype) const + UpdateType utype, TocBackend & backend) const { - InsetText::iterateForToc(di, output_active, utype); + InsetText::iterateForToc(di, output_active, utype, backend); } @@ -3981,13 +3981,13 @@ void InsetTabular::updateBuffer(ParIterator const & it, UpdateType utype) void InsetTabular::addToToc(DocIterator const & cpit, bool output_active, - UpdateType utype) const + UpdateType utype, TocBackend & backend) const { DocIterator dit = cpit; dit.forwardPos(); size_t const end = dit.nargs(); for ( ; dit.idx() < end; dit.top().forwardIdx()) - cell(dit.idx())->addToToc(dit, output_active, utype); + cell(dit.idx())->addToToc(dit, output_active, utype, backend); } diff --git a/src/insets/InsetTabular.h b/src/insets/InsetTabular.h index 1e1379cc7b..bdd21aff4e 100644 --- a/src/insets/InsetTabular.h +++ b/src/insets/InsetTabular.h @@ -71,7 +71,7 @@ public: docstring xhtml(XHTMLStream &, OutputParams const &) const; /// void addToToc(DocIterator const & di, bool output_active, - UpdateType utype) const; + UpdateType utype, TocBackend & backend) const; private: /// unimplemented InsetTableCell(); @@ -959,7 +959,7 @@ public: void updateBuffer(ParIterator const &, UpdateType); /// void addToToc(DocIterator const & di, bool output_active, - UpdateType utype) const; + UpdateType utype, TocBackend & backend) const; /// bool completionSupported(Cursor const &) const; diff --git a/src/insets/InsetText.cpp b/src/insets/InsetText.cpp index db6b744deb..471e72c74a 100644 --- a/src/insets/InsetText.cpp +++ b/src/insets/InsetText.cpp @@ -830,20 +830,20 @@ void InsetText::forOutliner(docstring & os, size_t const maxlen, void InsetText::addToToc(DocIterator const & cdit, bool output_active, - UpdateType utype) const + UpdateType utype, TocBackend & backend) const { DocIterator dit = cdit; dit.push_back(CursorSlice(const_cast(*this))); - iterateForToc(dit, output_active, utype); + iterateForToc(dit, output_active, utype, backend); } void InsetText::iterateForToc(DocIterator const & cdit, bool output_active, - UpdateType utype) const + UpdateType utype, TocBackend & backend) const { DocIterator dit = cdit; // This also ensures that any document has a table of contents - shared_ptr toc = buffer().tocBackend().toc("tableofcontents"); + shared_ptr toc = backend.toc("tableofcontents"); BufferParams const & bufparams = buffer_->params(); int const min_toclevel = bufparams.documentClass().min_toclevel(); @@ -870,7 +870,8 @@ void InsetText::iterateForToc(DocIterator const & cdit, bool output_active, // Custom AddToToc in paragraph layouts (i.e. theorems) if (par.layout().addToToc() && text().isFirstInSequence(pit)) { - pit_type end = openAddToTocForParagraph(pit, dit, output_active); + pit_type end = + openAddToTocForParagraph(pit, dit, output_active, backend); addtotoc_stack.push({pit, end}); } @@ -882,7 +883,7 @@ void InsetText::iterateForToc(DocIterator const & cdit, bool output_active, Inset & inset = *it->inset; dit.pos() = it->pos; //lyxerr << (void*)&inset << " code: " << inset.lyxCode() << std::endl; - inset.addToToc(dit, doing_output, utype); + inset.addToToc(dit, doing_output, utype, backend); if (inset.lyxCode() == ARG_CODE) arginset = inset.asInsetText(); } @@ -891,7 +892,7 @@ void InsetText::iterateForToc(DocIterator const & cdit, bool output_active, while (!addtotoc_stack.empty() && addtotoc_stack.top().second == pit) { // execute the closing function closeAddToTocForParagraph(addtotoc_stack.top().first, - addtotoc_stack.top().second); + addtotoc_stack.top().second, backend); addtotoc_stack.pop(); } @@ -915,27 +916,29 @@ void InsetText::iterateForToc(DocIterator const & cdit, bool output_active, } // And now the list of changes. - par.addChangesToToc(dit, buffer(), doing_output); + par.addChangesToToc(dit, buffer(), doing_output, backend); } } pit_type InsetText::openAddToTocForParagraph(pit_type pit, DocIterator const & dit, - bool output_active) const + bool output_active, + TocBackend & backend) const { Paragraph const & par = paragraphs()[pit]; - TocBuilder & b = buffer().tocBackend().builder(par.layout().tocType()); + TocBuilder & b = backend.builder(par.layout().tocType()); docstring const label = par.labelString(); b.pushItem(dit, label + (label.empty() ? "" : " "), output_active); return text().lastInSequence(pit); } -void InsetText::closeAddToTocForParagraph(pit_type start, pit_type end) const +void InsetText::closeAddToTocForParagraph(pit_type start, pit_type end, + TocBackend & backend) const { Paragraph const & par = paragraphs()[start]; - TocBuilder & b = buffer().tocBackend().builder(par.layout().tocType()); + TocBuilder & b = backend.builder(par.layout().tocType()); if (par.layout().isTocCaption()) { docstring str; text().forOutliner(str, TOC_ENTRY_LENGTH, start, end); diff --git a/src/insets/InsetText.h b/src/insets/InsetText.h index 8c647fbff9..d8dbc43616 100644 --- a/src/insets/InsetText.h +++ b/src/insets/InsetText.h @@ -25,6 +25,7 @@ class Dimension; class ParagraphList; class InsetCaption; class InsetTabular; +class TocBuilder; /** A text inset is like a TeX box to write full text @@ -176,7 +177,7 @@ public: void forOutliner(docstring &, size_t const, bool const) const; /// void addToToc(DocIterator const & di, bool output_active, - UpdateType utype) const; + UpdateType utype, TocBackend & backend) const; /// Inset * clone() const { return new InsetText(*this); } /// @@ -221,15 +222,17 @@ public: protected: /// void iterateForToc(DocIterator const & cdit, bool output_active, - UpdateType utype) const; + UpdateType utype, TocBackend & backend) const; private: /// Open the toc item for paragraph pit. Returns the paragraph index where /// it should end. pit_type openAddToTocForParagraph(pit_type pit, DocIterator const & dit, - bool output_active) const; + bool output_active, + TocBackend & backend) const; /// Close a toc item opened in start and closed in end - void closeAddToTocForParagraph(pit_type start, pit_type end) const; + void closeAddToTocForParagraph(pit_type start, pit_type end, + TocBackend & backend) const; /// bool drawFrame_; /// diff --git a/src/mathed/InsetMathHull.cpp b/src/mathed/InsetMathHull.cpp index b326aebb5b..e21beb236e 100644 --- a/src/mathed/InsetMathHull.cpp +++ b/src/mathed/InsetMathHull.cpp @@ -335,7 +335,7 @@ void InsetMathHull::updateBuffer(ParIterator const & it, UpdateType utype) void InsetMathHull::addToToc(DocIterator const & pit, bool output_active, - UpdateType utype) const + UpdateType utype, TocBackend & backend) const { if (!buffer_) { //FIXME: buffer_ should be set at creation for this inset! Problem is @@ -344,7 +344,7 @@ void InsetMathHull::addToToc(DocIterator const & pit, bool output_active, return; } - TocBuilder & b = buffer().tocBackend().builder("equation"); + TocBuilder & b = backend.builder("equation"); // compute first and last item row_type first = nrows(); for (row_type row = 0; row != nrows(); ++row) @@ -368,7 +368,7 @@ void InsetMathHull::addToToc(DocIterator const & pit, bool output_active, if (!numbered(row)) continue; if (label_[row]) - label_[row]->addToToc(pit, output_active, utype); + label_[row]->addToToc(pit, output_active, utype, backend); docstring label = nicelabel(row); if (first == last) // this is the only equation diff --git a/src/mathed/InsetMathHull.h b/src/mathed/InsetMathHull.h index f8c04dfe2b..e04d68e918 100644 --- a/src/mathed/InsetMathHull.h +++ b/src/mathed/InsetMathHull.h @@ -52,7 +52,7 @@ public: void updateBuffer(ParIterator const &, UpdateType); /// void addToToc(DocIterator const & di, bool output_active, - UpdateType utype) const; + UpdateType utype, TocBackend & backend) const; /// InsetMathHull & operator=(InsetMathHull const &); /// diff --git a/src/mathed/MathMacroTemplate.cpp b/src/mathed/MathMacroTemplate.cpp index 6b61af2af8..457aea602a 100644 --- a/src/mathed/MathMacroTemplate.cpp +++ b/src/mathed/MathMacroTemplate.cpp @@ -1384,15 +1384,16 @@ string MathMacroTemplate::contextMenuName() const return "context-math-macro-definition"; } + void MathMacroTemplate::addToToc(DocIterator const & pit, bool output_active, - UpdateType) const + UpdateType, TocBackend & backend) const { docstring str; if (!validMacro()) str = bformat(_("Invalid macro! \\%1$s"), name()); else str = "\\" + name(); - TocBuilder & b = buffer().tocBackend().builder("math-macro"); + TocBuilder & b = backend.builder("math-macro"); b.pushItem(pit, str, output_active); b.pop(); } diff --git a/src/mathed/MathMacroTemplate.h b/src/mathed/MathMacroTemplate.h index b0c3018977..56fe0ecb0f 100644 --- a/src/mathed/MathMacroTemplate.h +++ b/src/mathed/MathMacroTemplate.h @@ -105,7 +105,7 @@ public: std::string contextMenuName() const; /// void addToToc(DocIterator const & di, bool output_active, - UpdateType utype) const; + UpdateType utype, TocBackend & backend) const; protected: /// virtual void doDispatch(Cursor & cur, FuncRequest & cmd); From fdf805956b800648099fa14143b3e9efb3f10cc2 Mon Sep 17 00:00:00 2001 From: Guillaume Munch Date: Thu, 5 Jan 2017 23:23:33 +0100 Subject: [PATCH 9/9] Fix font of macro template name --- src/mathed/MathMacroTemplate.cpp | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/mathed/MathMacroTemplate.cpp b/src/mathed/MathMacroTemplate.cpp index 457aea602a..d4cf4cfa56 100644 --- a/src/mathed/MathMacroTemplate.cpp +++ b/src/mathed/MathMacroTemplate.cpp @@ -367,6 +367,7 @@ Inset * InsetNameWrapper::clone() const void InsetNameWrapper::metrics(MetricsInfo & mi, Dimension & dim) const { + Changer dummy = mi.base.changeFontSet("textit"); InsetMathWrapper::metrics(mi, dim); dim.wid += mathed_string_width(mi.base.font, from_ascii("\\")); } @@ -374,19 +375,17 @@ void InsetNameWrapper::metrics(MetricsInfo & mi, Dimension & dim) const void InsetNameWrapper::draw(PainterInfo & pi, int x, int y) const { - // create fonts - PainterInfo namepi = pi; - if (parent_.validMacro()) - namepi.base.font.setColor(Color_latex); - else - namepi.base.font.setColor(Color_error); + ColorCode const color = parent_.validMacro() ? Color_latex : Color_error; + + Changer dummy = pi.base.changeFontSet("textit"); + Changer dummy2 = pi.base.font.changeColor(color); // draw backslash - pi.pain.text(x, y, from_ascii("\\"), namepi.base.font); - x += mathed_string_width(namepi.base.font, from_ascii("\\")); + pi.pain.text(x, y, from_ascii("\\"), pi.base.font); + x += mathed_string_width(pi.base.font, from_ascii("\\")); // draw name - InsetMathWrapper::draw(namepi, x, y); + InsetMathWrapper::draw(pi, x, y); }