X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fconverter.h;h=943e03e9a361497cd2da749a5b80fffacd1391f1;hb=f268743f8c014ef2dadd260fd1a3873cb1d2038b;hp=fc84a7550d4af08f3ded1d9fbab8d6209a321935;hpb=7ec7c9da44662529e8a0ad4d60836df43a059ecd;p=lyx.git diff --git a/src/converter.h b/src/converter.h index fc84a7550d..943e03e9a3 100644 --- a/src/converter.h +++ b/src/converter.h @@ -1,69 +1,48 @@ // -*- C++ -*- -/* This file is part of - * ====================================================== - * - * LyX, The Document Processor - * - * Copyright 1995 Matthias Ettrich - * Copyright 1995-2000 The LyX Team. +/** + * \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. + */ #ifndef CONVERTER_H #define CONVERTER_H -#ifdef __GNUG__ -#pragma interface -#endif +#include "latexrunparams.h" +#include "graph.h" -#include #include -#include "LString.h" + +class Format; +class Formats; class Buffer; /// -class Format { +class Converter { public: /// - Format() {} + Converter(string const & f, string const & t, string const & c, + string const & l); /// - Format(string const & n, string const & e, string const & p, - string const & s, string const & v) : - name(n), extension(e), prettyname(p), shortcut(s), - viewer(v) {}; + void readFlags(); /// - string name; + string from; /// - string extension; + string to; /// - string prettyname; - /// - string shortcut; + string command; /// - string viewer; + string flags; /// - bool dummy() const; + Format const * From; /// - string const getname() const { - return name; - } -}; + Format const * To; -/// -struct Command { - /// - Command(Format const * f, Format const * t, string const & c) - : from(f), to(t), command(c), importer(false), - latex(false), original_dir(false), need_aux(false) {} - /// - Format const * from; - /// - Format const * to; - /// - string command; - /// The converter is used for importing - bool importer; /// The converter is latex or its derivatives bool latex; /// Do we need to run the converter in the original directory? @@ -78,118 +57,92 @@ struct Command { string result_file; /// Command to convert the program output to a LaTeX log file format string parselog; - /// Backends in which the converter is not used - std::vector disable; - - /// Used by the BFS algorithm - bool visited; - /// Used by the BFS algorithm - std::vector::iterator previous; }; -class FormatPair { -public: - /// - Format const * format; - /// - Format const * from; - /// - string command; - /// - FormatPair(Format const * f1, Format const * f2, string c) - : format(f1), from(f2), command(c) {} -}; /// -class Formats { +class Converters { public: - /// - typedef std::map FormatList; /// - void Add(string const & name); + typedef std::vector EdgePath; // to be removed SOON /// - void Add(string const & name, string const & extension, - string const & prettyname, string const & shortcut); + typedef std::vector ConverterList; /// - void SetViewer(string const & name, string const & command); + typedef ConverterList::const_iterator const_iterator; /// - bool View(Buffer const * buffer, string const & filename, - string const & format_name); + Converter const & get(int i) const { + return converterlist_[i]; + } /// - Format * GetFormat(string const & name); + Converter const * getConverter(string const & from, string const & to); /// - string const PrettyName(string const & name); + int getNumber(string const & from, string const & to); /// - string const Extension(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); /// - std::vector const GetAllFormats() const; -private: + void sort(); /// - FormatList formats; -}; - -/// -class Converter { -public: + std::vector const + getReachableTo(string const & target, bool clear_visited); /// - static - void Add(string const & from, string const & to, - string const & command, string const & flags); + std::vector const + getReachable(string const & from, bool only_viewable, + bool clear_visited); /// - static - std::vector const GetReachableTo(string const & target); + bool isReachable(string const & from, string const & to); /// - static - std::vector const - GetReachable(string const & from, bool only_viewable); + Graph::EdgePath const getPath(string const & from, string const & to); /// - static - bool IsReachable(string const & from, string const & to); + bool usePdflatex(Graph::EdgePath const & path); /// - static - bool Convert(Buffer const * buffer, + bool convert(Buffer const * buffer, string const & from_file, string const & to_file_base, string const & from_format, string const & to_format, - string const & using_format, string & to_file); + string & to_file); /// - static - bool Convert(Buffer const * buffer, + bool convert(Buffer const * buffer, string const & from_file, string const & to_file_base, - string const & from_format, string const & to_format, - string const & using_format = string()); + string const & from_format, string const & to_format); /// - static - string const SplitFormat(string const & str, string & format); + void update(Formats const & formats); /// - static - string const dvi_papersize(Buffer const * buffer); + void updateLast(Formats const & formats); /// - static - string const dvips_options(Buffer const * buffer); + bool formatIsUsed(string const & format); /// - static - void init(); + const_iterator begin() const { + return converterlist_.begin(); + } + const_iterator end() const { + return converterlist_.end(); + } /// - static - std::vector const GetAllCommands(); + void buildGraph(); private: /// - static - bool scanLog(Buffer const * 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 const * buffer, string const & command); + bool runLaTeX(Buffer const & buffer, string const & command, + LatexRunParams const &); + /// + ConverterList converterlist_; + /// + string latex_command_; /// - static - std::vector commands; + bool move(string const & from, string const & to, bool copy); /// - static - string latex_command; + Graph G_; }; -extern Formats formats; -extern Formats system_formats; +extern Converters converters; +extern Converters system_converters; -#endif +#endif //CONVERTER_H