]> git.lyx.org Git - lyx.git/blobdiff - src/lyxrc.C
citation patch from Angus
[lyx.git] / src / lyxrc.C
index d3132a33ca93c035e3ef2737c9cd4853a2a4acb0..8a50c1cdb7f0753f10457dc7834884abed24f0a2 100644 (file)
@@ -30,6 +30,7 @@
 #include "support/path.h"
 #include "support/filetools.h"
 #include "lyxtext.h"
+#include "converter.h"
 
 using std::ostream;
 using std::ofstream;
@@ -155,6 +156,9 @@ enum LyXRCTags {
        RC_DOCBOOK_TO_HTML_COMMAND,
        RC_DOCBOOK_TO_PDF_COMMAND,
        RC_WHEEL_JUMP,
+       RC_CONVERTER,
+       RC_VIEWER,
+       RC_NEW_ASK_FILENAME,
        RC_LAST
 };
 
@@ -175,6 +179,7 @@ keyword_item lyxrcTags[] = {
        { "\\build_error_filter", RC_BUILD_ERROR_FILTER },
        { "\\check_lastfiles", RC_CHECKLASTFILES },
        { "\\chktex_command", RC_CHKTEX_COMMAND },
+       { "\\converter", RC_CONVERTER },
        { "\\cursor_follows_scrollbar", RC_CURSOR_FOLLOWS_SCROLLBAR },
        { "\\custom_export_command", RC_CUSTOM_EXPORT_COMMAND },
        { "\\custom_export_format", RC_CUSTOM_EXPORT_FORMAT },
@@ -211,6 +216,7 @@ keyword_item lyxrcTags[] = {
         { "\\literate_extension", RC_LITERATE_EXTENSION },
        { "\\make_backup", RC_MAKE_BACKUP },
        { "\\mark_foreign_language", RC_MARK_FOREIGN_LANGUAGE },
+       { "\\new_ask_filename", RC_NEW_ASK_FILENAME },
        { "\\num_lastfiles", RC_NUMLASTFILES },
        { "\\override_x_deadkeys", RC_OVERRIDE_X_DEADKEYS },
        { "\\pdf_mode", RC_PDF_MODE },
@@ -268,6 +274,7 @@ keyword_item lyxrcTags[] = {
        { "\\view_pdf_command", RC_VIEWPDF_COMMAND },
        { "\\view_ps_command", RC_VIEWPS_COMMAND },
         { "\\view_pspic_command", RC_VIEWPSPIC_COMMAND },
+       { "\\viewer" ,RC_VIEWER}, 
        { "\\wheel_jump", RC_WHEEL_JUMP }
 };
 
@@ -376,6 +383,8 @@ void LyXRC::setDefaults() {
        language_auto_end = true;
        language_command_begin = "\\selectlanguage{$$lang}";
        language_command_end = "\\selectlanguage{$$lang}";
+       ///
+       new_ask_filename = false;
 
        ///
        date_insert_format = "%A, %e %B %Y";
@@ -871,17 +880,17 @@ int LyXRC::read(string const & filename)
                {
                        string lyx_name, x11_name;
 
-                       if (lexrc.lex() == LyXLex::LEX_DATA)  {
+                       if (lexrc.next())  {
                                lyx_name = lexrc.GetString();
                        } else {
-                               lexrc.printError("Bad color tag: `$$Token'");
+                               lexrc.printError("Missing color tag.");
                                break;
                        }
                        
-                       if (lexrc.lex() == LyXLex::LEX_DATA) {
+                       if (lexrc.next()) {
                                x11_name = lexrc.GetString();
                        } else {
-                               lexrc.printError("Bad color name: `$$Token'");
+                               lexrc.printError("Missing color name for color : `$$Token'");
                                break;
                        }
 
@@ -925,7 +934,7 @@ int LyXRC::read(string const & filename)
                        }
                        
                        if ((action = lyxaction.LookupFunc(cmd.c_str()))>= 0) {
-                               if (lyxerr.debugging(Debug::KEY)) {
+                               if (lyxerr.debugging(Debug::KBMAP)) {
                                        lyxerr << "RC_BIND: Sequence `"
                                               << seq << "' Command `"
                                               << cmd << "' Action `"
@@ -1097,6 +1106,39 @@ int LyXRC::read(string const & filename)
                        if ( lexrc.next())
                                docbook_to_pdf_command = lexrc.GetString();
                        break;
+                       
+               case RC_NEW_ASK_FILENAME:
+                       if ( lexrc.next())
+                               new_ask_filename = lexrc.GetBool();
+                       break;
+               case RC_CONVERTER:
+               {
+                       string from, to, command, flags;
+                       if (lexrc.next())
+                               from = lexrc.GetString();
+                       if (lexrc.next())
+                               to = lexrc.GetString();
+                       if (lexrc.next())
+                               command = lexrc.GetString();
+                       if (lexrc.next())
+                               flags = lexrc.GetString();
+                       command = subst(command, "$$FName", "'$$FName'");
+                       command = subst(command, "$$BaseName", "'$$BaseName'");
+                       command = subst(command, "$$OutName", "'$$OutName'");
+                       Converter::Add(from, to, command, flags);
+                       break;
+               }
+               case RC_VIEWER:
+               {
+                       string format, command;
+                       if (lexrc.next())
+                               format = lexrc.GetString();
+                       if (lexrc.next())
+                               command = lexrc.GetString();
+                       command = subst(command, "$$FName", "'$$FName'");
+                       Formats::SetViewer(format, command);
+                       break;
+               }
 
                case RC_LAST: break; // this is just a dummy
                }
@@ -1526,6 +1568,8 @@ void LyXRC::output(ostream & os) const
                os << "\\auto_number " << tostr(auto_number) << "\n";
        case RC_USE_GUI:
                os << "\\use_gui " << tostr(use_gui) << "\n";
+       case RC_NEW_ASK_FILENAME:
+               os << "\\new_ask_filename " << tostr(new_ask_filename) << "\n";
        }
        os.flush();
 }
@@ -1542,3 +1586,6 @@ void LyXRC::set_font_norm_type()
 
 // The global instance
 LyXRC lyxrc;
+
+// The global copy of the system lyxrc entries (everything except preferences)
+//LyXRC system_lyxrc;