// -*- C++ -*- /** * \file lyxrc.h * This file is part of LyX, the document processor. * Licence details can be found in the file COPYING. * * \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 "paper.h" #include "graphics/GraphicsTypes.h" #include #include class LyXLex; /// This contains the runtime configuration of LyX 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_ACCEPT_COMPOUND = 1, RC_ALT_LANG, RC_ASCIIROFF_COMMAND, RC_ASCII_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_COPIER, RC_CURSOR_FOLLOWS_SCROLLBAR, RC_CUSTOM_EXPORT_COMMAND, RC_CUSTOM_EXPORT_FORMAT, RC_CYGWIN_PATH_FIX, 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_LASTFILES, 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_ZOOM, RC_SERVERPIPE, RC_SET_COLOR, RC_SHOW_BANNER, RC_SPELL_COMMAND, RC_TEMPDIRPATH, RC_TEMPLATEPATH, RC_TEX_ALLOWS_SPACES, RC_UIFILE, RC_USER_EMAIL, RC_USER_NAME, RC_USETEMPDIR, RC_USE_ALT_LANG, RC_USE_ESC_CHARS, RC_USE_INP_ENC, RC_USE_PERS_DICT, RC_USE_SPELL_LIB, RC_VIEWDVI_PAPEROPTION, RC_VIEWER, RC_WHEEL_JUMP, RC_LAST }; /// LyXRC(); /// void setDefaults(); /// int read(std::string const & filename); /// int read(std::istream &); private: /// int read(LyXLex &); public: /// void write(std::string const & filename, bool ignore_system_lyxrc) const; /// void write(std::ostream & os, bool ignore_system_lyxrc) const; /// void print() const; /// static std::string const getDescription(LyXRCTags); /// std::string bind_file; /// std::string ui_file; /// std::string printer; /// std::string print_command; /// std::string print_evenpage_flag; /// std::string print_oddpage_flag; /// std::string print_pagerange_flag; /// std::string print_copies_flag; /// std::string print_collcopies_flag; /// std::string print_reverse_flag; /// 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 custom_export_command; /// std::string custom_export_format; /// 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; /// command to run bibtex incl. options std::string bibtex_command; /// command to run makeindex incl. options or other index programs std::string index_command; /// std::string document_path; /// std::string template_path; /// 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 std::string lastfiles; /// maximal number of lastfiles unsigned int num_lastfiles; /// shall a backup file be created bool make_backup; /// A directory for storing backup files std::string backupdir_path; /// Zoom factor for screen fonts unsigned int zoom; /// parameter for button_4 and button_5 (scrollwheel) /// Only used by the xforms frontend unsigned int wheel_jump; /// Screen font sizes in points for each font size std::string font_sizes[10]; /// Allow the use of scalable fonts? Default is yes. bool use_scalable_fonts; /// DPI of monitor unsigned int dpi; /// std::string fontenc; /// std::string roman_font_name; /// std::string sans_font_name; /// std::string typewriter_font_name; /// std::string roman_font_foundry; /// std::string sans_font_foundry; /// std::string typewriter_font_foundry; /// std::string popup_bold_font; /// std::string popup_normal_font; /// std::string font_norm; /// enum FontEncoding { /// ISO_10646_1, /// ISO_8859_1, /// ISO_8859_3, /// ISO_8859_4, /// ISO_8859_6_8, /// ISO_8859_9, /// ISO_8859_15, /// OTHER_ENCODING }; /// FontEncoding font_norm_type; /// void set_font_norm_type(); /// std::string popup_font_encoding; /// unsigned int autosave; /// std::string ascii_roff_command; /// unsigned int ascii_linelen; /// use library instead of process bool use_spell_lib; /// Ispell command std::string isp_command; /// Accept compound words in spellchecker? bool isp_accept_compound; /// Pass input encoding switch to ispell? bool isp_use_input_encoding; /// Use alternate language? bool isp_use_alt_lang; /// Use personal dictionary? bool isp_use_pers_dict; /// Use escape chars? bool isp_use_esc_chars; /// Alternate language for ispell std::string isp_alt_lang; /// Alternate personal dictionary file for ispell std::string isp_pers_dict; /// Escape characters std::string isp_esc_chars; /// bool use_kbmap; /// std::string primary_kbmap; /// std::string secondary_kbmap; /// std::string lyxpipes; /// std::string date_insert_format; /// std::string language_package; /// bool language_auto_begin; /// bool language_auto_end; /// std::string language_command_begin; /// std::string language_command_end; /// std::string language_command_local; /// bool language_global_options; /// bool language_use_babel; /// bool rtl_support; /// bool auto_number; /// bool mark_foreign_language; /// std::string default_language; /// bool cursor_follows_scrollbar; /// bool dialogs_iconify_with_main; /// int label_init_length; /// lyx::graphics::DisplayType display_graphics; /// bool show_banner; /// enum PreviewStatus { PREVIEW_OFF, PREVIEW_NO_MATH, PREVIEW_ON }; /// PreviewStatus preview; /// bool preview_hashed_labels; /// std::string preview_scale_factor; /// user name std::string user_name; /// user email std::string user_email; /// bool cygwin_path_fix; /// 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; }; /** \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; #endif