X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FLyXRC.cpp;h=a4520de545474812293b38f58edfb0fc3b621b73;hb=1acedf11da79f509da706bc8d6d2f491c9676087;hp=f415aecce6aa2d1e64f6b77d4f61355c6f6f0c11;hpb=eea79637c78bb9916031924eca7b305cfb8e83df;p=lyx.git diff --git a/src/LyXRC.cpp b/src/LyXRC.cpp index f415aecce6..a4520de545 100644 --- a/src/LyXRC.cpp +++ b/src/LyXRC.cpp @@ -21,14 +21,14 @@ #include "LyXRC.h" -#include "debug.h" +#include "support/debug.h" #include "Color.h" #include "Converter.h" #include "Format.h" -#include "gettext.h" +#include "support/gettext.h" #include "Session.h" #include "Lexer.h" -#include "Font.h" +#include "FontEnums.h" #include "Mover.h" #include "graphics/GraphicsTypes.h" @@ -40,33 +40,19 @@ #include "support/os.h" #include "support/userinfo.h" +using namespace std; +using namespace lyx::support; namespace lyx { namespace os = support::os; -using support::ascii_lowercase; -using support::bformat; -using support::expandPath; -using support::FileName; -using support::getEnv; -using support::libFileSearch; -using support::token; - -using std::cout; -using std::endl; - -using std::ios; -using std::ofstream; -using std::ostream; -using std::string; - - namespace { // when adding something to this array keep it sorted! keyword_item lyxrcTags[] = { { "\\accept_compound", LyXRC::RC_ACCEPT_COMPOUND }, + { "\\allow_geometry_session", LyXRC::RC_GEOMETRY_SESSION }, { "\\alternate_language", LyXRC::RC_ALT_LANG }, { "\\auto_number", LyXRC::RC_AUTO_NUMBER }, { "\\auto_region_delete", LyXRC::RC_AUTOREGIONDELETE }, @@ -91,6 +77,7 @@ keyword_item lyxrcTags[] = { { "\\display_graphics", LyXRC::RC_DISPLAY_GRAPHICS }, { "\\document_path", LyXRC::RC_DOCUMENTPATH }, { "\\escape_chars", LyXRC::RC_ESC_CHARS }, + { "\\example_path", LyXRC::RC_EXAMPLEPATH }, { "\\font_encoding", LyXRC::RC_FONT_ENCODING }, { "\\format", LyXRC::RC_FORMAT }, { "\\index_command", LyXRC::RC_INDEX_COMMAND }, @@ -146,13 +133,11 @@ keyword_item lyxrcTags[] = { { "\\screen_font_sizes", LyXRC::RC_SCREEN_FONT_SIZES }, { "\\screen_font_typewriter", LyXRC::RC_SCREEN_FONT_TYPEWRITER }, { "\\screen_font_typewriter_foundry", LyXRC::RC_SCREEN_FONT_TYPEWRITER_FOUNDRY }, - { "\\screen_geometry_height", LyXRC::RC_SCREEN_GEOMETRY_HEIGHT }, - { "\\screen_geometry_width", LyXRC::RC_SCREEN_GEOMETRY_WIDTH }, - { "\\screen_geometry_xysaved", LyXRC::RC_SCREEN_GEOMETRY_XYSAVED }, { "\\screen_zoom", LyXRC::RC_SCREEN_ZOOM }, { "\\serverpipe", LyXRC::RC_SERVERPIPE }, { "\\set_color", LyXRC::RC_SET_COLOR }, { "\\show_banner", LyXRC::RC_SHOW_BANNER }, + { "\\sort_layouts", LyXRC::RC_SORT_LAYOUTS }, { "\\spell_command", LyXRC::RC_SPELL_COMMAND }, { "\\tempdir_path", LyXRC::RC_TEMPDIRPATH }, { "\\template_path", LyXRC::RC_TEMPLATEPATH }, @@ -165,16 +150,18 @@ keyword_item lyxrcTags[] = { { "\\use_input_encoding", LyXRC::RC_USE_INP_ENC }, { "\\use_lastfilepos", LyXRC::RC_USELASTFILEPOS }, { "\\use_personal_dictionary", LyXRC::RC_USE_PERS_DICT }, + { "\\use_pixmap_cache", LyXRC::RC_USE_PIXMAP_CACHE }, // compatibility with versions older than 1.4.0 only { "\\use_pspell", LyXRC::RC_USE_SPELL_LIB }, { "\\use_spell_lib", LyXRC::RC_USE_SPELL_LIB }, // compatibility with versions older than 1.4.0 only { "\\use_tempdir", LyXRC::RC_USETEMPDIR }, + { "\\use_tooltip", LyXRC::RC_USE_TOOLTIP }, { "\\user_email", LyXRC::RC_USER_EMAIL }, { "\\user_name", LyXRC::RC_USER_NAME }, { "\\view_dvi_paper_option", LyXRC::RC_VIEWDVI_PAPEROPTION }, // compatibility with versions older than 1.4.0 only - { "\\viewer" ,LyXRC::RC_VIEWER} + { "\\viewer", LyXRC::RC_VIEWER} }; const int lyxrcCount = sizeof(lyxrcTags) / sizeof(keyword_item); @@ -220,20 +207,18 @@ void LyXRC::setDefaults() { dpi = 75; // Because a screen typically is wider than a piece of paper: zoom = 150; - geometry_width = 0; - geometry_height = 0; - geometry_xysaved = true; + allow_geometry_session = true; // Default LaTeX font size: - font_sizes[Font::SIZE_TINY] = "5.0"; - font_sizes[Font::SIZE_SCRIPT] = "7.0"; - font_sizes[Font::SIZE_FOOTNOTE] = "8.0"; - font_sizes[Font::SIZE_SMALL] = "9.0"; - font_sizes[Font::SIZE_NORMAL] = "10.0"; - font_sizes[Font::SIZE_LARGE] = "12.0"; - font_sizes[Font::SIZE_LARGER] = "14.4"; - font_sizes[Font::SIZE_LARGEST] = "17.26"; - font_sizes[Font::SIZE_HUGE] = "20.74"; - font_sizes[Font::SIZE_HUGER] = "24.88"; + font_sizes[FONT_SIZE_TINY] = "5.0"; + font_sizes[FONT_SIZE_SCRIPT] = "7.0"; + font_sizes[FONT_SIZE_FOOTNOTE] = "8.0"; + font_sizes[FONT_SIZE_SMALL] = "9.0"; + font_sizes[FONT_SIZE_NORMAL] = "10.0"; + font_sizes[FONT_SIZE_LARGE] = "12.0"; + font_sizes[FONT_SIZE_LARGER] = "14.4"; + font_sizes[FONT_SIZE_LARGEST] = "17.26"; + font_sizes[FONT_SIZE_HUGE] = "20.74"; + font_sizes[FONT_SIZE_HUGER] = "24.88"; use_scalable_fonts = true; roman_font_name = ""; sans_font_name = ""; @@ -268,6 +253,7 @@ void LyXRC::setDefaults() { language_package = "\\usepackage{babel}"; language_command_begin = "\\selectlanguage{$$lang}"; language_command_local = "\\foreignlanguage{$$lang}{"; + sort_layouts = false; default_language = "english"; show_banner = true; windows_style_tex_paths = false; @@ -280,6 +266,8 @@ void LyXRC::setDefaults() { preview_hashed_labels = false; preview_scale_factor = "0.9"; use_converter_cache = true; + use_tooltip = true; + use_pixmap_cache = false; converter_cache_maxage = 6 * 30 * 24 * 3600; // 6 months user_name = to_utf8(support::user_name()); @@ -312,13 +300,13 @@ int LyXRC::read(FileName const & filename) lexrc.setFile(filename); if (!lexrc.isOK()) return -2; - LYXERR(Debug::LYXRC) << "Reading '" << filename << "'..." << endl; + LYXERR(Debug::LYXRC, "Reading '" << filename << "'..."); return read(lexrc); } -int LyXRC::read(std::istream & is) +int LyXRC::read(istream & is) { Lexer lexrc(lyxrcTags, lyxrcCount); if (lyxerr.debugging(Debug::PARSER)) @@ -327,7 +315,7 @@ int LyXRC::read(std::istream & is) lexrc.setStream(is); if (!lexrc.isOK()) return -2; - LYXERR(Debug::LYXRC) << "Reading istream..." << endl; + LYXERR(Debug::LYXRC, "Reading istream..."); return read(lexrc); } @@ -637,63 +625,51 @@ int LyXRC::read(Lexer & lexrc) } break; - case RC_SCREEN_GEOMETRY_HEIGHT: - if (lexrc.next()) { - geometry_height = lexrc.getInteger(); - } - break; - - case RC_SCREEN_GEOMETRY_WIDTH: + case RC_GEOMETRY_SESSION: if (lexrc.next()) { - geometry_width = lexrc.getInteger(); - } - break; - - case RC_SCREEN_GEOMETRY_XYSAVED: - if (lexrc.next()) { - geometry_xysaved = lexrc.getBool(); + allow_geometry_session = lexrc.getBool(); } break; case RC_SCREEN_FONT_SIZES: if (lexrc.next()) { - font_sizes[Font::SIZE_TINY] = + font_sizes[FONT_SIZE_TINY] = lexrc.getString(); } if (lexrc.next()) { - font_sizes[Font::SIZE_SCRIPT] = + font_sizes[FONT_SIZE_SCRIPT] = lexrc.getString(); } if (lexrc.next()) { - font_sizes[Font::SIZE_FOOTNOTE] = + font_sizes[FONT_SIZE_FOOTNOTE] = lexrc.getString(); } if (lexrc.next()) { - font_sizes[Font::SIZE_SMALL] = + font_sizes[FONT_SIZE_SMALL] = lexrc.getString(); } if (lexrc.next()) { - font_sizes[Font::SIZE_NORMAL] = + font_sizes[FONT_SIZE_NORMAL] = lexrc.getString(); } if (lexrc.next()) { - font_sizes[Font::SIZE_LARGE] = + font_sizes[FONT_SIZE_LARGE] = lexrc.getString(); } if (lexrc.next()) { - font_sizes[Font::SIZE_LARGER] = + font_sizes[FONT_SIZE_LARGER] = lexrc.getString(); } if (lexrc.next()) { - font_sizes[Font::SIZE_LARGEST] = + font_sizes[FONT_SIZE_LARGEST] = lexrc.getString(); } if (lexrc.next()) { - font_sizes[Font::SIZE_HUGE] = + font_sizes[FONT_SIZE_HUGE] = lexrc.getString(); } if (lexrc.next()) { - font_sizes[Font::SIZE_HUGER] = + font_sizes[FONT_SIZE_HUGER] = lexrc.getString(); } break; @@ -717,6 +693,13 @@ int LyXRC::read(Lexer & lexrc) } break; + case RC_EXAMPLEPATH: + if (lexrc.next()) { + example_path = os::internal_path(lexrc.getString()); + example_path = expandPath(example_path); + } + break; + case RC_TEMPLATEPATH: if (lexrc.next()) { template_path = os::internal_path(lexrc.getString()); @@ -901,6 +884,16 @@ int LyXRC::read(Lexer & lexrc) isp_use_pers_dict = lexrc.getBool(); } break; + case RC_USE_TOOLTIP: + if (lexrc.next()) { + use_tooltip = lexrc.getBool(); + } + break; + case RC_USE_PIXMAP_CACHE: + if (lexrc.next()) { + use_pixmap_cache = lexrc.getBool(); + } + break; case RC_USE_ESC_CHARS: if (lexrc.next()) { isp_use_esc_chars = lexrc.getBool(); @@ -1075,7 +1068,7 @@ int LyXRC::read(Lexer & lexrc) int flgs = Format::none; while (!flags.empty()) { string flag; - flags = support::split(flags, flag, ','); + flags = split(flags, flag, ','); if (flag == "document") flgs |= Format::document; else if (flag == "vector") @@ -1171,6 +1164,11 @@ int LyXRC::read(Lexer & lexrc) convert(lexrc.getString()); break; + case RC_SORT_LAYOUTS: + if (lexrc.next()) + sort_layouts = lexrc.getBool(); + break; + case RC_LAST: break; // this is just a dummy } } @@ -1202,7 +1200,7 @@ void LyXRC::print() const class SameMover { public: - typedef std::pair Data; + typedef pair Data; SameMover(Data const & comparison) : comparison_(comparison) {} @@ -1327,12 +1325,20 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c os << "# Display graphics within LyX\n" << "# monochrome|grayscale|color|none\n" << "\\display_graphics " - << graphics::displayTranslator().find(display_graphics) + << graphics::displayTranslator().find( + graphics::DisplayType(display_graphics)) << '\n'; } if (tag != RC_LAST) break; - + case RC_SORT_LAYOUTS: + if (ignore_system_lyxrc || + sort_layouts != system_lyxrc.sort_layouts) { + os << "# Sort layouts alphabetically.\n" + << "\\sort_layouts " << convert(sort_layouts) << '\n'; + } + if (tag != RC_LAST) + break; case RC_VIEWDVI_PAPEROPTION: if (ignore_system_lyxrc || view_dvi_paper_option @@ -1551,26 +1557,10 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c } if (tag != RC_LAST) break; - case RC_SCREEN_GEOMETRY_HEIGHT: + case RC_GEOMETRY_SESSION: if (ignore_system_lyxrc || - geometry_height != system_lyxrc.geometry_height) { - os << "\\screen_geometry_height " << geometry_height - << '\n'; - } - if (tag != RC_LAST) - break; - case RC_SCREEN_GEOMETRY_WIDTH: - if (ignore_system_lyxrc || - geometry_width != system_lyxrc.geometry_width) { - os << "\\screen_geometry_width " << geometry_width - << '\n'; - } - if (tag != RC_LAST) - break; - case RC_SCREEN_GEOMETRY_XYSAVED: - if (ignore_system_lyxrc || - geometry_xysaved != system_lyxrc.geometry_xysaved) { - os << "\\screen_geometry_xysaved " << convert(geometry_xysaved) + allow_geometry_session != system_lyxrc.allow_geometry_session) { + os << "\\allow_geometry_session " << convert(allow_geometry_session) << '\n'; } if (tag != RC_LAST) @@ -1653,39 +1643,39 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c break; case RC_SCREEN_FONT_SIZES: if (ignore_system_lyxrc || - font_sizes[Font::SIZE_TINY] - != system_lyxrc.font_sizes[Font::SIZE_TINY] || - font_sizes[Font::SIZE_SCRIPT] - != system_lyxrc.font_sizes[Font::SIZE_SCRIPT] || - font_sizes[Font::SIZE_FOOTNOTE] - != system_lyxrc.font_sizes[Font::SIZE_FOOTNOTE] || - font_sizes[Font::SIZE_SMALL] - != system_lyxrc.font_sizes[Font::SIZE_SMALL] || - font_sizes[Font::SIZE_NORMAL] - != system_lyxrc.font_sizes[Font::SIZE_NORMAL] || - font_sizes[Font::SIZE_LARGE] - != system_lyxrc.font_sizes[Font::SIZE_LARGE] || - font_sizes[Font::SIZE_LARGER] - != system_lyxrc.font_sizes[Font::SIZE_LARGER] || - font_sizes[Font::SIZE_LARGEST] - != system_lyxrc.font_sizes[Font::SIZE_LARGEST] || - font_sizes[Font::SIZE_HUGE] - != system_lyxrc.font_sizes[Font::SIZE_HUGE] || - font_sizes[Font::SIZE_HUGER] - != system_lyxrc.font_sizes[Font::SIZE_HUGER]) { + font_sizes[FONT_SIZE_TINY] + != system_lyxrc.font_sizes[FONT_SIZE_TINY] || + font_sizes[FONT_SIZE_SCRIPT] + != system_lyxrc.font_sizes[FONT_SIZE_SCRIPT] || + font_sizes[FONT_SIZE_FOOTNOTE] + != system_lyxrc.font_sizes[FONT_SIZE_FOOTNOTE] || + font_sizes[FONT_SIZE_SMALL] + != system_lyxrc.font_sizes[FONT_SIZE_SMALL] || + font_sizes[FONT_SIZE_NORMAL] + != system_lyxrc.font_sizes[FONT_SIZE_NORMAL] || + font_sizes[FONT_SIZE_LARGE] + != system_lyxrc.font_sizes[FONT_SIZE_LARGE] || + font_sizes[FONT_SIZE_LARGER] + != system_lyxrc.font_sizes[FONT_SIZE_LARGER] || + font_sizes[FONT_SIZE_LARGEST] + != system_lyxrc.font_sizes[FONT_SIZE_LARGEST] || + font_sizes[FONT_SIZE_HUGE] + != system_lyxrc.font_sizes[FONT_SIZE_HUGE] || + font_sizes[FONT_SIZE_HUGER] + != system_lyxrc.font_sizes[FONT_SIZE_HUGER]) { os.setf(ios::fixed); os.precision(2); os << "\\screen_font_sizes" - << ' ' << font_sizes[Font::SIZE_TINY] - << ' ' << font_sizes[Font::SIZE_SCRIPT] - << ' ' << font_sizes[Font::SIZE_FOOTNOTE] - << ' ' << font_sizes[Font::SIZE_SMALL] - << ' ' << font_sizes[Font::SIZE_NORMAL] - << ' ' << font_sizes[Font::SIZE_LARGE] - << ' ' << font_sizes[Font::SIZE_LARGER] - << ' ' << font_sizes[Font::SIZE_LARGEST] - << ' ' << font_sizes[Font::SIZE_HUGE] - << ' ' << font_sizes[Font::SIZE_HUGER] + << ' ' << font_sizes[FONT_SIZE_TINY] + << ' ' << font_sizes[FONT_SIZE_SCRIPT] + << ' ' << font_sizes[FONT_SIZE_FOOTNOTE] + << ' ' << font_sizes[FONT_SIZE_SMALL] + << ' ' << font_sizes[FONT_SIZE_NORMAL] + << ' ' << font_sizes[FONT_SIZE_LARGE] + << ' ' << font_sizes[FONT_SIZE_LARGER] + << ' ' << font_sizes[FONT_SIZE_LARGEST] + << ' ' << font_sizes[FONT_SIZE_HUGE] + << ' ' << font_sizes[FONT_SIZE_HUGER] << '\n'; } if (tag != RC_LAST) @@ -1942,6 +1932,14 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c } if (tag != RC_LAST) break; + case RC_EXAMPLEPATH: + if (ignore_system_lyxrc || + example_path != system_lyxrc.example_path) { + string const path = os::external_path(example_path); + os << "\\example_path \"" << path << "\"\n"; + } + if (tag != RC_LAST) + break; case RC_TEMPLATEPATH: if (ignore_system_lyxrc || template_path != system_lyxrc.template_path) { @@ -2063,6 +2061,20 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c } if (tag != RC_LAST) break; + case RC_USE_TOOLTIP: + if (ignore_system_lyxrc || + use_tooltip != system_lyxrc.use_tooltip) { + os << "\\use_tooltip " + << convert(use_tooltip) + << '\n'; + } + case RC_USE_PIXMAP_CACHE: + if (ignore_system_lyxrc || + use_pixmap_cache != system_lyxrc.use_pixmap_cache) { + os << "\\use_pixmap_cache " + << convert(use_pixmap_cache) + << '\n'; + } case RC_PERS_DICT: if (isp_pers_dict != system_lyxrc.isp_pers_dict) { string const path = os::external_path(isp_pers_dict); @@ -2217,12 +2229,12 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c << cit->shortcut() << "\" \"" << cit->viewer() << "\" \"" << cit->editor() << "\" \""; - std::vector flags; + vector flags; if (cit->documentFormat()) flags.push_back("document"); if (cit->vectorFormat()) flags.push_back("vector"); - os << support::getStringFromVector(flags); + os << getStringFromVector(flags); os << "\"\n"; } } @@ -2283,10 +2295,10 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c for (; it != end; ++it) { Movers::const_iterator const sysit = - std::find_if(sysbegin, sysend, SameMover(*it)); + find_if(sysbegin, sysend, SameMover(*it)); if (sysit == sysend) { - std::string const & fmt = it->first; - std::string const & command = + string const & fmt = it->first; + string const & command = it->second.command(); os << "\\copier " << fmt @@ -2384,6 +2396,10 @@ string const LyXRC::getDescription(LyXRCTags tag) str = _("This accepts the normal strftime formats; see man strftime for full details. E.g.\"%A, %e. %B %Y\"."); break; + case RC_DEFFILE: + str = _("Command definition file. Can either specify an absolute path, or LyX will look in its global and local commands/ directories."); + break; + case RC_DEFAULT_LANGUAGE: str = _("New documents will be assigned this language."); break; @@ -2409,6 +2425,10 @@ string const LyXRC::getDescription(LyXRCTags tag) str = _("Specify additional chars that can be part of a word."); break; + case RC_EXAMPLEPATH: + str = _("The path that LyX will set when offering to choose an example. An empty value selects the directory LyX was started from."); + break; + case RC_FONT_ENCODING: str = _("The font encoding used for the LaTeX2e fontenc package. T1 is highly recommended for non-English languages."); break; @@ -2613,13 +2633,8 @@ string const LyXRC::getDescription(LyXRCTags tag) str = _("The zoom percentage for screen fonts. A setting of 100% will make the fonts roughly the same size as on paper."); break; - case RC_SCREEN_GEOMETRY_HEIGHT: - case RC_SCREEN_GEOMETRY_WIDTH: - str = _("Specify geometry of the main view in width x height (values from last session will not be used if non-zero values are specified)."); - break; - - case RC_SCREEN_GEOMETRY_XYSAVED: - str = _("Allow session manager to save and restore windows position."); + case RC_GEOMETRY_SESSION: + str = _("Allow session manager to save and restore windows geometry."); break; case RC_SERVERPIPE: @@ -2668,6 +2683,14 @@ string const LyXRC::getDescription(LyXRCTags tag) str = _("Specify whether to pass the -T input encoding option to ispell. Enable this if you cannot check the spelling of words containing accented letters. This may not work with all dictionaries."); break; + case RC_USE_TOOLTIP: + str = _("Enable the automatic appearance of tool tips in the work area."); + break; + + case RC_USE_PIXMAP_CACHE: + str = _("Enable the pixmap cache that might improve performance on Mac and Windows."); + break; + case RC_USE_SPELL_LIB: break;