NCL Composer  0.1.5
 All Classes Functions Variables Pages
qnlyview.h
1 /*
2  * Copyright 2011 TeleMidia/PUC-Rio.
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library. If not, see
16  * <http://www.gnu.org/licenses/>.
17  */
18 #ifndef QNLYVIEW_H
19 #define QNLYVIEW_H
20 
21 #include <QStackedWidget>
22 #include <QContextMenuEvent>
23 #include <QResizeEvent>
24 #include <QMenu>
25 #include <QAction>
26 #include <QMap>
27 #include <QSize>
28 #include <QUuid>
29 #include <QActionGroup>
30 #include <QDebug>
31 #include <QGraphicsView>
32 
33 #include "qnlycanvas.h"
34 #include "qnlygraphicsregion.h"
35 #include "qnlygraphicsregionbase.h"
36 
37 
38 class QnlyView : public QStackedWidget
39 {
40  Q_OBJECT
41 
42 public:
43  QnlyView(QWidget* parent = 0);
44 
45  virtual ~QnlyView();
46 
47  QnlyGraphicsRegionBase *getSelectedRegionBase();
48 
49  bool gridVisibility;
50 
51 public slots:
52  void addRegion(const QString regionUID,
53  const QString parentUID,
54  const QString regionbaseUID,
55  const QMap<QString, QString> attributes);
56 
57  void removeRegion(const QString regionUID,
58  const QString regionbaseUID);
59 
60  void changeRegion(const QString regionUID,
61  const QString regionbaseUID,
62  const QMap<QString, QString> attributes);
63 
64  void selectRegion(const QString regionUID,
65  const QString regionbaseUID);
66 
67  void addRegionBase(const QString regionbaseUID,
68  const QMap<QString, QString> attributes);
69 
70  void removeRegionBase(const QString regionbaseUID);
71 
72  void changeRegionBase(const QString regionbaseUID,
73  const QMap<QString, QString> attributes);
74 
75  void selectRegionBase(const QString regionbaseUID);
76 
77  void performSwitch(QAction* action);
78 
79  void performRegionBase();
80 
81  void requestRegionAddition(const QString regionUID,
82  const QString parentUID,
83  const QString regionbaseUID,
84  QMap<QString, QString> attributes);
85 
86  void requestRegionChange(const QString regionUID,
87  const QString regionbaseUID,
88  QMap<QString, QString> attributes);
89 
90  void setGridVisible(bool visible);
91 
92 signals:
93  void regionAdded(const QString regionUID,
94  const QString parentUID,
95  const QString regionbaseUID,
96  const QMap<QString, QString> attributes);
97 
98  void regionRemoved(const QString regionUID,
99  const QString regionbaseUID);
100 
101  void regionSelected(const QString regionUID,
102  const QString regionbaseUID);
103 
104  void regionChanged(const QString regionUID,
105  const QString regionbaseUID,
106  const QMap<QString, QString> attributes);
107 
108  void regionBaseAdded(const QString regionbaseUID,
109  const QMap<QString, QString> attributes);
110 
111  void regionBaseRemoved(const QString regionbaseUID);
112 
113  void regionBaseSelected(const QString regionbaseUID);
114 
115  void regionBaseChanged(const QString regionbaseUID,
116  const QMap<QString, QString> attributes);
117 
118  void mediaOverRegionAction(QString mediaID, QString regionUID);
119 
120 protected slots:
121  void addRegion(QnlyGraphicsRegion* region,
122  QnlyGraphicsRegion* parent,
123  QnlyGraphicsRegionBase* regionBase,
124  const QMap<QString, QString> attributes);
125 
126  void removeRegion(QnlyGraphicsRegion* region,
127  QnlyGraphicsRegionBase* regionBase);
128 
129  void changeRegion(QnlyGraphicsRegion* region,
130  QnlyGraphicsRegionBase* regionBase,
131  const QMap<QString, QString> attributes);
132 
133  void selectRegion(QnlyGraphicsRegion* region,
134  QnlyGraphicsRegionBase* regionBase);
135 
136  void addRegionBase(QnlyGraphicsRegionBase* regionBase,
137  const QMap<QString, QString> attributes);
138 
139  void removeRegionBase(QnlyGraphicsRegionBase* regionBase);
140 
141  void changeRegionBase(QnlyGraphicsRegionBase* regionBase,
142  const QMap<QString, QString> attributes);
143 
144  void selectRegionBase(QnlyGraphicsRegionBase* regionBase);
145 
146 protected:
147  virtual void contextMenuEvent(QContextMenuEvent *event);
148 
149 private:
150  void createActions();
151 
152  void createMenus();
153 
154  void createConnections();
155 
156  QMenu* viewMenu;
157 
158  QMenu* insertMenu;
159 
160  QMenu* showMenu;
161 
162  QMenu* arrangeMenu;
163 
164  QMenu* switchMenu;
165 
166  QMenu* contextMenu;
167 
168  QAction* helpAction;
169 
170  // QAction* undoAction; // Temporaly disabled
171 
172  QAction* redoAction;
173 
174  QAction* cutAction;
175 
176  QAction* copyAction;
177 
178  QAction* pasteAction;
179 
180  QAction* deleteAction;
181 
182  QAction* zoominAction;
183 
184  QAction* zoomoutAction;
185 
186  QAction* zoomresetAction;
187 
188  QAction* hideAction;
189 
190  QAction* fullscreenAction;
191 
192  QAction* exportAction;
193 
194  QAction* regionAction;
195 
196  QAction* regionbaseAction;
197 
198  QAction* bringfrontAction;
199 
200  QAction* bringforwardAction;
201 
202  QAction* sendbackwardAction;
203 
204  QAction* sendbackAction;
205 
206  QAction* propertiesAction;
207 
208  QnlyGraphicsRegion* selectedRegion;
209 
210  QnlyGraphicsRegionBase* selectedRegionBase;
211 
212  int nregions;
213 
214  int nregionbases;
215 
216  QActionGroup* regionbaseActionGroup;
217 
218  QMap<QString, QAction*> regionbaseActions;
219 
220  QMap<QString, QnlyGraphicsRegion*> regions;
221 
222  QMap<QString, QnlyGraphicsRegionBase*> regionbases;
223 };
224 
225 #endif // QNLYVIEW_H