1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
|
#ifndef TEMPLATEMANAGER_H
#define TEMPLATEMANAGER_H
#include "mostQtHeaders.h"
class Template;
class TemplateSelector;
class TemplateHandle
{
public:
friend class Template;
TemplateHandle() : m_tmpl(0) {}
TemplateHandle(const TemplateHandle &th);
explicit TemplateHandle(Template *tmpl);
~TemplateHandle();
TemplateHandle &operator = (const TemplateHandle &th);
bool isValid() const;
QString name() const;
QString description() const;
QString author() const;
QString version() const;
QDate date() const;
QString license() const;
QPixmap previewImage() const;
QString file() const;
bool isEditable() const;
bool isMultifile() const;
bool createInFolder(const QString &path) const;
QStringList filesToOpen() const;
private:
void setTmpl(Template *tmpl);
Template *m_tmpl; // only write via setTmpl()
};
Q_DECLARE_METATYPE( TemplateHandle )
class AbstractTemplateResource
{
public:
virtual QList<TemplateHandle> getTemplates() = 0;
virtual bool isAccessible() = 0;
virtual QString name() = 0;
virtual QString description() = 0;
virtual QIcon icon() = 0;
protected:
AbstractTemplateResource() {}
};
Q_DECLARE_INTERFACE( AbstractTemplateResource , "TeXstudio/AbstractTemplateResource")
Q_DECLARE_METATYPE( AbstractTemplateResource * )
class TemplateManager : public QObject
{
Q_OBJECT
public:
explicit TemplateManager(QObject *parent = 0);
static void setConfigBaseDir(const QString &dir) { configBaseDir = dir; }
static QString userTemplateDir() { return configBaseDir + "templates/user/"; }
static QString builtinTemplateDir();
static bool ensureUserTemplateDirExists();
static void checkForOldUserTemplates();
AbstractTemplateResource *createResourceFromXMLNode(const QDomElement &resElem);
QList<AbstractTemplateResource *> resourcesFromXMLFile(const QString &filename);
TemplateSelector *createLatexTemplateDialog();
bool tableTemplateDialogExec();
QString selectedTemplateFile() { return selectedFile; }
signals:
void editRequested(const QString &filename) ;
public slots:
private slots:
void editTemplate(TemplateHandle th);
void editTemplateInfo(TemplateHandle th);
private:
static QString configBaseDir;
QString selectedFile;
};
class LatexTemplateManager : public TemplateManager
{
Q_OBJECT
public:
explicit LatexTemplateManager(QObject *parent = 0);
};
#endif // TEMPLATEMANAGER_H
|