| 238 | } |
| 239 | |
| 240 | void MainWindow::createMenusAndActions() |
| 241 | { |
| 242 | auto addActionToMenu = [this](QMenu * menu, |
| 243 | QString name, |
| 244 | auto reciever, |
| 245 | auto functionPointer, |
| 246 | const QKeySequence shortcut = {}) { |
| 247 | (void)this; // QObject::connect uses this |
| 248 | auto action = new QAction(name, menu); |
| 249 | action->setShortcut(shortcut); |
| 250 | QObject::connect(action, &QAction::triggered, reciever, functionPointer); |
| 251 | menu->addAction(action); |
| 252 | }; |
| 253 | |
| 254 | auto fileMenu = menuBar()->addMenu(tr("&File")); |
| 255 | addActionToMenu( |
| 256 | fileMenu, "&Open File...", this, &MainWindow::showFileOpenDialog, Qt::CTRL | Qt::Key_O); |
| 257 | |
| 258 | auto recentFileMenu = fileMenu->addMenu("Recent Files"); |
| 259 | for (int i = 0; i < MAX_RECENT_FILES; i++) |
| 260 | { |
| 261 | this->recentFileActions[i] = new QAction(this); |
| 262 | connect( |
| 263 | this->recentFileActions[i].data(), &QAction::triggered, this, &MainWindow::openRecentFile); |
| 264 | recentFileMenu->addAction(this->recentFileActions[i]); |
| 265 | } |
| 266 | |
| 267 | fileMenu->addSeparator(); |
| 268 | addActionToMenu( |
| 269 | fileMenu, "&Add Text Frame", ui.playlistTreeWidget, &PlaylistTreeWidget::addTextItem); |
| 270 | addActionToMenu(fileMenu, |
| 271 | "&Add Difference Sequence", |
| 272 | ui.playlistTreeWidget, |
| 273 | &PlaylistTreeWidget::addDifferenceItem); |
| 274 | addActionToMenu( |
| 275 | fileMenu, "&Add Overlay", ui.playlistTreeWidget, &PlaylistTreeWidget::addOverlayItem); |
| 276 | fileMenu->addSeparator(); |
| 277 | addActionToMenu(fileMenu, "&Delete Item", this, &MainWindow::deleteSelectedItems, Qt::Key_Delete); |
| 278 | fileMenu->addSeparator(); |
| 279 | addActionToMenu(fileMenu, |
| 280 | "&Save Playlist...", |
| 281 | ui.playlistTreeWidget, |
| 282 | &PlaylistTreeWidget::savePlaylistToFile, |
| 283 | Qt::CTRL | Qt::Key_S); |
| 284 | fileMenu->addSeparator(); |
| 285 | addActionToMenu(fileMenu, "&Save Screenshot...", this, &MainWindow::saveScreenshot); |
| 286 | fileMenu->addSeparator(); |
| 287 | addActionToMenu(fileMenu, "&Settings...", this, &MainWindow::showSettingsWindow); |
| 288 | fileMenu->addSeparator(); |
| 289 | addActionToMenu(fileMenu, "Exit", this, &MainWindow::close); |
| 290 | |
| 291 | // On Mac, the key to delete an item is backspace. We will add this for all platforms |
| 292 | auto backSpaceDelete = new QShortcut(QKeySequence(Qt::Key_Backspace), this); |
| 293 | QObject::connect(backSpaceDelete, &QShortcut::activated, this, &MainWindow::deleteSelectedItems); |
| 294 | |
| 295 | auto viewMenu = menuBar()->addMenu(tr("&View")); |
| 296 | // Sub menu save/load state |
| 297 | auto saveStateMenu = viewMenu->addMenu("Save View State"); |
nothing calls this directly
no test coverage detected