X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fconverter.h;h=b247d363a34521d3db6498e7404d451168e31690;hb=2e57f2ff0ae7cd4a6efbf634ffe6d2f4379d9cfc;hp=33d45392c95636f5f78b95920d8d4f62b20da348;hpb=325dccab098a80c1d43ab76e9a928f937aa04fc4;p=lyx.git diff --git a/src/converter.h b/src/converter.h index 33d45392c9..b247d363a3 100644 --- a/src/converter.h +++ b/src/converter.h @@ -1,39 +1,51 @@ // -*- C++ -*- -/* This file is part of - * ====================================================== - * - * LyX, The Document Processor - * - * Copyright 1995 Matthias Ettrich - * Copyright 1995-2000 The LyX Team. - * - * ====================================================== */ #ifndef CONVERTER_H #define CONVERTER_H -#ifdef __GNUG__ -#pragma interface -#endif +/** + * \file converter.h + * This file is part of LyX, the document processor. + * Licence details can be found in the file COPYING. + * + * \author Dekel Tsur + * + * Full author contact details are available in file CREDITS + */ + +#include "latexrunparams.h" +#include "graph.h" -#include #include -#include "LString.h" + +class Format; +class Formats; class Buffer; /// -struct Command { +class Converter { +public: /// - Command(string const & f, string const & t, string const & c) - : from(f), to(t), command(c), - original_dir(false), need_aux(false) {} + Converter(string const & f, string const & t, string const & c, + string const & l); + /// + void readFlags(); /// string from; /// string to; /// string command; + /// + string flags; + /// + Format const * From; + /// + Format const * To; + + /// The converter is latex or its derivatives + bool latex; /// Do we need to run the converter in the original directory? bool original_dir; /// This converter needs the .aux files @@ -46,94 +58,92 @@ struct Command { string result_file; /// Command to convert the program output to a LaTeX log file format string parselog; - - /// Used by the BFS algorithm - bool visited; - /// Used by the BFS algorithm - std::vector::iterator previous; }; + /// -class Format { +class Converters { public: /// - Format() : in_degree(0) {} + typedef std::vector EdgePath; // to be removed SOON /// - Format(string const & n); + typedef std::vector ConverterList; /// - string name; + typedef ConverterList::const_iterator const_iterator; /// - string prettyname; + Converter const & get(int i) const { + return converterlist_[i]; + } /// - string viewer; + Converter const * getConverter(string const & from, string const & to); /// - int in_degree; -}; - -/// -class Formats { -public: + int getNumber(string const & from, string const & to); /// - static - void Add(string const & name); + void add(string const & from, string const & to, + string const & command, string const & flags); + // + void erase(string const & from, string const & to); /// - static - void SetViewer(string const & name, string const & command); + void sort(); /// - static - bool View(Buffer const * buffer, string const & filename); + std::vector const + getReachableTo(string const & target, bool clear_visited); /// - static - Format * GetFormat(string const & name); + std::vector const + getReachable(string const & from, bool only_viewable, + bool clear_visited); /// - static - string const PrettyName(string const & name); -private: + bool isReachable(string const & from, string const & to); /// - static - std::map formats; -}; - -/// -class Converter { -public: + Graph::EdgePath const getPath(string const & from, string const & to); /// - static - void Add(string const & from, string const & to, - string const & command, string const & flags); + 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); /// - static - std::vector > const - GetReachable(string const & from, - bool only_viewable = false); + bool convert(Buffer const * buffer, + string const & from_file, string const & to_file_base, + string const & from_format, string const & to_format); /// - static - bool Convert(Buffer const * buffer, string const & from_file, - string const & to_file, string const & using_format, - string * view_file = 0); + void update(Formats const & formats); /// - static - string const SplitFormat(string const & str, string & format); + void updateLast(Formats const & formats); /// - static - string const dvi_papersize(Buffer const * buffer); + bool formatIsUsed(string const & format); /// - static - string const dvips_options(Buffer const * buffer); + const_iterator begin() const { + return converterlist_.begin(); + } + const_iterator end() const { + return converterlist_.end(); + } + /// + void buildGraph(); private: /// - static - bool scanLog(Buffer * buffer, string const & command, + std::vector const + Converters::intToFormat(std::vector const & input); + /// + bool scanLog(Buffer const * buffer, string const & command, string const & filename); /// - static - bool runLaTeX(Buffer * buffer, string const & command); + bool runLaTeX(Buffer const * buffer, string const & command, + LatexRunParams const &); /// - static - std::vector commands; + ConverterList converterlist_; /// - static - string latex_command; + string latex_command_; + /// + bool move(string const & from, string const & to, bool copy); + /// + Graph G_; }; -#endif +extern Converters converters; + +extern Converters system_converters; + +#endif //CONVERTER_H