]> git.lyx.org Git - lyx.git/blobdiff - src/LyXRC.cpp
fix merged build
[lyx.git] / src / LyXRC.cpp
index aec66ee8983487fbdea9edf2ed03b84da98ae67a..92850061d03a4e5e68a0f56a615b21b63f18832a 100644 (file)
 #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/userinfo.h"
 
 #include <fstream>
@@ -87,6 +89,7 @@ LexerKeyword lyxrcTags[] = {
        { "\\dialogs_iconify_with_main", LyXRC::RC_DIALOGS_ICONIFY_WITH_MAIN },
        { "\\display_graphics", LyXRC::RC_DISPLAY_GRAPHICS },
        { "\\document_path", LyXRC::RC_DOCUMENTPATH },
+       { "\\editor_alternatives", LyXRC::RC_EDITOR_ALTERNATIVES },
        { "\\escape_chars", LyXRC::RC_ESC_CHARS },
        { "\\example_path", LyXRC::RC_EXAMPLEPATH },
        { "\\font_encoding", LyXRC::RC_FONT_ENCODING },
@@ -167,6 +170,7 @@ LexerKeyword lyxrcTags[] = {
        { "\\serverpipe", LyXRC::RC_SERVERPIPE },
        { "\\set_color", LyXRC::RC_SET_COLOR },
        { "\\show_banner", LyXRC::RC_SHOW_BANNER },
+       { "\\single_close_tab_button", LyXRC::RC_SINGLE_CLOSE_TAB_BUTTON },
        { "\\sort_layouts", LyXRC::RC_SORT_LAYOUTS },
        { "\\spell_command", LyXRC::RC_SPELL_COMMAND },
        { "\\spellcheck_continuously", LyXRC::RC_SPELLCHECK_CONTINUOUSLY },
@@ -195,6 +199,7 @@ LexerKeyword lyxrcTags[] = {
        { "\\view_dvi_paper_option", LyXRC::RC_VIEWDVI_PAPEROPTION },
        // compatibility with versions older than 1.4.0 only
        { "\\viewer", LyXRC::RC_VIEWER},
+       { "\\viewer_alternatives", LyXRC::RC_VIEWER_ALTERNATIVES },
        { "\\visual_cursor" ,LyXRC::RC_VISUAL_CURSOR}
 };
 
@@ -241,7 +246,7 @@ void LyXRC::setDefaults()
        index_command = "makeindex -c -q";
        nomencl_command = "makeindex -s nomencl.ist";
        dpi = 75;
-       // Because a screen typically is wider than a piece of paper:
+       // Because a screen is typically wider than a piece of paper:
        zoom = 150;
        allow_geometry_session = true;
        // Default LaTeX font size:
@@ -304,7 +309,7 @@ void LyXRC::setDefaults()
        label_init_length = 3;
        preview = PREVIEW_OFF;
        preview_hashed_labels  = false;
-       preview_scale_factor = "0.9";
+       preview_scale_factor = 1.0;
        use_converter_cache = true;
        use_tooltip = true;
        use_pixmap_cache = false;
@@ -312,6 +317,7 @@ void LyXRC::setDefaults()
        user_name = to_utf8(support::user_name());
        user_email = to_utf8(support::user_email());
        open_buffers_in_tabs = true;
+       single_close_tab_button = false;
 
        // Fullscreen settings
        full_screen_limit = false;
@@ -1032,6 +1038,22 @@ int LyXRC::read(Lexer & lexrc)
                        }
                        break;
                }
+               case RC_VIEWER_ALTERNATIVES:  {
+                       string format, command;
+                       if (lexrc.next())
+                               format = lexrc.getString();
+                       if (lexrc.eatLine())
+                               command = lexrc.getString();
+                       viewer_alternatives.push_back(make_pair(format, command));
+                       break;
+               }
+               case RC_EDITOR_ALTERNATIVES:  {
+                       string format, command;
+                       lexrc >> format >> command;
+                       editor_alternatives.push_back(make_pair(format, command));
+                       break;
+               }
+
                case RC_DEFAULT_VIEW_FORMAT:
                        lexrc >> default_view_format;
                        break;
@@ -1121,6 +1143,9 @@ int LyXRC::read(Lexer & lexrc)
                case RC_OPEN_BUFFERS_IN_TABS:
                        lexrc >> open_buffers_in_tabs;
                        break;
+               case RC_SINGLE_CLOSE_TAB_BUTTON:
+                       lexrc >> single_close_tab_button;
+                       break;
 
                // Obsoteted in 1.4.0
                case RC_USETEMPDIR:
@@ -1813,6 +1838,13 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                           << convert<string>(open_buffers_in_tabs)
                           << '\n';
                }
+       case RC_SINGLE_CLOSE_TAB_BUTTON:
+               if (ignore_system_lyxrc ||
+                   single_close_tab_button != system_lyxrc.single_close_tab_button) {
+                       os << "\\single_close_tab_button "
+                          << convert<string>(single_close_tab_button)
+                          << '\n';
+               }
                if (tag != RC_LAST)
                        break;
 
@@ -2459,6 +2491,26 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                                   << "\" \"\" \"\" \"\" \"\" \"\" \"\"\n";
                if (tag != RC_LAST)
                        break;
+       case RC_VIEWER_ALTERNATIVES:
+               if (ignore_system_lyxrc ||
+                   viewer_alternatives != system_lyxrc.viewer_alternatives) {
+                       for (vector<pair<string, string> >::const_iterator it = viewer_alternatives.begin();
+                            it != viewer_alternatives.end(); ++it)
+                       os << "\\viewer_alternatives "
+                          << it->first << " " << it->second << "\n";
+               }
+               if (tag != RC_LAST)
+                       break;
+       case RC_EDITOR_ALTERNATIVES:
+               if (ignore_system_lyxrc ||
+                   editor_alternatives != system_lyxrc.editor_alternatives) {
+                       for (vector<pair<string, string> >::const_iterator it = editor_alternatives.begin();
+                            it != editor_alternatives.end(); ++it)
+                       os << "\\editor_alternatives "
+                          << it->first << " " << it->second << "\n";
+               }
+               if (tag != RC_LAST)
+                       break;
        case RC_DEFAULT_VIEW_FORMAT:
                if (ignore_system_lyxrc ||
                    default_view_format != system_lyxrc.default_view_format) {
@@ -2536,6 +2588,176 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
 }
 
 
+void actOnUpdatedPrefs(LyXRC const & lyxrc_orig, LyXRC const & lyxrc_new)
+{
+       // Why the switch you might ask. It is a trick to ensure that all
+       // the elements in the LyXRCTags enum is handled. As you can see
+       // there are no breaks at all. So it is just a huge fall-through.
+       // The nice thing is that we will get a warning from the compiler
+       // if we forget an element.
+       LyXRC::LyXRCTags tag = LyXRC::RC_LAST;
+       switch (tag) {
+       case LyXRC::RC_ACCEPT_COMPOUND:
+       case LyXRC::RC_ALT_LANG:
+       case LyXRC::RC_PLAINTEXT_LINELEN:
+       case LyXRC::RC_PLAINTEXT_ROFF_COMMAND:
+       case LyXRC::RC_AUTOCORRECTION_MATH:
+       case LyXRC::RC_AUTOREGIONDELETE:
+       case LyXRC::RC_AUTORESET_OPTIONS:
+       case LyXRC::RC_AUTOSAVE:
+       case LyXRC::RC_AUTO_NUMBER:
+       case LyXRC::RC_BACKUPDIR_PATH:
+       case LyXRC::RC_BIBTEX_ALTERNATIVES:
+       case LyXRC::RC_BIBTEX_COMMAND:
+       case LyXRC::RC_BINDFILE:
+       case LyXRC::RC_CHECKLASTFILES:
+       case LyXRC::RC_COMPLETION_CURSOR_TEXT:
+       case LyXRC::RC_COMPLETION_INLINE_DELAY:
+       case LyXRC::RC_COMPLETION_INLINE_DOTS:
+       case LyXRC::RC_COMPLETION_INLINE_MATH:
+       case LyXRC::RC_COMPLETION_INLINE_TEXT:
+       case LyXRC::RC_COMPLETION_POPUP_AFTER_COMPLETE:
+       case LyXRC::RC_COMPLETION_POPUP_DELAY:
+       case LyXRC::RC_COMPLETION_POPUP_MATH:
+       case LyXRC::RC_COMPLETION_POPUP_TEXT:
+       case LyXRC::RC_USELASTFILEPOS:
+       case LyXRC::RC_LOADSESSION:
+       case LyXRC::RC_CHKTEX_COMMAND:
+       case LyXRC::RC_CONVERTER:
+       case LyXRC::RC_CONVERTER_CACHE_MAXAGE:
+       case LyXRC::RC_COPIER:
+       case LyXRC::RC_CURSOR_FOLLOWS_SCROLLBAR:
+       case LyXRC::RC_SCROLL_BELOW_DOCUMENT:
+       case LyXRC::RC_DATE_INSERT_FORMAT:
+       case LyXRC::RC_DEFAULT_LANGUAGE:
+       case LyXRC::RC_GUI_LANGUAGE:
+       case LyXRC::RC_DEFAULT_PAPERSIZE:
+       case LyXRC::RC_DEFAULT_VIEW_FORMAT:
+       case LyXRC::RC_DEFFILE:
+       case LyXRC::RC_DIALOGS_ICONIFY_WITH_MAIN:
+       case LyXRC::RC_DISPLAY_GRAPHICS:
+       case LyXRC::RC_DOCUMENTPATH:
+               if (lyxrc_orig.document_path != lyxrc_new.document_path) {
+                       FileName path(lyxrc_new.document_path);
+                       if (path.exists() && path.isDirectory())
+                               package().document_dir() = FileName(lyxrc.document_path);
+               }
+       case LyXRC::RC_EDITOR_ALTERNATIVES:
+       case LyXRC::RC_ESC_CHARS:
+       case LyXRC::RC_EXAMPLEPATH:
+       case LyXRC::RC_FONT_ENCODING:
+       case LyXRC::RC_FORMAT:
+       case LyXRC::RC_GROUP_LAYOUTS:
+       case LyXRC::RC_HUNSPELLDIR_PATH:
+       case LyXRC::RC_INDEX_ALTERNATIVES:
+       case LyXRC::RC_INDEX_COMMAND:
+       case LyXRC::RC_JBIBTEX_COMMAND:
+       case LyXRC::RC_JINDEX_COMMAND:
+       case LyXRC::RC_NOMENCL_COMMAND:
+       case LyXRC::RC_INPUT:
+       case LyXRC::RC_KBMAP:
+       case LyXRC::RC_KBMAP_PRIMARY:
+       case LyXRC::RC_KBMAP_SECONDARY:
+       case LyXRC::RC_LABEL_INIT_LENGTH:
+       case LyXRC::RC_LANGUAGE_AUTO_BEGIN:
+       case LyXRC::RC_LANGUAGE_AUTO_END:
+       case LyXRC::RC_LANGUAGE_COMMAND_BEGIN:
+       case LyXRC::RC_LANGUAGE_COMMAND_END:
+       case LyXRC::RC_LANGUAGE_COMMAND_LOCAL:
+       case LyXRC::RC_LANGUAGE_GLOBAL_OPTIONS:
+       case LyXRC::RC_LANGUAGE_PACKAGE:
+       case LyXRC::RC_LANGUAGE_USE_BABEL:
+       case LyXRC::RC_MAC_LIKE_WORD_MOVEMENT:
+       case LyXRC::RC_MACRO_EDIT_STYLE:
+       case LyXRC::RC_MAKE_BACKUP:
+       case LyXRC::RC_MARK_FOREIGN_LANGUAGE:
+       case LyXRC::RC_MOUSE_WHEEL_SPEED:
+       case LyXRC::RC_NUMLASTFILES:
+       case LyXRC::RC_PARAGRAPH_MARKERS:
+       case LyXRC::RC_PATH_PREFIX:
+               if (lyxrc_orig.path_prefix != lyxrc_new.path_prefix) {
+                       prependEnvPath("PATH", lyxrc.path_prefix);
+               }
+       case LyXRC::RC_PERS_DICT:
+       case LyXRC::RC_PREVIEW:
+       case LyXRC::RC_PREVIEW_HASHED_LABELS:
+       case LyXRC::RC_PREVIEW_SCALE_FACTOR:
+       case LyXRC::RC_PRINTCOLLCOPIESFLAG:
+       case LyXRC::RC_PRINTCOPIESFLAG:
+       case LyXRC::RC_PRINTER:
+       case LyXRC::RC_PRINTEVENPAGEFLAG:
+       case LyXRC::RC_PRINTEXSTRAOPTIONS:
+       case LyXRC::RC_PRINTFILEEXTENSION:
+       case LyXRC::RC_PRINTLANDSCAPEFLAG:
+       case LyXRC::RC_PRINTODDPAGEFLAG:
+       case LyXRC::RC_PRINTPAGERANGEFLAG:
+       case LyXRC::RC_PRINTPAPERDIMENSIONFLAG:
+       case LyXRC::RC_PRINTPAPERFLAG:
+       case LyXRC::RC_PRINTREVERSEFLAG:
+       case LyXRC::RC_PRINTSPOOL_COMMAND:
+       case LyXRC::RC_PRINTSPOOL_PRINTERPREFIX:
+       case LyXRC::RC_PRINTTOFILE:
+       case LyXRC::RC_PRINTTOPRINTER:
+       case LyXRC::RC_PRINT_ADAPTOUTPUT:
+       case LyXRC::RC_PRINT_COMMAND:
+       case LyXRC::RC_RTL_SUPPORT:
+       case LyXRC::RC_SCREEN_DPI:
+       case LyXRC::RC_SCREEN_FONT_ROMAN:
+       case LyXRC::RC_SCREEN_FONT_ROMAN_FOUNDRY:
+       case LyXRC::RC_SCREEN_FONT_SANS:
+       case LyXRC::RC_SCREEN_FONT_SANS_FOUNDRY:
+       case LyXRC::RC_SCREEN_FONT_SCALABLE:
+       case LyXRC::RC_SCREEN_FONT_SIZES:
+       case LyXRC::RC_SCREEN_FONT_TYPEWRITER:
+       case LyXRC::RC_SCREEN_FONT_TYPEWRITER_FOUNDRY:
+       case LyXRC::RC_GEOMETRY_SESSION:
+       case LyXRC::RC_SCREEN_ZOOM:
+       case LyXRC::RC_SERVERPIPE:
+       case LyXRC::RC_SET_COLOR:
+       case LyXRC::RC_SHOW_BANNER:
+       case LyXRC::RC_OPEN_BUFFERS_IN_TABS:
+       case LyXRC::RC_SPELL_COMMAND:
+       case LyXRC::RC_SPELLCHECKER:
+       case LyXRC::RC_SPELLCHECK_CONTINUOUSLY:
+       case LyXRC::RC_SPLITINDEX_COMMAND:
+       case LyXRC::RC_TEMPDIRPATH:
+       case LyXRC::RC_TEMPLATEPATH:
+       case LyXRC::RC_TEX_ALLOWS_SPACES:
+       case LyXRC::RC_TEX_EXPECTS_WINDOWS_PATHS:
+               if (lyxrc_orig.windows_style_tex_paths != lyxrc_new.windows_style_tex_paths) {
+                       os::windows_style_tex_paths(lyxrc_new.windows_style_tex_paths);
+               }
+       case LyXRC::RC_THESAURUSDIRPATH:
+       case LyXRC::RC_UIFILE:
+       case LyXRC::RC_USER_EMAIL:
+       case LyXRC::RC_USER_NAME:
+       case LyXRC::RC_USETEMPDIR:
+       case LyXRC::RC_USE_ALT_LANG:
+       case LyXRC::RC_USE_CONVERTER_CACHE:
+       case LyXRC::RC_USE_ESC_CHARS:
+       case LyXRC::RC_USE_INP_ENC:
+       case LyXRC::RC_USE_PERS_DICT:
+       case LyXRC::RC_USE_TOOLTIP:
+       case LyXRC::RC_USE_PIXMAP_CACHE:
+       case LyXRC::RC_USE_SPELL_LIB:
+       case LyXRC::RC_VIEWDVI_PAPEROPTION:
+       case LyXRC::RC_SINGLE_CLOSE_TAB_BUTTON:
+       case LyXRC::RC_SORT_LAYOUTS:
+       case LyXRC::RC_FULL_SCREEN_LIMIT:
+       case LyXRC::RC_FULL_SCREEN_SCROLLBAR:
+       case LyXRC::RC_FULL_SCREEN_MENUBAR:
+       case LyXRC::RC_FULL_SCREEN_TABBAR:
+       case LyXRC::RC_FULL_SCREEN_TOOLBARS:
+       case LyXRC::RC_FULL_SCREEN_WIDTH:
+       case LyXRC::RC_VISUAL_CURSOR:
+       case LyXRC::RC_VIEWER:
+       case LyXRC::RC_VIEWER_ALTERNATIVES:
+       case LyXRC::RC_LAST:
+               break;
+       }
+}
+
+
 #if 0
 string const LyXRC::getDescription(LyXRCTags tag)
 {