X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FLyXRC.h;h=c196d579f13f5776062d4ee8c8606d60d14bfc12;hb=4ed0312c51704780af1c452d3a82a84171b3725a;hp=4d4dcf6c5f7dd5b6429a12e3270ccdea396522be;hpb=dfb67984f24f4fa2a43efcd1cf40f109bf9bfaf0;p=lyx.git diff --git a/src/LyXRC.h b/src/LyXRC.h index 4d4dcf6c5f..c196d579f1 100644 --- a/src/LyXRC.h +++ b/src/LyXRC.h @@ -18,14 +18,15 @@ #ifndef LYXRC_H #define LYXRC_H -#include "paper.h" +#include "LyX.h" +#include "support/Length.h" #include "support/strfwd.h" +#include "support/userinfo.h" #include #include #include -#include namespace lyx { @@ -50,13 +51,18 @@ public: RC_BIBTEX_ALTERNATIVES, RC_BIBTEX_COMMAND, RC_BINDFILE, + RC_BOOKMARKS_VISIBILITY, RC_CHECKLASTFILES, RC_CHKTEX_COMMAND, + RC_CITATION_SEARCH, + RC_CITATION_SEARCH_PATTERN, + RC_CITATION_SEARCH_VIEW, RC_COMPLETION_CURSOR_TEXT, RC_COMPLETION_INLINE_DELAY, RC_COMPLETION_INLINE_MATH, RC_COMPLETION_INLINE_TEXT, RC_COMPLETION_INLINE_DOTS, + RC_COMPLETION_MINLENGTH, RC_COMPLETION_POPUP_DELAY, RC_COMPLETION_POPUP_MATH, RC_COMPLETION_POPUP_TEXT, @@ -64,12 +70,15 @@ public: RC_CONVERTER, RC_CONVERTER_CACHE_MAXAGE, RC_COPIER, + RC_CT_ADDITIONS_UNDERLINED, + RC_CT_MARKUP_COPIED, RC_CURSOR_FOLLOWS_SCROLLBAR, - RC_DATE_INSERT_FORMAT, - RC_DEFAULT_DECIMAL_POINT, - RC_DEFAULT_LANGUAGE, + RC_CURSOR_WIDTH, + RC_DEFAULT_DECIMAL_SEP, + RC_DEFAULT_LENGTH_UNIT, + RC_DEFAULT_OTF_VIEW_FORMAT, + RC_DEFAULT_PLATEX_VIEW_FORMAT, RC_DEFAULT_VIEW_FORMAT, - RC_DEFAULT_PAPERSIZE, RC_DEFFILE, RC_DIALOGS_ICONIFY_WITH_MAIN, RC_DISPLAY_GRAPHICS, @@ -78,23 +87,25 @@ public: RC_ESC_CHARS, RC_EXAMPLEPATH, RC_EXPORT_OVERWRITE, - RC_FONT_ENCODING, RC_FILEFORMAT, RC_FORWARD_SEARCH_DVI, RC_FORWARD_SEARCH_PDF, - RC_FULL_SCREEN_LIMIT, + RC_SCREEN_LIMIT, RC_FULL_SCREEN_SCROLLBAR, + RC_FULL_SCREEN_STATUSBAR, RC_FULL_SCREEN_TABBAR, RC_FULL_SCREEN_MENUBAR, RC_FULL_SCREEN_TOOLBARS, - RC_FULL_SCREEN_WIDTH, + RC_SCREEN_WIDTH, RC_GEOMETRY_SESSION, RC_GROUP_LAYOUTS, RC_GUI_LANGUAGE, RC_HUNSPELLDIR_PATH, + RC_ICON_SET, RC_INDEX_ALTERNATIVES, RC_INDEX_COMMAND, RC_INPUT, + RC_JBIBTEX_ALTERNATIVES, RC_JBIBTEX_COMMAND, RC_JINDEX_COMMAND, RC_KBMAP, @@ -112,10 +123,11 @@ public: RC_LYXRCFORMAT, RC_MACRO_EDIT_STYLE, RC_MAC_DONTSWAP_CTRL_META, - RC_MAC_LIKE_WORD_MOVEMENT, + RC_MAC_LIKE_CURSOR_MOVEMENT, RC_MAKE_BACKUP, RC_MARK_FOREIGN_LANGUAGE, RC_MOUSE_WHEEL_SPEED, + RC_MOUSE_MIDDLEBUTTON_PASTE, RC_NOMENCL_COMMAND, RC_NUMLASTFILES, RC_OPEN_BUFFERS_IN_TABS, @@ -125,26 +137,13 @@ public: RC_PREVIEW, RC_PREVIEW_HASHED_LABELS, RC_PREVIEW_SCALE_FACTOR, - RC_PRINTCOLLCOPIESFLAG, - RC_PRINTCOPIESFLAG, - RC_PRINTER, - RC_PRINTEVENPAGEFLAG, - RC_PRINTEXSTRAOPTIONS, - RC_PRINTFILEEXTENSION, RC_PRINTLANDSCAPEFLAG, - RC_PRINTODDPAGEFLAG, - RC_PRINTPAGERANGEFLAG, RC_PRINTPAPERDIMENSIONFLAG, RC_PRINTPAPERFLAG, - RC_PRINTREVERSEFLAG, - RC_PRINTSPOOL_COMMAND, - RC_PRINTSPOOL_PRINTERPREFIX, - RC_PRINTTOFILE, - RC_PRINTTOPRINTER, - RC_PRINT_ADAPTOUTPUT, - RC_PRINT_COMMAND, - RC_RTL_SUPPORT, + RC_PYGMENTIZE_COMMAND, + RC_RESPECT_OS_KBD_LANGUAGE, RC_SAVE_COMPRESSED, + RC_SAVE_ORIGIN, RC_SCREEN_DPI, RC_SCREEN_FONT_ROMAN, RC_SCREEN_FONT_ROMAN_FOUNDRY, @@ -171,41 +170,48 @@ public: RC_TEMPLATEPATH, RC_TEX_ALLOWS_SPACES, RC_TEX_EXPECTS_WINDOWS_PATHS, + RC_TEXINPUTS_PREFIX, RC_THESAURUSDIRPATH, RC_UIFILE, RC_USELASTFILEPOS, RC_USER_EMAIL, + RC_USER_INITIALS, RC_USER_NAME, RC_USE_CONVERTER_CACHE, + RC_USE_CONVERTER_NEEDAUTH_FORBIDDEN, + RC_USE_CONVERTER_NEEDAUTH, + RC_USE_NATIVE_FILEDIALOG, RC_USE_SYSTEM_COLORS, RC_USE_TOOLTIP, - RC_USE_PIXMAP_CACHE, + RC_USE_SYSTEM_THEME_ICONS, RC_VIEWDVI_PAPEROPTION, RC_VIEWER, RC_VIEWER_ALTERNATIVES, RC_VISUAL_CURSOR, + RC_CLOSE_BUFFER_WITH_LAST_VIEW, + RC_DRAW_STRATEGY, RC_LAST }; /// - LyXRC(); - /// - void setDefaults(); - /// - bool read(support::FileName const & filename); + LyXRC() : user_name(support::user_name()), + user_email(support::user_email()) // always empty + {} + + /// \param check_format: whether to try to convert the file format, + /// if it is not current. this should only be true, really, for the + /// user's own preferences file. + bool read(support::FileName const & filename, bool check_format); /// bool read(std::istream &); private: enum ReturnValues { ReadOK, - FileError, ReadError, FormatMismatch }; /// - ReturnValues readWithoutConv(support::FileName const &); - /// - ReturnValues read(Lexer &); + ReturnValues read(Lexer &, bool check_format); public: /// typedef std::set CommandSet; @@ -221,72 +227,56 @@ public: std::string const & tag = std::string()) const; /// void print() const; + /// + std::set getRCs(); // FIXME unused (was used for xforms. Do we still need this?) //static docstring const getDescription(LyXRCTags); /// - std::string bind_file; - /// - std::string def_file; - /// - std::string ui_file; - /// - std::string printer; - /// - std::string print_command; - /// - std::string print_evenpage_flag; - /// - std::string print_oddpage_flag; + std::string bind_file = "cua"; /// - std::string print_pagerange_flag; + std::string def_file = "default"; /// - std::string print_copies_flag; + std::string ui_file = "default"; /// - std::string print_collcopies_flag; + std::string print_landscape_flag = "-t landscape"; /// - std::string print_reverse_flag; + std::string print_paper_flag = "-t"; /// - std::string print_landscape_flag; - /// - std::string print_to_printer; - /// - bool print_adapt_output; - /// - std::string print_to_file; - /// - std::string print_file_extension; - /// - std::string print_extra_options; - /// - std::string print_spool_command; - /// - std::string print_spool_printerprefix; - /// - std::string print_paper_flag; - /// - std::string print_paper_dimension_flag; + std::string print_paper_dimension_flag = "-T"; /// option for telling the dvi viewer about the paper size std::string view_dvi_paper_option; /// default paper size for local xdvi/dvips/ghostview/whatever - PAPER_SIZE default_papersize; /// command to run chktex incl. options - std::string chktex_command; + std::string chktex_command = "chktex -n1 -n3 -n6 -n9 -n22 -n25 -n30 -n38"; + /// Use external script to search for file corresponding to a + /// given citation. + bool citation_search = false; + /// Name of external script which searches for file corresponding to a + /// given citation. At this moment only script lyxpaperview.py is supported + /// (search for pdf or ps based on specific items) + std::string citation_search_view; + /// Items to search for in citation_search_view + std::string citation_search_pattern = "%year% %abbrvciteauthor%"; /// all available commands to run bibtex incl. options CommandSet bibtex_alternatives; /// command to run bibtex incl. options - std::string bibtex_command; + std::string bibtex_command = "automatic"; /// command to run japanese bibtex incl. options std::string jbibtex_command; + /// all available commands to run japanese bibtex incl. options + CommandSet jbibtex_alternatives; /// all available index commands incl. options CommandSet index_alternatives; /// command to run makeindex incl. options or other index programs - std::string index_command; + std::string index_command = "makeindex -c -q"; /// command to run japanese index program incl. options std::string jindex_command; /// command to generate multiple indices std::string splitindex_command; /// command to run makeindex incl. options for nomencl - std::string nomencl_command; + std::string nomencl_command = "makeindex -s nomencl.ist"; + /// command to run the python pygments syntax highlighter + std::string pygmentize_command; /// std::string document_path; /// @@ -300,38 +290,45 @@ public: /// std::string hunspelldir_path; /// - bool auto_region_delete; - /// flag telling whether lastfiles should be checked for existance - bool auto_reset_options; + bool auto_region_delete = true; + /// enable middle-mouse-button paste + bool mouse_middlebutton_paste = true; /// - bool check_lastfiles; + bool auto_reset_options = false; + /// flag telling whether lastfiles should be checked for existance + bool check_lastfiles = true; /// maximal number of lastfiles - unsigned int num_lastfiles; + unsigned int num_lastfiles = 20; /// whether or not go to saved position when opening a file - bool use_lastfilepos; + bool use_lastfilepos = true; /// load files from last session automatically - bool load_session; + bool load_session = false; /// do we save new documents as compressed by default - bool save_compressed; + bool save_compressed = false; + /// whether or not to save the document dir in the file + bool save_origin = false; /// shall a backup file be created - bool make_backup; + bool make_backup = true; /// A directory for storing backup files std::string backupdir_path; /// Whether or not save/restore session information /// like windows position and geometry. - bool allow_geometry_session; + bool allow_geometry_session = true; /// Scrolling speed of the mouse wheel - double mouse_wheel_speed; - /// Zoom factor for screen fonts - unsigned int zoom; + double mouse_wheel_speed = 1.0; + /// Default zoom factor for screen fonts + int defaultZoom = 150; + /// Actual zoom factor for screen fonts + /// (default zoom plus buffer zoom factor) + /// Do not set directly. Use GuiView::setCurrentZoom() + int currentZoom = 150; /// Screen font sizes in points for each font size - std::string font_sizes[10]; + std::string font_sizes[10] = { "5.0", "7.0", "8.0", "9.0", "10.0", + "12.0", "14.4", "17.26", "20.74", "24.88"}; /// Allow the use of scalable fonts? Default is yes. - bool use_scalable_fonts; + bool use_scalable_fonts = true; /// DPI of monitor - unsigned int dpi; - /// - std::string fontenc; + unsigned int dpi = 75; /// std::string roman_font_name; /// @@ -345,31 +342,42 @@ public: /// std::string typewriter_font_foundry; /// - unsigned int autosave; + unsigned int autosave = 300; /// - unsigned int plaintext_linelen; - /// Accept compound words in spellchecker? - bool spellchecker_accept_compound; + unsigned int plaintext_linelen = 65; /// End of paragraph markers? - bool paragraph_markers; + bool paragraph_markers = false; /// Use tooltips? - bool use_tooltip; + bool use_tooltip = true; /// Use the colors from current system theme? - bool use_system_colors; - /// Use pixmap cache? - bool use_pixmap_cache; + bool use_system_colors = false; + /// use native file dialog or our own ? + bool use_native_filedialog = true; /// Spellchecker engine: aspell, hunspell, etc - std::string spellchecker; + std::string spellchecker +#if defined(USE_MACOSX_PACKAGING) + = "native"; +#elif defined(USE_ENCHANT) + = "enchant"; +#elif defined(USE_ASPELL) + = "aspell"; +#elif defined(USE_HUNSPELL) + = "hunspell"; +#else + = "aspell"; +#endif /// Alternate language for spellchecker std::string spellchecker_alt_lang; /// Escape characters std::string spellchecker_esc_chars; + /// Accept compound words in spellchecker? + bool spellchecker_accept_compound = false; /// spellcheck continuously? - bool spellcheck_continuously; + bool spellcheck_continuously = true; /// spellcheck notes and comments? - bool spellcheck_notes; + bool spellcheck_notes = true; /// - bool use_kbmap; + bool use_kbmap = false; /// std::string primary_kbmap; /// @@ -377,21 +385,19 @@ public: /// std::string lyxpipes; /// - std::string date_insert_format; - /// - std::string language_custom_package; + std::string language_custom_package = "\\usepackage{babel}"; /// - bool language_auto_begin; + bool language_auto_begin = true; /// - bool language_auto_end; + bool language_auto_end = true; /// - std::string language_command_begin; + std::string language_command_begin = "\\selectlanguage{$$lang}"; /// std::string language_command_end; /// - std::string language_command_local; + std::string language_command_local = "\\foreignlanguage{$$lang}{"; /// - bool language_global_options; + bool language_global_options = true; /// enum LangPackageSelection { LP_AUTO = 0, @@ -400,33 +406,39 @@ public: LP_NONE }; /// - LangPackageSelection language_package_selection; - /// - bool rtl_support; + LangPackageSelection language_package_selection = LP_AUTO; /// bidi cursor movement: true = visual, false = logical - bool visual_cursor; + bool visual_cursor = false; /// - bool auto_number; + bool auto_number = true; /// - bool mark_foreign_language; + bool mark_foreign_language = true; /// - std::string default_language; + std::string gui_language = "auto"; /// - std::string gui_language; + bool respect_os_kbd_language = false; /// - std::string default_view_format; + std::string default_otf_view_format = "pdf4"; + /// + std::string default_platex_view_format = "pdf3"; + /// + std::string default_view_format = "pdf2"; /// all available viewers Alternatives viewer_alternatives; /// all available editors Alternatives editor_alternatives; /// - bool mac_dontswap_ctrl_meta; + bool mac_dontswap_ctrl_meta = false; + /// + bool mac_like_cursor_movement = false; /// - bool mac_like_word_movement; + bool cursor_follows_scrollbar = false; /// - bool cursor_follows_scrollbar; + bool ct_additions_underlined = true; /// - bool scroll_below_document; + bool ct_markup_copied = false; + /// + bool scroll_below_document = false; /// enum MacroEditStyle { MACRO_EDIT_INLINE_BOX = 0, @@ -434,13 +446,13 @@ public: MACRO_EDIT_LIST }; /// - MacroEditStyle macro_edit_style; + MacroEditStyle macro_edit_style = MACRO_EDIT_INLINE_BOX; /// - bool dialogs_iconify_with_main; + bool dialogs_iconify_with_main = false; /// - bool display_graphics; + bool display_graphics = true; /// - bool show_banner; + bool show_banner = true; /// enum PreviewStatus { PREVIEW_OFF, @@ -448,77 +460,98 @@ public: PREVIEW_ON }; /// - PreviewStatus preview; + PreviewStatus preview = PREVIEW_OFF; /// - bool preview_hashed_labels; + bool preview_hashed_labels = false; /// - double preview_scale_factor; + double preview_scale_factor = 1.0; /// user name - std::string user_name; + std::string user_name; // set in constructor /// user email - std::string user_email; + std::string user_email; // set in constructor (empty for now) + /// user initials + std::string user_initials; + /// icon set name + std::string icon_set; + /// whether to use the icons from the theme + bool use_system_theme_icons = false; /// True if the TeX engine cannot handle posix paths - bool windows_style_tex_paths; + bool windows_style_tex_paths = false; /// True if the TeX engine can handle file names containing spaces - bool tex_allows_spaces; + bool tex_allows_spaces = false; /** Prepend paths to the PATH environment variable. * The string is input, stored and output in native format. */ std::string path_prefix; + /** Prepend paths to the TEXINPUTS environment variable. + * The string is input, stored and output in native format. + * A '.' here stands for the current document directory. + */ + std::string texinputs_prefix = "."; /// Use the cache for file converters? - bool use_converter_cache; + bool use_converter_cache = true; + /// Forbid use of external converters with 'needauth' option + bool use_converter_needauth_forbidden = true; + /// Ask user before calling external converters with 'needauth' option + bool use_converter_needauth = true; /// The maximum age of cache files in seconds - unsigned int converter_cache_maxage; + unsigned int converter_cache_maxage = 6 * 30 * 24 * 3600; // 6 months; /// Sort layouts alphabetically - bool sort_layouts; + bool sort_layouts = false; /// Group layout by their category - bool group_layouts; + bool group_layouts = true; /// Toggle toolbars in fullscreen mode? - bool full_screen_toolbars; + bool full_screen_toolbars = true; /// Toggle scrollbar in fullscreen mode? - bool full_screen_scrollbar; + bool full_screen_scrollbar = true; /// Toggle tabbar in fullscreen mode? - bool full_screen_tabbar; + bool full_screen_tabbar = true; /// Toggle menubar in fullscreen mode? - bool full_screen_menubar; + bool full_screen_menubar = true; + /// Toggle statusbar in fullscreen mode? + bool full_screen_statusbar = true; /// Limit the text width? - bool full_screen_limit; - /// Width of limited screen (in pixels) in fullscreen mode - int full_screen_width; + bool screen_limit = false; + /// Width of limited screen width + Length screen_width = Length(7, Length::IN); /// - bool completion_cursor_text; + bool completion_cursor_text = true; /// - double completion_inline_delay; + double completion_inline_delay = 0.2; /// - bool completion_inline_math; + bool completion_inline_math = true; /// - bool completion_inline_text; + bool completion_inline_text = false; /// - int completion_inline_dots; + int completion_inline_dots = -1; + /// minimum length of words to complete + unsigned int completion_minlength = 6; /// - bool autocorrection_math; + double completion_popup_delay = 2.0; /// - double completion_popup_delay; + bool completion_popup_math = true; /// - bool completion_popup_math; + bool completion_popup_text = false; /// - bool completion_popup_text; + bool completion_popup_after_complete = true; /// - bool completion_popup_after_complete; + bool autocorrection_math = false; /// - bool open_buffers_in_tabs; + bool open_buffers_in_tabs = true; /// - bool single_close_tab_button; + bool single_close_tab_button = false; /// - bool single_instance; + bool single_instance = true; /// std::string forward_search_dvi; /// std::string forward_search_pdf; /// - int export_overwrite; + int export_overwrite = NO_FILES; /// Default decimal point when aligning table columns on decimal - std::string default_decimal_point; + std::string default_decimal_sep = "locale"; + /// + Length::UNIT default_length_unit = Length::CM; /// enum ScrollWheelZoom { SCROLL_WHEEL_ZOOM_OFF, @@ -527,21 +560,34 @@ public: SCROLL_WHEEL_ZOOM_ALT }; /// - ScrollWheelZoom scroll_wheel_zoom; -}; + ScrollWheelZoom scroll_wheel_zoom = SCROLL_WHEEL_ZOOM_CTRL; + // FIXME: should be caret_width + /// + int cursor_width = 0; + /// One of: yes, no, ask + std::string close_buffer_with_last_view = "yes"; + enum BookmarksVisibility { + BMK_NONE, + BMK_MARGIN, + BMK_INLINE + }; + /// + BookmarksVisibility bookmarks_visibility = BMK_NONE; -/** \c LyXRC_PreviewStatus is a wrapper for LyXRC::PreviewStatus. - * It can be forward-declared and passed as a function argument without - * having to expose LyXRC.h. - */ -class LyXRC_PreviewStatus { - LyXRC::PreviewStatus val_; -public: - LyXRC_PreviewStatus(LyXRC::PreviewStatus val) : val_(val) {} - operator LyXRC::PreviewStatus() const { return val_; } + enum DrawStrategy { + // draw all (not implemented yet) + // FS_FULL, + // draw only what has changed + DS_PARTIAL, + // draw in backing store (only what has changed) + DS_BACKINGSTORE + }; + /// + DrawStrategy draw_strategy = DS_PARTIAL; }; + void actOnUpdatedPrefs(LyXRC const & lyxrc_orig, LyXRC const & lyxrc_new); /// @@ -549,8 +595,8 @@ extern LyXRC lyxrc; /// extern LyXRC system_lyxrc; -// used by at least frontends/qt4/GuiPref.cpp -const long maxlastfiles = 20; +// used by at least frontends/qt/GuiPref.cpp +const long maxlastfiles = 50; } // namespace lyx