X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FLyXRC.cpp;h=a4520de545474812293b38f58edfb0fc3b621b73;hb=1acedf11da79f509da706bc8d6d2f491c9676087;hp=70f2233e9da5b30ceb622748fbc77ddd5415144b;hpb=30acdbebfa436ffd2b506f2faf825120bec7975f;p=lyx.git diff --git a/src/LyXRC.cpp b/src/LyXRC.cpp index 70f2233e9d..a4520de545 100644 --- a/src/LyXRC.cpp +++ b/src/LyXRC.cpp @@ -21,11 +21,11 @@ #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 "FontEnums.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 }, @@ -171,11 +156,12 @@ keyword_item lyxrcTags[] = { { "\\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); @@ -221,9 +207,7 @@ 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"; @@ -269,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; @@ -281,6 +266,7 @@ 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 @@ -314,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)) @@ -329,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); } @@ -639,21 +625,9 @@ int LyXRC::read(Lexer & lexrc) } break; - case RC_SCREEN_GEOMETRY_HEIGHT: + case RC_GEOMETRY_SESSION: if (lexrc.next()) { - geometry_height = lexrc.getInteger(); - } - break; - - case RC_SCREEN_GEOMETRY_WIDTH: - 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; @@ -719,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()); @@ -903,6 +884,11 @@ 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(); @@ -1082,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") @@ -1178,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 } } @@ -1209,7 +1200,7 @@ void LyXRC::print() const class SameMover { public: - typedef std::pair Data; + typedef pair Data; SameMover(Data const & comparison) : comparison_(comparison) {} @@ -1340,7 +1331,14 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c } 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 @@ -1559,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: - 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: + case RC_GEOMETRY_SESSION: 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) @@ -1950,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) { @@ -2071,6 +2061,13 @@ 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) { @@ -2232,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"; } } @@ -2298,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 @@ -2400,8 +2397,7 @@ string const LyXRC::getDescription(LyXRCTags tag) break; case RC_DEFFILE: - //FIXME: fix description. - str = _("Command definition file."); + 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: @@ -2429,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; @@ -2633,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: @@ -2688,6 +2683,10 @@ 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;