X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FLyXRC.cpp;h=73aec189f30cc38b6e7cb28e73167cbf85c4fd73;hb=26ba2a65838731ce639a09539f617cb0f0be3b22;hp=eb5d0dcf835eedf5fb0f11ce757a38eaa9118636;hpb=8365eabd6f978d8bdc7fbcfabba83548ae409d94;p=lyx.git diff --git a/src/LyXRC.cpp b/src/LyXRC.cpp index eb5d0dcf83..73aec189f3 100644 --- a/src/LyXRC.cpp +++ b/src/LyXRC.cpp @@ -28,23 +28,22 @@ #include "Lexer.h" #include "LyX.h" #include "Mover.h" -#include "Session.h" #include "SpellChecker.h" #include "version.h" -#include "graphics/GraphicsTypes.h" - #include "support/convert.h" #include "support/debug.h" #include "support/environment.h" #include "support/FileName.h" #include "support/filetools.h" -#include "support/gettext.h" #include "support/lstrings.h" #include "support/os.h" #include "support/Package.h" #include "support/TempFile.h" -#include "support/userinfo.h" + +#ifdef USE_MACOSX_PACKAGING +#include "support/AppleSupport.h" +#endif #include #include @@ -61,7 +60,7 @@ namespace { // The format should also be updated in configure.py, and conversion code // should be added to prefs2prefs_prefs.py. -static unsigned int const LYXRC_FILEFORMAT = 33; // sanda: add \citation_search_view +static unsigned int const LYXRC_FILEFORMAT = 38; // chillenb: screen_width and screen_limit // when adding something to this array keep it sorted! LexerKeyword lyxrcTags[] = { { "\\accept_compound", LyXRC::RC_ACCEPT_COMPOUND }, @@ -108,20 +107,20 @@ LexerKeyword lyxrcTags[] = { { "\\dialogs_iconify_with_main", LyXRC::RC_DIALOGS_ICONIFY_WITH_MAIN }, { "\\display_graphics", LyXRC::RC_DISPLAY_GRAPHICS }, { "\\document_path", LyXRC::RC_DOCUMENTPATH }, + { "\\draw_strategy", LyXRC::RC_DRAW_STRATEGY }, { "\\editor_alternatives", LyXRC::RC_EDITOR_ALTERNATIVES }, { "\\escape_chars", LyXRC::RC_ESC_CHARS }, { "\\example_path", LyXRC::RC_EXAMPLEPATH }, + { "\\experimental:bookmarks_visibility", LyXRC::RC_BOOKMARKS_VISIBILITY }, { "\\export_overwrite", LyXRC::RC_EXPORT_OVERWRITE }, { "\\format", LyXRC::RC_FILEFORMAT }, { "\\forward_search_dvi", LyXRC::RC_FORWARD_SEARCH_DVI }, { "\\forward_search_pdf", LyXRC::RC_FORWARD_SEARCH_PDF }, - { "\\fullscreen_limit", LyXRC::RC_FULL_SCREEN_LIMIT }, { "\\fullscreen_menubar", LyXRC::RC_FULL_SCREEN_MENUBAR }, { "\\fullscreen_scrollbar", LyXRC::RC_FULL_SCREEN_SCROLLBAR }, { "\\fullscreen_statusbar", LyXRC::RC_FULL_SCREEN_STATUSBAR }, { "\\fullscreen_tabbar", LyXRC::RC_FULL_SCREEN_TABBAR }, { "\\fullscreen_toolbars", LyXRC::RC_FULL_SCREEN_TOOLBARS }, - { "\\fullscreen_width", LyXRC::RC_FULL_SCREEN_WIDTH }, { "\\group_layouts", LyXRC::RC_GROUP_LAYOUTS }, { "\\gui_language", LyXRC::RC_GUI_LANGUAGE }, { "\\hunspelldir_path", LyXRC::RC_HUNSPELLDIR_PATH }, @@ -176,6 +175,8 @@ LexerKeyword 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_limit", LyXRC::RC_SCREEN_LIMIT }, + { "\\screen_width", LyXRC::RC_SCREEN_WIDTH }, { "\\screen_zoom", LyXRC::RC_SCREEN_ZOOM }, { "\\scroll_below_document", LyXRC::RC_SCROLL_BELOW_DOCUMENT }, { "\\scroll_wheel_zoom", LyXRC::RC_SCROLL_WHEEL_ZOOM }, @@ -196,6 +197,7 @@ LexerKeyword lyxrcTags[] = { { "\\texinputs_prefix", LyXRC::RC_TEXINPUTS_PREFIX }, { "\\thesaurusdir_path", LyXRC::RC_THESAURUSDIRPATH }, { "\\ui_file", LyXRC::RC_UIFILE }, + { "\\ui_style", LyXRC::RC_UI_STYLE }, { "\\use_converter_cache", LyXRC::RC_USE_CONVERTER_CACHE }, { "\\use_converter_needauth", LyXRC::RC_USE_CONVERTER_NEEDAUTH }, { "\\use_converter_needauth_forbidden", LyXRC::RC_USE_CONVERTER_NEEDAUTH_FORBIDDEN }, @@ -602,6 +604,10 @@ LyXRC::ReturnValues LyXRC::read(Lexer & lexrc, bool check_format) lexrc >> icon_set; break; + case RC_UI_STYLE: + lexrc >> ui_style; + break; + case RC_USE_SYSTEM_THEME_ICONS: lexrc >> use_system_theme_icons; break; @@ -654,6 +660,10 @@ LyXRC::ReturnValues LyXRC::read(Lexer & lexrc, bool check_format) } string const x11_name = lexrc.getString(); + string x11_darkname = x11_name; + if (lexrc.next()) + x11_darkname = lexrc.getString(); + ColorCode const col = lcolor.getFromLyXName(lyx_name); if (col == Color_none || @@ -661,9 +671,10 @@ LyXRC::ReturnValues LyXRC::read(Lexer & lexrc, bool check_format) col == Color_ignore) break; - if (!lcolor.setColor(col, x11_name)) + if (!lcolor.setColor(col, x11_name, x11_darkname)) LYXERR0("Bad lyxrc set_color for " << lyx_name); - LYXERR(Debug::LYXRC, "Set " << lyx_name << "(" << col << ") to " << x11_name); + LYXERR(Debug::LYXRC, "Set " << lyx_name << "(" << col << ") to " + << x11_name << " and " << x11_darkname); break; } @@ -1032,8 +1043,8 @@ LyXRC::ReturnValues LyXRC::read(Lexer & lexrc, bool check_format) case RC_GROUP_LAYOUTS: lexrc >> group_layouts; break; - case RC_FULL_SCREEN_LIMIT: - lexrc >> full_screen_limit; + case RC_SCREEN_LIMIT: + lexrc >> screen_limit; break; case RC_FULL_SCREEN_TOOLBARS: lexrc >> full_screen_toolbars; @@ -1050,11 +1061,15 @@ LyXRC::ReturnValues LyXRC::read(Lexer & lexrc, bool check_format) case RC_FULL_SCREEN_MENUBAR: lexrc >> full_screen_menubar; break; - case RC_FULL_SCREEN_WIDTH: - lexrc >> full_screen_width; + case RC_SCREEN_WIDTH: + lexrc >> screen_width; break; case RC_OPEN_BUFFERS_IN_TABS: lexrc >> open_buffers_in_tabs; +#ifdef USE_MACOSX_PACKAGING + if (appleUserTabbingPreferenceAlways()) + open_buffers_in_tabs = true; +#endif break; case RC_SINGLE_CLOSE_TAB_BUTTON: lexrc >> single_close_tab_button; @@ -1109,6 +1124,36 @@ LyXRC::ReturnValues LyXRC::read(Lexer & lexrc, bool check_format) lexrc >> mouse_middlebutton_paste; break; + case RC_BOOKMARKS_VISIBILITY: + if (lexrc.next()) { + string const tmp = lexrc.getString(); + if (tmp == "none") + bookmarks_visibility = BMK_NONE; + else if (tmp == "margin") + bookmarks_visibility = BMK_MARGIN; + else if (tmp == "inline") + bookmarks_visibility = BMK_INLINE; + else { + bookmarks_visibility = BMK_NONE; + LYXERR0("Unrecognized bookmark visibility " << tmp <<'"'); + } + } + break; + + case RC_DRAW_STRATEGY: + if (lexrc.next()) { + string const tmp = lexrc.getString(); + if (tmp == "partial") + draw_strategy = DS_PARTIAL; + else if (tmp == "backingstore") + draw_strategy = DS_BACKINGSTORE; + else { + draw_strategy = DS_PARTIAL; + LYXERR0("Unrecognized draw strategy " << tmp <<'"'); + } + } + break; + case RC_LAST: break; // this is just a dummy } @@ -1584,6 +1629,15 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c if (tag != RC_LAST) break; // fall through + case RC_UI_STYLE: + if (ignore_system_lyxrc || + ui_style != system_lyxrc.ui_style) { + os << "\\ui_style \"" << ui_style + << "\"\n"; + } + if (tag != RC_LAST) + break; + // fall through case RC_USE_SYSTEM_THEME_ICONS: if (ignore_system_lyxrc || use_system_theme_icons != system_lyxrc.use_system_theme_icons) { @@ -1622,8 +1676,8 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c case RC_CITATION_SEARCH: if (ignore_system_lyxrc || citation_search != system_lyxrc.citation_search) { - os << "# Set to true to use script to search\n" - << "# locl disk for citation targets.\n" + os << "# Set to true to use script to search" + << " local disk for citation targets.\n" << "\\citation_search " << convert(citation_search) << '\n'; @@ -1709,6 +1763,26 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c if (tag != RC_LAST) break; // fall through + case RC_BOOKMARKS_VISIBILITY: + if (ignore_system_lyxrc || + bookmarks_visibility != system_lyxrc.bookmarks_visibility) { + string status; + switch (bookmarks_visibility) { + case BMK_NONE: + status = "none"; + break; + case BMK_INLINE: + status = "inline"; + break; + case BMK_MARGIN: + status = "margin"; + break; + } + os << "\\experimental:bookmarks_visibility " << status << '\n'; + } + if (tag != RC_LAST) + break; + // fall through case RC_MAC_DONTSWAP_CTRL_META: if (ignore_system_lyxrc || mac_dontswap_ctrl_meta @@ -1860,11 +1934,11 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c if (tag != RC_LAST) break; // fall through - case RC_FULL_SCREEN_LIMIT: + case RC_SCREEN_LIMIT: if (ignore_system_lyxrc || - full_screen_limit != system_lyxrc.full_screen_limit) { - os << "\\fullscreen_limit " - << convert(full_screen_limit) + screen_limit != system_lyxrc.screen_limit) { + os << "\\screen_limit " + << convert(screen_limit) << '\n'; } if (tag != RC_LAST) @@ -1920,11 +1994,11 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c if (tag != RC_LAST) break; // fall through - case RC_FULL_SCREEN_WIDTH: + case RC_SCREEN_WIDTH: if (ignore_system_lyxrc || - full_screen_width != system_lyxrc.full_screen_width) { - os << "\\fullscreen_width " - << convert(full_screen_width) + screen_width != system_lyxrc.screen_width) { + os << "\\screen_width " + << screen_width.asString() << '\n'; } if (tag != RC_LAST) @@ -1975,21 +2049,42 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c } if (tag != RC_LAST) break; + // fall through + case RC_DRAW_STRATEGY: + if (ignore_system_lyxrc || + draw_strategy != system_lyxrc.draw_strategy) { + string status; + switch (draw_strategy) { + case DS_PARTIAL: + status = "partial"; + break; + case DS_BACKINGSTORE: + status = "backingstore"; + break; + } + os << "\\draw_strategy " << status << '\n'; + } + if (tag != RC_LAST) + break; + // fall through os << "\n#\n" - << "# COLOR SECTION ###################################\n" - << "#\n\n"; + << "# COLOR SECTION ###################################\n" + << "#\n\n"; // fall through case RC_SET_COLOR: for (int i = 0; i < Color_ignore; ++i) { ColorCode lc = static_cast(i); - string const col = lcolor.getX11HexName(lc); + string const col = lcolor.getAllX11HexNames(lc).first; + string const darkcol = lcolor.getAllX11HexNames(lc).second; if (ignore_system_lyxrc - || col != system_lcolor.getX11HexName(lc)) { + || col != system_lcolor.getAllX11HexNames(lc).first + || darkcol != system_lcolor.getAllX11HexNames(lc).second) { os << "\\set_color \"" << lcolor.getLyXName(lc) << "\" \"" - << col << "\"\n"; + << col << "\" \"" + << darkcol << "\"\n"; } } if (tag != RC_LAST) @@ -2718,8 +2813,9 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c break; // fall through case RC_DEFAULT_VIEW_FORMAT: - if (ignore_system_lyxrc || - default_view_format != system_lyxrc.default_view_format) { + if ((ignore_system_lyxrc || + default_view_format != system_lyxrc.default_view_format) + && !default_view_format.empty()) { os << "\\default_view_format " << default_view_format << '\n'; } if (tag != RC_LAST) @@ -2821,6 +2917,7 @@ void actOnUpdatedPrefs(LyXRC const & lyxrc_orig, LyXRC const & lyxrc_new) case LyXRC::RC_BIBTEX_ALTERNATIVES: case LyXRC::RC_BIBTEX_COMMAND: case LyXRC::RC_BINDFILE: + case LyXRC::RC_BOOKMARKS_VISIBILITY: case LyXRC::RC_CITATION_SEARCH: case LyXRC::RC_CITATION_SEARCH_PATTERN: case LyXRC::RC_CITATION_SEARCH_VIEW: @@ -2859,6 +2956,7 @@ void actOnUpdatedPrefs(LyXRC const & lyxrc_orig, LyXRC const & lyxrc_new) package().document_dir() = FileName(lyxrc.document_path); } // fall through + case LyXRC::RC_DRAW_STRATEGY: case LyXRC::RC_EDITOR_ALTERNATIVES: case LyXRC::RC_ESC_CHARS: case LyXRC::RC_EXAMPLEPATH: @@ -2866,6 +2964,7 @@ void actOnUpdatedPrefs(LyXRC const & lyxrc_orig, LyXRC const & lyxrc_new) case LyXRC::RC_GROUP_LAYOUTS: case LyXRC::RC_HUNSPELLDIR_PATH: case LyXRC::RC_ICON_SET: + case LyXRC::RC_UI_STYLE: case LyXRC::RC_INDEX_ALTERNATIVES: case LyXRC::RC_INDEX_COMMAND: case LyXRC::RC_JBIBTEX_COMMAND: @@ -2936,7 +3035,8 @@ void actOnUpdatedPrefs(LyXRC const & lyxrc_orig, LyXRC const & lyxrc_new) || lyxrc_orig.roman_font_foundry != lyxrc_new.roman_font_foundry || lyxrc_orig.sans_font_foundry != lyxrc_new.sans_font_foundry || lyxrc_orig.use_scalable_fonts != lyxrc_new.use_scalable_fonts - || lyxrc_orig.font_sizes != lyxrc_new.font_sizes + || !std::equal(std::begin(lyxrc_orig.font_sizes), std::end(lyxrc_orig.font_sizes), + std::begin(lyxrc_new.font_sizes)) || lyxrc_orig.typewriter_font_foundry != lyxrc_new.typewriter_font_foundry || lyxrc_orig.defaultZoom != lyxrc_new.defaultZoom) { dispatch(FuncRequest(LFUN_SCREEN_FONT_UPDATE)); @@ -2979,13 +3079,13 @@ void actOnUpdatedPrefs(LyXRC const & lyxrc_orig, LyXRC const & lyxrc_new) case LyXRC::RC_SINGLE_CLOSE_TAB_BUTTON: case LyXRC::RC_SINGLE_INSTANCE: case LyXRC::RC_SORT_LAYOUTS: - case LyXRC::RC_FULL_SCREEN_LIMIT: + case LyXRC::RC_SCREEN_LIMIT: case LyXRC::RC_FULL_SCREEN_SCROLLBAR: case LyXRC::RC_FULL_SCREEN_MENUBAR: case LyXRC::RC_FULL_SCREEN_STATUSBAR: case LyXRC::RC_FULL_SCREEN_TABBAR: case LyXRC::RC_FULL_SCREEN_TOOLBARS: - case LyXRC::RC_FULL_SCREEN_WIDTH: + case LyXRC::RC_SCREEN_WIDTH: case LyXRC::RC_VISUAL_CURSOR: case LyXRC::RC_CLOSE_BUFFER_WITH_LAST_VIEW: case LyXRC::RC_VIEWER: