]> git.lyx.org Git - lyx.git/blobdiff - src/lyxrc.h
add config.h
[lyx.git] / src / lyxrc.h
index 068549f7e600dc8d6d1763e123cc3f5a340a4b99..ceed6f936974b808058ae620b2b1e7e746feb3d5 100644 (file)
 #include "paper.h"
 #include "graphics/GraphicsTypes.h"
 
+#include <iosfwd>
 #include <string>
 
 
+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_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_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_BIBTEX_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(std::string const & filename);
+       int read(support::FileName const & filename);
        ///
-       void write(std::string const & filename) const;
+       int read(std::istream &);
+private:
        ///
-       void print() const;
+       int read(LyXLex &);
+public:
        ///
-       void output(std::ostream & os) const;
+       void write(support::FileName const & filename,
+                  bool ignore_system_lyxrc) const;
        ///
-       static std::string const getDescription(LyXRCTags);
+       void write(std::ostream & os,
+                  bool ignore_system_lyxrc) const;
+       ///
+       void print() const;
+       // FIXME unused (was used for xforms. Do we still need this?)
+       //static docstring const getDescription(LyXRCTags);
        ///
        std::string bind_file;
        ///
@@ -199,6 +223,8 @@ enum LyXRCTags {
        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;
        ///
@@ -211,24 +237,30 @@ enum LyXRCTags {
        bool auto_reset_options;
        ///
        bool check_lastfiles;
-       /// filename for lastfiles file
-       std::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
        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;
        ///
        std::string fontenc;
        ///
@@ -277,9 +309,9 @@ enum LyXRCTags {
        ///
        unsigned int autosave;
        ///
-       std::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
@@ -341,23 +373,57 @@ enum LyXRCTags {
        ///
        int label_init_length;
        ///
-       lyx::graphics::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
        std::string user_name;
        /// 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;
+};
+
+
+/** \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