]> Shamusworld >> Repos - architektonas/blob - src/base/rs_layerlist.h
1a8a91e3ae21909edebec75f6d85052c1ad6417a
[architektonas] / src / base / rs_layerlist.h
1 #ifndef RS_LAYERLIST_H
2 #define RS_LAYERLIST_H
3
4 #include <iostream>
5 #include <QtCore>
6
7 class RS_Layer;
8 class RS_LayerListListener;
9
10 /**
11  * A list of layers.
12  *
13  * @author Andrew Mustun
14  */
15 class RS_LayerList
16 {
17         public:
18                 RS_LayerList();
19                 virtual ~RS_LayerList();
20
21                 void clear();
22                 uint count() const;
23                 RS_Layer * at(uint i);
24                 void activate(const QString & name, bool notify = false);
25                 void activate(RS_Layer * layer, bool notify = false);
26                 RS_Layer * getActive();
27                 virtual void add(RS_Layer * layer);
28                 virtual void remove(RS_Layer * layer);
29                 virtual void edit(RS_Layer * layer, const RS_Layer & source);
30                 RS_Layer * find(const QString & name);
31                 int getIndex(const QString & name);
32                 int getIndex(RS_Layer * layer);
33                 void toggle(const QString & name);
34                 void toggle(RS_Layer * layer);
35                 void toggleLock(RS_Layer * layer);
36                 void freezeAll(bool freeze);
37                 void addListener(RS_LayerListListener * listener);
38                 void removeListener(RS_LayerListListener * listener);
39                 void setModified(bool m);
40                 virtual bool isModified() const;
41
42                 friend std::ostream & operator<<(std::ostream & os, RS_LayerList & l);
43
44         private:
45                 //! layers in the graphic
46 //              Q3PtrList<RS_Layer> layers;
47                 QList<RS_Layer *> layers;
48                 //! List of registered LayerListListeners
49 //              Q3PtrList<RS_LayerListListener> layerListListeners;
50                 QList<RS_LayerListListener *> layerListListeners;
51                 //! Currently active layer
52                 RS_Layer * activeLayer;
53                 /** Flag set if the layer list was modified and not yet saved. */
54                 bool modified;
55 };
56
57 #endif