X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fconverter.h;h=6350fd5fdc98a623bb10e4af730386053bb309d4;hb=b01a9dc187d9cd396a57463ad27511379dcdc9cd;hp=e69a769ad03f900714d72b76d00ffd445e45f579;hpb=ccce6b9662e3a753d8864b1832d766a8f4ceef02;p=lyx.git diff --git a/src/converter.h b/src/converter.h index e69a769ad0..6350fd5fdc 100644 --- a/src/converter.h +++ b/src/converter.h @@ -1,8 +1,4 @@ // -*- C++ -*- - -#ifndef CONVERTER_H -#define CONVERTER_H - /** * \file converter.h * This file is part of LyX, the document processor. @@ -10,35 +6,46 @@ * * \author Dekel Tsur * - * Full author contact details are available in file CREDITS + * Full author contact details are available in file CREDITS. */ -#include "latexrunparams.h" +#ifndef CONVERTER_H +#define CONVERTER_H + #include "graph.h" +#include "outputparams.h" #include +#include + + +namespace lyx { +namespace support { class FileName; } + +class Buffer; +class ErrorList; class Format; class Formats; +class OutputParams; -class Buffer; /// class Converter { public: /// - Converter(string const & f, string const & t, string const & c, - string const & l); + Converter(std::string const & f, std::string const & t, std::string const & c, + std::string const & l); /// void readFlags(); /// - string from; + std::string from; /// - string to; + std::string to; /// - string command; + std::string command; /// - string flags; + std::string flags; /// Format const * From; /// @@ -46,18 +53,20 @@ public: /// The converter is latex or its derivatives bool latex; + /// The converter is xml + bool xml; /// Do we need to run the converter in the original directory? bool original_dir; /// This converter needs the .aux files bool need_aux; /// If the converter put the result in a directory, then result_dir /// is the name of the directory - string result_dir; + std::string result_dir; /// If the converter put the result in a directory, then result_file /// is the name of the main file in that directory - string result_file; + std::string result_file; /// Command to convert the program output to a LaTeX log file format - string parselog; + std::string parselog; }; @@ -75,48 +84,51 @@ public: return converterlist_[i]; } /// - Converter const * getConverter(string const & from, string const & to); + Converter const * getConverter(std::string const & from, + std::string const & to) const; /// - int getNumber(string const & from, string const & to); + int getNumber(std::string const & from, std::string const & to) const; /// - void add(string const & from, string const & to, - string const & command, string const & flags); + void add(std::string const & from, std::string const & to, + std::string const & command, std::string const & flags); // - void erase(string const & from, string const & to); + void erase(std::string const & from, std::string const & to); /// void sort(); /// std::vector const - getReachableTo(string const & target, bool clear_visited); + getReachableTo(std::string const & target, bool clear_visited); /// std::vector const - getReachable(string const & from, bool only_viewable, + getReachable(std::string const & from, bool only_viewable, bool clear_visited); - /// - bool isReachable(string const & from, string const & to); - /// - Graph::EdgePath const getPath(string const & from, string const & to); - /// - bool usePdflatex(Graph::EdgePath const & path); - /// - bool convert(Buffer const * buffer, - string const & from_file, string const & to_file_base, - string const & from_format, string const & to_format, - string & to_file); + /// Does a conversion path from format \p from to format \p to exist? + bool isReachable(std::string const & from, std::string const & to); + /// + Graph::EdgePath const getPath(std::string const & from, std::string const & to); + /// + OutputParams::FLAVOR getFlavor(Graph::EdgePath const & path); + /// Flags for converting files + enum ConversionFlags { + /// No special flags + none = 0, + /// Use the default converter if no converter is defined + try_default = 1 << 0, + /// Get the converted file from cache if possible + try_cache = 1 << 1 + }; /// bool convert(Buffer const * buffer, - string const & from_file, string const & to_file_base, - string const & from_format, string const & to_format); - /// - string const dvips_options(Buffer const * buffer); - /// - string const dvipdfm_options(Buffer const * buffer); + support::FileName const & from_file, support::FileName const & to_file, + support::FileName const & orig_from, + std::string const & from_format, std::string const & to_format, + ErrorList & errorList, int conversionflags = none); /// void update(Formats const & formats); /// void updateLast(Formats const & formats); /// - bool formatIsUsed(string const & format); + bool formatIsUsed(std::string const & format); /// const_iterator begin() const { return converterlist_.begin(); @@ -129,25 +141,34 @@ public: private: /// std::vector const - Converters::intToFormat(std::vector const & input); + intToFormat(std::vector const & input); /// - bool scanLog(Buffer const * buffer, string const & command, - string const & filename); + bool scanLog(Buffer const & buffer, std::string const & command, + support::FileName const & filename, ErrorList & errorList); /// - bool runLaTeX(Buffer const * buffer, string const & command, - LatexRunParams const &); + bool runLaTeX(Buffer const & buffer, std::string const & command, + OutputParams const &, ErrorList & errorList); /// ConverterList converterlist_; /// - string latex_command_; - /// - bool move(string const & from, string const & to, bool copy); + std::string latex_command_; + /// If \p from = /path/file.ext and \p to = /path2/file2.ext2 then + /// this method moves each /path/file*.ext file to /path2/file2*.ext2 + bool move(std::string const & fmt, + support::FileName const & from, support::FileName const & to, + bool copy); /// Graph G_; }; -extern Converters converters; +/// The global instance. +/// Implementation is in lyx_main.C. +extern Converters & theConverters(); + +/// The global copy after reading lyxrc.defaults. +/// Implementation is in lyx_main.C. +extern Converters & theSystemConverters(); -extern Converters system_converters; +} // namespace lyx #endif //CONVERTER_H