]> git.lyx.org Git - lyx.git/blobdiff - src/Format.cpp
tex2lyx: add strike-outs etc. to the TeX testfile
[lyx.git] / src / Format.cpp
index 22ee7ee0142af74705bf29b1a2b1733cd534fffc..1ae3960163de695bcb9457bf14bec40842ecf342 100644 (file)
@@ -29,6 +29,8 @@
 #include "support/Translator.h"
 
 #include <algorithm>
+#include <map>
+#include <ctime>
 
 // FIXME: Q_WS_MACX is not available, it's in Qt
 #ifdef USE_MACOSX_PACKAGING
@@ -75,23 +77,32 @@ private:
        string extension_;
 };
 
+
+class FormatPrettyNameEqual : public unary_function<Format, bool> {
+public:
+       FormatPrettyNameEqual(string const & prettyname)
+               : prettyname_(prettyname) {}
+       bool operator()(Format const & f) const
+       {
+               return f.prettyname() == prettyname_;
+       }
+private:
+       string prettyname_;
+};
+
 } //namespace anon
 
 
 bool operator<(Format const & a, Format const & b)
 {
-       // use the compare_ascii_no_case instead of compare_no_case,
-       // because in turkish, 'i' is not the lowercase version of 'I',
-       // and thus turkish locale breaks parsing of tags.
-
-       return compare_ascii_no_case(a.prettyname(), b.prettyname()) < 0;
+       return _(a.prettyname()) < _(b.prettyname());
 }
 
 
 Format::Format(string const & n, string const & e, string const & p,
               string const & s, string const & v, string const & ed,
               int flags)
-       : name_(n), extensions_(e), prettyname_(p), shortcut_(s), viewer_(v),
+       : name_(n), prettyname_(p), shortcut_(s), viewer_(v),
          editor_(ed), flags_(flags)
 {
        extension_list_ = getVectorFromString(e, ",");
@@ -105,6 +116,12 @@ bool Format::dummy() const
 }
 
 
+string const Format::extensions() const
+{
+       return getStringFromVector(extension_list_, ", ");
+}
+
+
 bool Format::hasExtension(string const & e) const
 {
        return (find(extension_list_.begin(), extension_list_.end(), e)
@@ -128,7 +145,6 @@ string const Format::parentFormat() const
 
 void Format::setExtensions(string const & e)
 {
-       extensions_ = e;
        extension_list_ = getVectorFromString(e, ",");
 }
 
@@ -189,6 +205,32 @@ string Formats::getFormatFromExtension(string const & ext) const
 }
 
 
+string Formats::getFormatFromPrettyName(string const & prettyname) const
+{
+       if (!prettyname.empty()) {
+               Formats::const_iterator cit =
+                       find_if(formatlist.begin(), formatlist.end(),
+                               FormatPrettyNameEqual(prettyname));
+               if (cit != formats.end())
+                       return cit->name();
+       }
+       return string();
+}
+
+
+/// Used to store last timestamp of file and whether it is (was) zipped
+struct ZippedInfo {
+       bool zipped;
+       std::time_t timestamp;
+       ZippedInfo(bool zipped, std::time_t timestamp)
+       : zipped(zipped), timestamp(timestamp) { }
+};
+
+
+/// Mapping absolute pathnames of files to their ZippedInfo metadata.
+static std::map<std::string, ZippedInfo> zipped_;
+
+
 bool Formats::isZippedFile(support::FileName const & filename) const {
        string const & fname = filename.absFileName();
        time_t timestamp = filename.lastModified();