X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Flyxrc.h;h=ceed6f936974b808058ae620b2b1e7e746feb3d5;hb=d4f8fe124906af839a02d1ad3b7894e14fb69a37;hp=406a26d493e9928f97ecbe5f458093f13bcb68ff;hpb=99215ea58fc2b6088a71e71c02a4af9af5548133;p=lyx.git diff --git a/src/lyxrc.h b/src/lyxrc.h index 406a26d493..ceed6f9369 100644 --- a/src/lyxrc.h +++ b/src/lyxrc.h @@ -4,249 +4,283 @@ * This file is part of LyX, the document processor. * Licence details can be found in the file COPYING. * - * Full author contact details are available in file CREDITS + * \author Lars Gullik Bjønnes + * \author Jean-Marc Lasgouttes + * \author Angus Leeming + * \author John Levon + * \author André Pönitz + * \author Allan Rae + * \author Dekel Tsur + * + * Full author contact details are available in file CREDITS. */ #ifndef LYXRC_H #define LYXRC_H -#include "bufferparams.h" // Just to get the enum BufferParams::PAPER_SIZE (sic) +#include "paper.h" #include "graphics/GraphicsTypes.h" -// #include +#include +#include + + +namespace lyx { + +namespace support { class FileName; } + +class LyXLex; /// This contains the runtime configuration of LyX -class LyXRC //: public noncopyable { +class LyXRC //: public noncopyable // after 1.1.6 I will use a LyXRCStruct here and then this can be made // noncopyable again. For now I want to minimise changes. ARRae 20001010 { public: -enum LyXRCTags { - RC_FONT_ENCODING = 1, - RC_PRINTER, - RC_PRINT_COMMAND, - RC_PRINTEVENPAGEFLAG, - RC_PRINTODDPAGEFLAG, - RC_PRINTPAGERANGEFLAG, - RC_PRINTCOPIESFLAG, - RC_PRINTCOLLCOPIESFLAG, - RC_PRINTREVERSEFLAG, - RC_PRINTLANDSCAPEFLAG, - RC_PRINTTOPRINTER, - RC_PRINT_ADAPTOUTPUT, - RC_PRINTTOFILE, - RC_PRINTFILEEXTENSION, - RC_PRINTEXSTRAOPTIONS, - RC_PRINTSPOOL_COMMAND, - RC_PRINTSPOOL_PRINTERPREFIX, - RC_PRINTPAPERFLAG, - RC_PRINTPAPERDIMENSIONFLAG, - RC_CUSTOM_EXPORT_COMMAND, - RC_CUSTOM_EXPORT_FORMAT, - RC_SCREEN_DPI, - RC_SCREEN_ZOOM, - RC_SCREEN_FONT_SIZES, - RC_SCREEN_FONT_ROMAN, - RC_SCREEN_FONT_SANS, - RC_SCREEN_FONT_TYPEWRITER, - RC_SCREEN_FONT_ROMAN_FOUNDRY, - RC_SCREEN_FONT_SANS_FOUNDRY, - RC_SCREEN_FONT_TYPEWRITER_FOUNDRY, - RC_SCREEN_FONT_ENCODING, - RC_POPUP_BOLD_FONT, - RC_POPUP_NORMAL_FONT, - RC_POPUP_FONT_ENCODING, - RC_SET_COLOR, - RC_AUTOSAVE, - RC_DOCUMENTPATH, - RC_TEMPLATEPATH, - RC_TEMPDIRPATH, - RC_USETEMPDIR, - RC_LASTFILES, - RC_AUTOREGIONDELETE, - RC_AUTORESET_OPTIONS, - RC_BIND, - RC_SERVERPIPE, - RC_INPUT, - RC_BINDFILE, - RC_UIFILE, - RC_KBMAP, - RC_KBMAP_PRIMARY, - RC_KBMAP_SECONDARY, - RC_ASCIIROFF_COMMAND, - RC_ASCII_LINELEN, - RC_NUMLASTFILES, - RC_CHECKLASTFILES, - RC_VIEWDVI_PAPEROPTION, - RC_DEFAULT_PAPERSIZE, - RC_PS_COMMAND, - RC_ACCEPT_COMPOUND, - RC_SPELL_COMMAND, - RC_USE_INP_ENC, - RC_USE_ALT_LANG, - RC_USE_PERS_DICT, - RC_USE_ESC_CHARS, - RC_SCREEN_FONT_SCALABLE, - RC_ALT_LANG, - RC_PERS_DICT, - RC_ESC_CHARS, - RC_CHKTEX_COMMAND, - RC_CURSOR_FOLLOWS_SCROLLBAR, - RC_DIALOGS_ICONIFY_WITH_MAIN, - RC_MAKE_BACKUP, - RC_BACKUPDIR_PATH, - RC_RTL_SUPPORT, - RC_AUTO_NUMBER, - RC_MARK_FOREIGN_LANGUAGE, - RC_LANGUAGE_PACKAGE, - RC_LANGUAGE_AUTO_BEGIN, - RC_LANGUAGE_AUTO_END, - RC_LANGUAGE_COMMAND_BEGIN, - RC_LANGUAGE_COMMAND_END, - RC_LANGUAGE_COMMAND_LOCAL, - RC_LANGUAGE_GLOBAL_OPTIONS, - RC_LANGUAGE_USE_BABEL, - RC_DATE_INSERT_FORMAT, - RC_SHOW_BANNER, - RC_WHEEL_JUMP, - RC_CONVERTER, - RC_VIEWER, - RC_FORMAT, - RC_DEFAULT_LANGUAGE, - RC_LABEL_INIT_LENGTH, - RC_DISPLAY_GRAPHICS, - RC_PREVIEW, - RC_PREVIEW_HASHED_LABELS, - RC_PREVIEW_SCALE_FACTOR, - RC_USE_SPELL_LIB, - RC_USER_NAME, - RC_USER_EMAIL, - RC_LAST -}; - + enum LyXRCTags { + RC_ACCEPT_COMPOUND = 1, + RC_ALT_LANG, + RC_PLAINTEXT_ROFF_COMMAND, + RC_PLAINTEXT_LINELEN, + RC_AUTOREGIONDELETE, + RC_AUTORESET_OPTIONS, + RC_AUTOSAVE, + RC_AUTO_NUMBER, + RC_BACKUPDIR_PATH, + RC_BIBTEX_COMMAND, + RC_BINDFILE, + RC_CHECKLASTFILES, + RC_CHKTEX_COMMAND, + RC_CONVERTER, + RC_CONVERTER_CACHE_MAXAGE, + RC_COPIER, + RC_CURSOR_FOLLOWS_SCROLLBAR, + RC_CUSTOM_EXPORT_COMMAND, + RC_CUSTOM_EXPORT_FORMAT, + RC_DATE_INSERT_FORMAT, + RC_DEFAULT_LANGUAGE, + RC_DEFAULT_PAPERSIZE, + RC_DIALOGS_ICONIFY_WITH_MAIN, + RC_DISPLAY_GRAPHICS, + RC_DOCUMENTPATH, + RC_ESC_CHARS, + RC_FONT_ENCODING, + RC_FORMAT, + RC_INDEX_COMMAND, + RC_INPUT, + RC_KBMAP, + RC_KBMAP_PRIMARY, + RC_KBMAP_SECONDARY, + RC_LABEL_INIT_LENGTH, + RC_LANGUAGE_AUTO_BEGIN, + RC_LANGUAGE_AUTO_END, + RC_LANGUAGE_COMMAND_BEGIN, + RC_LANGUAGE_COMMAND_END, + RC_LANGUAGE_COMMAND_LOCAL, + RC_LANGUAGE_GLOBAL_OPTIONS, + RC_LANGUAGE_PACKAGE, + RC_LANGUAGE_USE_BABEL, + RC_USELASTFILEPOS, + RC_LOADSESSION, + RC_MAKE_BACKUP, + RC_MARK_FOREIGN_LANGUAGE, + RC_NUMLASTFILES, + RC_PATH_PREFIX, + RC_PERS_DICT, + RC_POPUP_BOLD_FONT, + RC_POPUP_FONT_ENCODING, + RC_POPUP_NORMAL_FONT, + 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_SCREEN_DPI, + RC_SCREEN_FONT_ENCODING, + RC_SCREEN_FONT_ROMAN, + RC_SCREEN_FONT_ROMAN_FOUNDRY, + RC_SCREEN_FONT_SANS, + RC_SCREEN_FONT_SANS_FOUNDRY, + RC_SCREEN_FONT_SCALABLE, + RC_SCREEN_FONT_SIZES, + RC_SCREEN_FONT_TYPEWRITER, + RC_SCREEN_FONT_TYPEWRITER_FOUNDRY, + RC_SCREEN_GEOMETRY_HEIGHT, + RC_SCREEN_GEOMETRY_WIDTH, + RC_SCREEN_GEOMETRY_XYSAVED, + RC_SCREEN_ZOOM, + RC_SERVERPIPE, + RC_SET_COLOR, + RC_SHOW_BANNER, + RC_SPELL_COMMAND, + RC_TEMPDIRPATH, + RC_TEMPLATEPATH, + RC_TEX_ALLOWS_SPACES, + RC_TEX_EXPECTS_WINDOWS_PATHS, + RC_UIFILE, + RC_USER_EMAIL, + RC_USER_NAME, + RC_USETEMPDIR, + RC_USE_ALT_LANG, + RC_USE_CONVERTER_CACHE, + RC_USE_ESC_CHARS, + RC_USE_INP_ENC, + RC_USE_PERS_DICT, + RC_USE_SPELL_LIB, + RC_VIEWDVI_PAPEROPTION, + RC_VIEWER, + RC_LAST + }; /// LyXRC(); /// void setDefaults(); /// - int read(string const & filename); + int read(support::FileName const & filename); /// - void readBindFileIfNeeded(); + int read(std::istream &); +private: /// - void write(string const & filename) const; + int read(LyXLex &); +public: /// - void print() const; + void write(support::FileName const & filename, + bool ignore_system_lyxrc) const; /// - void output(std::ostream & os) const; + void write(std::ostream & os, + bool ignore_system_lyxrc) const; /// - static string const getDescription(LyXRCTags); + void print() const; + // FIXME unused (was used for xforms. Do we still need this?) + //static docstring const getDescription(LyXRCTags); /// - string bind_file; + std::string bind_file; /// - string ui_file; + std::string ui_file; /// - string printer; + std::string printer; /// - string print_command; + std::string print_command; /// - string print_evenpage_flag; + std::string print_evenpage_flag; /// - string print_oddpage_flag; + std::string print_oddpage_flag; /// - string print_pagerange_flag; + std::string print_pagerange_flag; /// - string print_copies_flag; + std::string print_copies_flag; /// - string print_collcopies_flag; + std::string print_collcopies_flag; /// - string print_reverse_flag; + std::string print_reverse_flag; /// - string print_landscape_flag; + std::string print_landscape_flag; /// - string print_to_printer; + std::string print_to_printer; /// bool print_adapt_output; /// - string print_to_file; - /// - string print_file_extension; + std::string print_to_file; /// - string print_extra_options; + std::string print_file_extension; /// - string print_spool_command; + std::string print_extra_options; /// - string print_spool_printerprefix; + std::string print_spool_command; /// - string print_paper_flag; + std::string print_spool_printerprefix; /// - string print_paper_dimension_flag; + std::string print_paper_flag; /// - string custom_export_command; + std::string print_paper_dimension_flag; /// - string custom_export_format; + std::string custom_export_command; /// - bool pdf_mode; - /// postscript interpreter (in general "gs", if it is installed) - string ps_command; + std::string custom_export_format; /// option for telling the dvi viewer about the paper size - string view_dvi_paper_option; + std::string view_dvi_paper_option; /// default paper size for local xdvi/dvips/ghostview/whatever - BufferParams::PAPER_SIZE default_papersize; + PAPER_SIZE default_papersize; /// command to run chktex incl. options - string chktex_command; + std::string chktex_command; + /// command to run bibtex incl. options + std::string bibtex_command; + /// command to run makeindex incl. options or other index programs + std::string index_command; /// - string document_path; + std::string document_path; /// - string template_path; + std::string template_path; /// - string tempdir_path; - /// - bool use_tempdir; + std::string tempdir_path; /// bool auto_region_delete; /// flag telling whether lastfiles should be checked for existance bool auto_reset_options; /// bool check_lastfiles; - /// filename for lastfiles file - string lastfiles; /// maximal number of lastfiles unsigned int num_lastfiles; + /// whether or not go to saved position when opening a file + bool use_lastfilepos; + /// load files from last session automatically + bool load_session; /// shall a backup file be created bool make_backup; /// A directory for storing backup files - string backupdir_path; + std::string backupdir_path; + /// Width of MainWindow. if 0, value from last session will be used + int geometry_width; + /// Height of MainWindow, if 0, value from last session will be used + int geometry_height; + /// Whether or not save/restore windows position as session info + bool geometry_xysaved; /// Zoom factor for screen fonts unsigned int zoom; - /// parameter for button_4 and button_5 (scrollwheel) - unsigned int wheel_jump; /// Screen font sizes in points for each font size - float font_sizes[10]; + std::string font_sizes[10]; /// Allow the use of scalable fonts? Default is yes. bool use_scalable_fonts; /// DPI of monitor - float dpi; + unsigned int dpi; /// - string fontenc; + std::string fontenc; /// - string roman_font_name; + std::string roman_font_name; /// - string sans_font_name; + std::string sans_font_name; /// - string typewriter_font_name; + std::string typewriter_font_name; /// - string roman_font_foundry; + std::string roman_font_foundry; /// - string sans_font_foundry; + std::string sans_font_foundry; /// - string typewriter_font_foundry; + std::string typewriter_font_foundry; /// - string popup_bold_font; + std::string popup_bold_font; /// - string popup_normal_font; + std::string popup_normal_font; /// - string font_norm; + std::string font_norm; /// enum FontEncoding { /// @@ -271,17 +305,17 @@ enum LyXRCTags { /// void set_font_norm_type(); /// - string popup_font_encoding; + std::string popup_font_encoding; /// unsigned int autosave; /// - string ascii_roff_command; + std::string plaintext_roff_command; /// - unsigned int ascii_linelen; + unsigned int plaintext_linelen; /// use library instead of process bool use_spell_lib; /// Ispell command - string isp_command; + std::string isp_command; /// Accept compound words in spellchecker? bool isp_accept_compound; /// Pass input encoding switch to ispell? @@ -293,33 +327,33 @@ enum LyXRCTags { /// Use escape chars? bool isp_use_esc_chars; /// Alternate language for ispell - string isp_alt_lang; + std::string isp_alt_lang; /// Alternate personal dictionary file for ispell - string isp_pers_dict; + std::string isp_pers_dict; /// Escape characters - string isp_esc_chars; + std::string isp_esc_chars; /// bool use_kbmap; /// - string primary_kbmap; + std::string primary_kbmap; /// - string secondary_kbmap; + std::string secondary_kbmap; /// - string lyxpipes; + std::string lyxpipes; /// - string date_insert_format; + std::string date_insert_format; /// - string language_package; + std::string language_package; /// bool language_auto_begin; /// bool language_auto_end; /// - string language_command_begin; + std::string language_command_begin; /// - string language_command_end; + std::string language_command_end; /// - string language_command_local; + std::string language_command_local; /// bool language_global_options; /// @@ -330,10 +364,8 @@ enum LyXRCTags { bool auto_number; /// bool mark_foreign_language; - /// Do we have to use a GUI? - bool use_gui; /// - string default_language; + std::string default_language; /// bool cursor_follows_scrollbar; /// @@ -341,29 +373,57 @@ enum LyXRCTags { /// int label_init_length; /// - grfx::DisplayType display_graphics; + graphics::DisplayType display_graphics; /// bool show_banner; /// - bool preview; + enum PreviewStatus { + PREVIEW_OFF, + PREVIEW_NO_MATH, + PREVIEW_ON + }; + /// + PreviewStatus preview; /// bool preview_hashed_labels; /// - float preview_scale_factor; + std::string preview_scale_factor; /// user name - string user_name; + std::string user_name; /// user email - string user_email; + std::string user_email; + /// True if the TeX engine cannot handle posix paths + bool windows_style_tex_paths; + /// True if the TeX engine can handle file names containing spaces + bool tex_allows_spaces; + /** Prepend paths to the PATH environment variable. + * The string is input, stored and output in native format. + */ + std::string path_prefix; + /// Use the cache for file converters? + bool use_converter_cache; + /// The maximum age of cache files in seconds + unsigned int converter_cache_maxage; +}; -private: - /// Is a bind file already (or currently) read? - bool hasBindFile; - /// - int ReadBindFile(string const & name); + +/** \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_; } }; + /// extern LyXRC lyxrc; /// extern LyXRC system_lyxrc; + +} // namespace lyx + #endif