File indexing completed on 2024-04-14 15:17:35

0001 /*****************************************************************************
0002  *   Copyright (C) 2007 by Holger Danielsson (holger.danielsson@versanet.de) *
0003  *             (C) 2016-2022 by Michel Ludwig (michel.ludwig@kdemail.net)    *
0004  *****************************************************************************/
0005 
0006 /***************************************************************************
0007  *                                                                         *
0008  *   This program is free software; you can redistribute it and/or modify  *
0009  *   it under the terms of the GNU General Public License as published by  *
0010  *   the Free Software Foundation; either version 2 of the License, or     *
0011  *   (at your option) any later version.                                   *
0012  *                                                                         *
0013  ***************************************************************************/
0014 
0015 #ifndef KILEEXTENSIONS_H
0016 #define KILEEXTENSIONS_H
0017 
0018 #include "kileconstants.h"
0019 
0020 #include <QString>
0021 #include <QUrl>
0022 
0023 namespace KileDocument
0024 {
0025 
0026 class Extensions
0027 {
0028 public:
0029     Extensions();
0030     ~Extensions() {}
0031 
0032     enum ExtensionType { TEX=1,  PACKAGES=2,  BIB=4, IMG=8, METAPOST=16, JS=32, KILE_PROJECT=64 };
0033 
0034     QString latexDocuments() const {
0035         return m_documents;
0036     }
0037     QString latexPackages() const {
0038         return m_packages;
0039     }
0040     QString bibtex() const {
0041         return m_bibtex;
0042     }
0043     QString images() const {
0044         return m_images;
0045     }
0046     QString metapost() const {
0047         return m_metapost;
0048     }
0049 
0050     QString latexDocumentDefault() const {
0051         return m_latexDefault;
0052     }
0053     QString bibtexDefault() const {
0054         return m_bibtexDefault;
0055     }
0056     QString metapostDefault() const {
0057         return m_metapostDefault;
0058     }
0059 
0060     // we need two methods as KEncodingFileDialog has no Qt-equivalent yet
0061     QString fileFilterKDEStyle(bool includeAllFiles, const std::list<ExtensionType>& extensions) const;
0062     QString fileFilterQtStyle(bool includeAllFiles, const std::list<ExtensionType>& extensions) const;
0063 
0064     bool isTexFile(const QString &fileName) const;
0065     bool isTexFile(const QUrl &url) const {
0066         return isTexFile(url.fileName());
0067     }
0068     bool isBibFile(const QString &fileName) const;
0069     bool isBibFile(const QUrl &url) const {
0070         return isBibFile(url.fileName());
0071     }
0072     bool isScriptFile(const QString &fileName) const;
0073     bool isScriptFile(const QUrl &url) const {
0074         return isScriptFile(url.fileName());
0075     }
0076     bool isProjectFile(const QString &fileName) const;
0077     bool isProjectFile(const QUrl &url) const {
0078         return isProjectFile(url.fileName());
0079     }
0080 
0081     bool isLatexDocument(const QString &ext) const {
0082         return validExtension(ext,m_documents);
0083     }
0084     bool isLatexPackage(const QString &ext) const {
0085         return validExtension(ext,m_packages);
0086     }
0087     bool isImage(const QString &ext) const {
0088         return validExtension(ext,m_images);
0089     }
0090 
0091     KileDocument::Type determineDocumentType(const QUrl &url) const;
0092     QString defaultExtensionForDocumentType(KileDocument::Type type) const;
0093 
0094 private:
0095     QString m_documents, m_packages;
0096     QString m_bibtex, m_metapost;
0097     QString m_images, m_script;
0098     QString m_project;
0099 
0100     QString m_latexDefault, m_bibtexDefault;
0101     QString m_metapostDefault, m_scriptDefault;
0102     QString m_projectDefault;
0103 
0104     bool isBibtex(const QString &ext) const {
0105         return validExtension(ext,m_bibtex);
0106     }
0107     bool isMetapost(const QString &ext) const {
0108         return validExtension(ext,m_metapost);
0109     }
0110     bool isScript(const QString &ext) const {
0111         return validExtension(ext,m_script);
0112     }
0113     bool isProject(const QString &ext) const {
0114         return validExtension(ext,m_project);
0115     }
0116     bool validExtension(const QString &ext, const QString &extensions) const;
0117 
0118     void fileFilterRaw(ExtensionType type, QString& ext, QString& text) const;
0119     QString fileFilterKDEStyle(ExtensionType type) const;
0120     QString fileFilterQtStyle(ExtensionType type) const;
0121 };
0122 
0123 
0124 }
0125 
0126 #endif