X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FConverter.h;h=091dbcd394e4b8075f3d4d04af6ad279c96a3d7d;hb=46c6c40bea6ac75474b712b718b5903a8451bd31;hp=8f63aba5124f4f08cc33a87519299029ed514d2f;hpb=f11bfe1697492f79f8cc02d4021305005cf539ef;p=lyx.git diff --git a/src/Converter.h b/src/Converter.h index 8f63aba512..091dbcd394 100644 --- a/src/Converter.h +++ b/src/Converter.h @@ -13,7 +13,6 @@ #define CONVERTER_H #include "Graph.h" -#include "OutputParams.h" #include "support/trivstring.h" #include @@ -29,9 +28,20 @@ class Buffer; class ErrorList; class Format; class Formats; +class OutputParams; -typedef std::vector FormatList; +enum class Flavor : int; +class ConversionException : public std::exception { +public: + ConversionException() {} + virtual ~ConversionException() noexcept {} + const char * what() const noexcept override + { return "Exception caught in conversion routine!"; } +}; + + +typedef std::vector FormatList; /// class Converter { @@ -48,7 +58,7 @@ public: /// std::string const command() const { return command_; } /// - void setCommand(std::string const & command) { command_ = command; } + void setCommand(std::string const & command); /// std::string const flags() const { return flags_; } /// @@ -66,7 +76,7 @@ public: /// std::string const latex_flavor() const { return latex_flavor_; } /// - bool xml() const { return xml_; } + bool docbook() const { return docbook_; } /// bool need_aux() const { return need_aux_; } /// Return whether or not the needauth option is set for this converter @@ -79,6 +89,8 @@ public: std::string const result_file() const { return result_file_; } /// std::string const parselog() const { return parselog_; } + /// + std::string const hyperref_driver() const { return href_driver_; } private: /// @@ -98,8 +110,8 @@ private: bool latex_; /// The latex derivate trivstring latex_flavor_; - /// The converter is xml - bool xml_; + /// The converter is DocBook + bool docbook_; /// This converter needs the .aux files bool need_aux_; /// we need a "nice" file from the backend, c.f. OutputParams.nice. @@ -114,6 +126,8 @@ private: trivstring result_file_; /// Command to convert the program output to a LaTeX log file format trivstring parselog_; + /// The hyperref driver + trivstring href_driver_; }; @@ -124,6 +138,12 @@ public: typedef std::vector ConverterList; /// typedef ConverterList::const_iterator const_iterator; + /// Return values for converter runs + enum RetVal { + SUCCESS = 0, + FAILURE = 1, + KILLED = 1000 + }; /// Converter const & get(int i) const { return converterlist_[i]; } @@ -157,8 +177,10 @@ public: /// Graph::EdgePath getPath(std::string const & from, std::string const & to); /// - OutputParams::FLAVOR getFlavor(Graph::EdgePath const & path, - Buffer const * buffer = 0); + Flavor getFlavor(Graph::EdgePath const & path, + Buffer const * buffer = nullptr) const; + /// + std::string getHyperrefDriver(Graph::EdgePath const & path) const; /// Flags for converting files enum ConversionFlags { /// No special flags @@ -169,17 +191,17 @@ public: try_cache = 1 << 1 }; /// - bool convert(Buffer const * buffer, + RetVal convert(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); + ErrorList & errorList, int conversionflags = none, bool includeall = false); /// void update(Formats const & formats); /// void updateLast(Formats const & formats); /// - bool formatIsUsed(std::string const & format); + bool formatIsUsed(std::string const & format) const; /// const_iterator begin() const { return converterlist_.begin(); } /// @@ -210,7 +232,7 @@ private: bool scanLog(Buffer const & buffer, std::string const & command, support::FileName const & filename, ErrorList & errorList); /// - bool runLaTeX(Buffer const & buffer, std::string const & command, + RetVal runLaTeX(Buffer const & buffer, std::string const & command, OutputParams const &, ErrorList & errorList); /// ConverterList converterlist_;