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
|
/*******************************************************************************
This file is part of LayoutStudio (http://github.com/Treeki/LayoutStudio)
Copyright (c) 2010 Treeki (treeki@gmail.com)
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, version 2.0.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License 2.0 for more details.
You should have received a copy of the GNU General Public License 2.0
along with this program. If not, see <http://www.gnu.org/licenses/>.
*******************************************************************************/
#ifndef LYTPACKAGEBASE_H
#define LYTPACKAGEBASE_H
#include <QStringList>
#include <QByteArray>
#include <QObject>
class LYTPackageBase : public QObject {
Q_OBJECT
public:
LYTPackageBase(QObject *parent = 0);
virtual ~LYTPackageBase();
enum ItemType {
Layout = 1,
Animation,
Texture,
Font
};
static QString defaultPathForItemType(ItemType type, bool withArc=false);
static QByteArray createSkeletonItem(ItemType type);
virtual QStringList list(ItemType type) const = 0;
virtual QByteArray get(ItemType type, const QString &name) const = 0;
virtual bool write(ItemType type, const QString &name, const QByteArray &data) = 0;
virtual bool rename(ItemType type, const QString &from, const QString &to) = 0;
virtual bool remove(ItemType type, const QString &name) = 0;
// Shortcuts
#define MakeThing(THING, ENUMVAL) \
QStringList list##THING##s () const { return list(ENUMVAL); } \
QByteArray get##THING (const QString &name) const \
{ return get(ENUMVAL, name); } \
\
bool write##THING (const QString &name, const QByteArray &data) \
{ return write(ENUMVAL, name, data); } \
\
bool remove##THING(const QString &name) { return remove(ENUMVAL, name); }
// Use it
MakeThing(Layout, Layout)
MakeThing(Anim, Animation)
MakeThing(Texture, Texture)
MakeThing(Font, Font)
#undef MakeThing
virtual bool needsExplicitSave() const = 0;
virtual bool savePackage() = 0;
virtual QString description() const = 0;
signals:
void aboutToAddFile(LYTPackageBase::ItemType type, QString name);
void aboutToRemoveFile(LYTPackageBase::ItemType type, QString name);
void aboutToRenameFile(LYTPackageBase::ItemType type, QString from, QString to);
void aboutToModifyFile(LYTPackageBase::ItemType type, QString name);
void fileWasAdded(LYTPackageBase::ItemType type, QString name);
void fileWasRemoved(LYTPackageBase::ItemType type, QString name);
void fileWasRenamed(LYTPackageBase::ItemType type, QString from, QString to);
void fileWasModified(LYTPackageBase::ItemType type, QString name);
};
#endif // LYTPACKAGEBASE_H
|