NCL Composer  0.1.5
 All Classes Functions Variables Pages
qnstmenu.cpp
1 #include "qnstmenu.h"
2 
3 QnstMenu::QnstMenu(QWidget* parent)
4  : QMenu(parent)
5 {
6  createActions();
7  createMenus();
8  createConnections();
9 
10  // addAction(actionHelp);
11  // addSeparator();
12  // addAction(actionUndo);
13  // addAction(actionRedo);
14  addSeparator();
15  addAction(actionCut);
16  addAction(actionCopy);
17  addAction(actionPaste);
18  addSeparator();
19  addAction(actionDelete);
20  addSeparator();
21  addAction(actionExport);
22  addSeparator();
23  // addMenu(menuView); // disabled for a while
24  addMenu(menuInsert);
25  addSeparator();
26  // addMenu(menuShow); // disabled for a while
27  // addMenu(menuArrange); // disabled for a while
28  addMenu(menuAdjust);
29  // addSeparator(); // disabled for a while
30  // addAction(actionHide); // disabled for a while
31  // addSeparator(); // disabled for a while
32  // addAction(actionProperties); // disabled for a while
33 }
34 
35 QnstMenu::~QnstMenu()
36 {
37 
38 }
39 
40 void QnstMenu::createActions()
41 {
42  // help action
43  actionHelp = new QAction(this);
44  actionHelp->setText(tr("Help"));
45  actionHelp->setIcon(QIcon(":/icon/help"));
46  actionHelp->setShortcut(QKeySequence("F1"));
47  actionHelp->setEnabled(false);
48 
49  // undo action
50  // actionUndo = new QAction(this);
51  // actionUndo->setText(tr("Undo"));
52  // actionUndo->setIcon(QIcon(":/icon/undo"));
53  // actionUndo->setShortcut(QKeySequence("Ctrl+Z"));
54  // actionUndo->setEnabled(false);
55 
56  // redo action
57  // actionRedo = new QAction(this);
58  // actionRedo->setText(tr("Redo"));
59  // actionRedo->setIcon(QIcon(":/icon/redo"));
60  // actionRedo->setShortcut(QKeySequence("Ctrl+Shift+Z"));
61  // actionRedo->setEnabled(false);
62 
63  // cut action
64  actionCut = new QAction(this);
65  actionCut->setText(tr("Cut"));
66  actionCut->setIcon(QIcon(":/icon/cut"));
67  actionCut->setShortcut(QKeySequence("Ctrl+X"));
68  actionCut->setEnabled(false);
69 
70  // copy action
71  actionCopy = new QAction(this);
72  actionCopy->setText(tr("Copy"));
73  actionCopy->setIcon(QIcon(":/icon/copy"));
74  actionCopy->setShortcut(QKeySequence("Ctrl+C"));
75  actionCopy->setEnabled(false);
76 
77  // paste action
78  actionPaste = new QAction(this);
79  actionPaste->setText(tr("Paste"));
80  actionPaste->setIcon(QIcon(":/icon/paste"));
81  actionPaste->setShortcut(QKeySequence("Ctrl+V"));
82  actionPaste->setEnabled(false);
83 
84  // delete action
85  actionDelete = new QAction(this);
86  actionDelete->setText(tr("Delete"));
87  actionDelete->setIcon(QIcon(":/icon/delete"));
88  actionDelete->setShortcut(QKeySequence("Del"));
89  actionDelete->setEnabled(false);
90 
91  // zoomin action
92  actionZoomIn = new QAction(this);
93  actionZoomIn->setText(tr("Zoom In"));
94  actionZoomIn->setIcon(QIcon(":/icon/zoomin"));
95  actionZoomIn->setShortcut(QKeySequence("Ctrl++"));
96  actionZoomIn->setEnabled(false);
97 
98  // zoomout action
99  actionZoomOut = new QAction(this);
100  actionZoomOut->setText(tr("Zoom Out"));
101  actionZoomOut->setIcon(QIcon(":/icon/zoomout"));
102  actionZoomOut->setShortcut(QKeySequence("Ctrl+-"));
103  actionZoomOut->setEnabled(false);
104 
105  // reset action
106  actionZoomReset = new QAction(this);
107  actionZoomReset->setText(tr("Reset"));
108  actionZoomReset->setIcon(QIcon(":/icon/zoomreset"));
109  actionZoomReset->setShortcut(QKeySequence("Ctrl+0"));
110  actionZoomReset->setEnabled(false);
111 
112  // fullscreen action
113  actionFullscreen = new QAction(this);
114  actionFullscreen->setText(tr("Full Screen"));
115  actionFullscreen->setIcon(QIcon(":/icon/fullscreen"));
116  actionFullscreen->setShortcut(QKeySequence("F11"));
117  actionFullscreen->setEnabled(false);
118 
119  // export action
120  actionExport = new QAction(this);
121  actionExport->setText(tr("Export..."));
122  actionExport->setIcon(QIcon(":/icon/export"));
123  actionExport->setEnabled(false);
124 
125  // add media action
126  actionAddMedia = new QAction(this);
127  actionAddMedia->setText(tr("Media"));
128  actionAddMedia->setData(Qnst::Media);
129  actionAddMedia->setIcon(QIcon(QnstUtil::iconFromMediaType(Qnst::Media)));
130  actionAddMedia->setEnabled(false);
131 
132  // add context action
133  actionAddContext = new QAction(this);
134  actionAddContext->setText(tr("Context"));
135  actionAddContext->setData(Qnst::Context);
136  actionAddContext->setIcon(QIcon(QnstUtil::iconFromMediaType(Qnst::Context)));
137  actionAddContext->setEnabled(false);
138 
139  // add switch action
140  actionAddSwitch = new QAction(this);
141  actionAddSwitch->setText(tr("Switch"));
142  actionAddSwitch->setData(Qnst::Switch);
143  actionAddSwitch->setIcon(QIcon(QnstUtil::iconFromMediaType(Qnst::Switch)));
144  actionAddSwitch->setEnabled(false);
145 
146  // add body action
147  actionAddBody = new QAction(this);
148  actionAddBody->setText(tr("Body"));
149  actionAddBody->setData(Qnst::Body);
150  actionAddBody->setIcon(QIcon(QnstUtil::iconFromMediaType(Qnst::Body)));
151  actionAddBody->setEnabled(false);
152 
153  // add port action
154  actionAddPort = new QAction(this);
155  actionAddPort->setText(tr("Port"));
156  actionAddPort->setData(Qnst::Port);
157  actionAddPort->setIcon(QIcon(QnstUtil::iconFromMediaType(Qnst::Port)));
158  actionAddPort->setEnabled(false);
159 
160  // add mapping action
161  actionAddSwitchPort = new QAction(this);
162  actionAddSwitchPort->setText(tr("Switch Port"));
163  actionAddSwitchPort->setData(Qnst::SwitchPort);
164  actionAddSwitchPort->setIcon(QIcon(QnstUtil::iconFromMediaType(Qnst::SwitchPort)));
165  actionAddSwitchPort->setEnabled(false);
166 
167  // area action
168  actionAddArea = new QAction(this);
169  actionAddArea->setText(tr("Area"));
170  actionAddArea->setData(Qnst::Area);
171  actionAddArea->setIcon(QIcon(QnstUtil::iconFromMediaType(Qnst::Area)));
172  actionAddArea->setEnabled(false);
173 
174  // property action
175  actionAddProperty = new QAction(this);
176  actionAddProperty->setText(tr("Property"));
177  actionAddProperty->setData(Qnst::Property);
178  actionAddProperty->setIcon(QIcon(QnstUtil::iconFromMediaType(Qnst::Property)));
179  actionAddProperty->setEnabled(false);
180 
181  // aggregator action
182  actionAddAggregator = new QAction(this);
183  actionAddAggregator->setText(tr("Link"));
184  actionAddAggregator->setData(Qnst::Link);
185  actionAddAggregator->setIcon(QIcon(QnstUtil::iconFromMediaType(Qnst::Link)));
186  actionAddAggregator->setEnabled(false);
187 
188  // bring to front action
189  actionBringfront = new QAction(this);
190  actionBringfront->setText(tr("Bring to Front"));
191  actionBringfront->setIcon(QIcon(":/icon/bringfront"));
192  actionBringfront->setShortcut(QKeySequence("Shift+Ctrl+]"));
193  actionBringfront->setEnabled(false);
194 
195  // bring forward action
196  actionBringforward = new QAction(this);
197  actionBringforward->setText(tr("Bring Forward"));
198  actionBringforward->setIcon(QIcon(":/icon/bringforward"));
199  actionBringforward->setShortcut(QKeySequence("Ctrl+]"));
200  actionBringforward->setEnabled(false);
201 
202  // send backward action
203  actionSendbackward = new QAction(this);
204  actionSendbackward->setText(tr("Send Backward"));
205  actionSendbackward->setIcon(QIcon(":/icon/sendbackward"));
206  actionSendbackward->setShortcut(QKeySequence("Ctrl+["));
207  actionSendbackward->setEnabled(false);
208 
209  // send to back action
210  actionSendback = new QAction(this);
211  actionSendback->setText(tr("Send to Back"));
212  actionSendback->setIcon(QIcon(":/icon/sendback"));
213  actionSendback->setShortcut(QKeySequence("Shift+Ctrl+["));
214  actionSendback->setEnabled(false);
215 
216  // hide action
217  actionHide = new QAction(this);
218  actionHide->setText(tr("Hide"));
219  actionHide->setShortcut(QKeySequence("Ctrl+H"));
220  actionHide->setEnabled(false);
221 
222  // properties action
223  actionProperties = new QAction(this);
224  actionProperties->setText(tr("Properties"));
225  actionProperties->setEnabled(false);
226 
227  // auto action
228  actionAuto = new QAction(this);
229  actionAuto->setText(tr("Auto (Unstable)"));
230  actionAuto->setEnabled(false);
231 }
232 
233 void QnstMenu::createMenus()
234 {
235  // view menu
236  menuView = new QMenu();
237  menuView->setTitle(tr("View"));
238 
239  menuView->addAction(actionZoomIn);
240  menuView->addAction(actionZoomOut);
241  menuView->addAction(actionZoomReset);
242  menuView->addSeparator();
243  menuView->addAction(actionFullscreen);
244 
245  menuView->setEnabled(false);
246 
247  // insert menu
248  menuInsert = new QMenu();
249  menuInsert->setTitle(tr("Insert"));
250 
251  menuInsert->addAction(actionAddMedia);
252  menuInsert->addSeparator();
253  menuInsert->addAction(actionAddContext);
254  menuInsert->addAction(actionAddSwitch);
255  menuInsert->addSeparator();
256  menuInsert->addAction(actionAddBody);
257  menuInsert->addSeparator();
258  menuInsert->addAction(actionAddPort);
259  menuInsert->addAction(actionAddSwitchPort);
260  menuInsert->addAction(actionAddArea);
261  menuInsert->addAction(actionAddProperty);
262  menuInsert->addSeparator();
263  menuInsert->addAction(actionAddAggregator);
264 
265  menuInsert->setEnabled(false);
266 
267  // show menu
268  menuShow = new QMenu();
269  menuShow->setTitle(tr("Show"));
270 
271  menuShow->setEnabled(false);
272 
273  // arrange menu
274  menuArrange = new QMenu();
275  menuArrange->setTitle(tr("Arrange"));
276 
277  menuArrange->addAction(actionBringfront);
278  menuArrange->addAction(actionBringforward);
279  menuArrange->addAction(actionSendbackward);
280  menuArrange->addAction(actionSendback);
281 
282  menuArrange->setEnabled(false);
283 
284  // adjust menu
285  menuAdjust = new QMenu();
286  menuAdjust->setTitle(tr("Adjust"));
287 
288  menuAdjust->addAction(actionAuto);
289 
290  menuAdjust->setEnabled(false);
291 }
292 
293 void QnstMenu::createConnections()
294 {
295  connect(actionHelp, SIGNAL(triggered()), SIGNAL(helpRequested()));
296 
297  // connect(actionUndo, SIGNAL(triggered()), SIGNAL(undoRequested()));
298  // connect(actionRedo, SIGNAL(triggered()), SIGNAL(redoRequested()));
299 
300  connect(actionCut, SIGNAL(triggered()), SIGNAL(cutRequested()));
301  connect(actionCopy, SIGNAL(triggered()), SIGNAL(copyRequested()));
302  connect(actionPaste, SIGNAL(triggered()), SIGNAL(pasteRequested()));
303 
304  connect(actionDelete, SIGNAL(triggered()), SIGNAL(deleteRequested()));
305 
306  connect(actionExport, SIGNAL(triggered()), SIGNAL(exportRequested()));
307 
308  connect(actionZoomIn, SIGNAL(triggered()), SIGNAL(zoominRequested()));
309  connect(actionZoomOut, SIGNAL(triggered()), SIGNAL(zoomoutRequested()));
310  connect(actionZoomReset, SIGNAL(triggered()), SIGNAL(zoomresetRequested()));
311  connect(actionFullscreen, SIGNAL(triggered()), SIGNAL(fullscreenRequested()));
312 
313  connect(actionAddMedia, SIGNAL(triggered()), SLOT(dispatchAddAction()));
314 
315  // Add actions
316  connect(actionAddContext, SIGNAL(triggered()), SLOT(dispatchAddAction()));
317  connect(actionAddSwitch, SIGNAL(triggered()), SLOT(dispatchAddAction()));
318  connect(actionAddBody, SIGNAL(triggered()), SLOT(dispatchAddAction()));
319  connect(actionAddPort, SIGNAL(triggered()), SLOT(dispatchAddAction()));
320  connect(actionAddSwitchPort, SIGNAL(triggered()), SLOT(dispatchAddAction()));
321  connect(actionAddArea, SIGNAL(triggered()), SLOT(dispatchAddAction()));
322  connect(actionAddProperty, SIGNAL(triggered()), SLOT(dispatchAddAction()));
323  connect(actionAddAggregator, SIGNAL(triggered()), SLOT(dispatchAddAction()));
324 
325  connect(actionBringfront, SIGNAL(triggered()), SIGNAL(bringfrontRequested()));
326  connect(actionBringforward, SIGNAL(triggered()), SIGNAL(bringforwardRequested()));
327  connect(actionSendbackward, SIGNAL(triggered()), SIGNAL(sendbackwardRequested()));
328  connect(actionSendback, SIGNAL(triggered()), SIGNAL(sendbackRequested()));
329 
330  connect(actionHide, SIGNAL(triggered()), SIGNAL(hideRequested()));
331 
332  connect(actionProperties, SIGNAL(triggered()), SIGNAL(propertiesRequested()));
333 
334  connect(actionAuto, SIGNAL(triggered()), SIGNAL(autoRequested()));
335 }
336 
337 void QnstMenu::dispatchAddAction()
338 {
339  QAction *action = dynamic_cast <QAction*> (QObject::sender());
340  if(action != NULL)
341  {
342  emit menuAddEntityTriggered( (Qnst::EntityType) action->data().toInt() );
343  }
344 }