Beispiel #1
0
/**
 * Start the process of opening a file selected from the recent files menu.
 * Emit openFile() if the file still exists, otherwise display an error
 * message.
 */
void QQMenuHelper::openRecent()
{
    QAction *action = qobject_cast<QAction *>(sender());
    if (!action) {
        return;
    }
    QString path = action->text();
    if (!QFile::exists(path)) {
        QMessageBox::warning(mainWindow, qApp->applicationName(),
                             tr("File does not exist"));
        recentFiles.removeOne(path);
        updateRecentMenu();
        return;
    }
    if (QFileInfo(path).isDir()) {
        QMessageBox::warning(mainWindow, qApp->applicationName(),
                             tr("The selected item is a directory"));
    }
    emit openFile(path);
}
Beispiel #2
0
/**
 * <p>Adjust the "File" menu and toolbar contents as appropriate for the file
 * selection screen.  Sets the "File" menu to have the following content:</p>
 * <ul>
 * <li>New</li>
 * <li>Open</li>
 * <li>Open Recent <i>(submenu)</i></li>
 * <li>(items added using addToFileMenu() go here)</li>
 * <li>Preferences</li>
 * <li><i>(separator)</i></li>
 * <li>Quit</li>
 * </ul>
 * <p>Also shows the "New" and "Open" buttons on the toolbar (and on the Mac,
 * makes sure no document icon is shown in the titlebar).  This method should
 * be called after the visibility of any application-specific actions has
 * been updated (due to a Maemo implementation detail).</p>
 */
void QQMenuHelper::updateFileSelectorMenu()
{
    // update action visibility
    fileNewAction->setVisible(true);
    fileOpenAction->setVisible(true);
    updateRecentMenu();
    recent->menuAction()->setVisible(true);
    fileSaveAction->setVisible(false);
    fileSeparatorAction->setVisible(false);
    closeAction->setVisible(false);

    // enable and disable actions as appropriate for the current state
    fileNewAction->setEnabled(true);
    fileOpenAction->setEnabled(true);
    fileSaveAction->setEnabled(false);
    closeAction->setEnabled(false);

#if defined(Q_WS_HILDON) || defined(Q_WS_MAEMO_5)
    QMenuBar *mb = mainWindow->menuBar();
    mb->clear();
    mb->addAction(fileNewAction);
    mb->addAction(fileOpenAction);
    int count = extraFileActions.count();
    for (int i = 0; i < count; i++) {
        if (extraFileActions[i]->isVisible()) {
            mb->addAction(extraFileActions[i]);
        }
    }
    mb->addAction(prefsAction);
    mb->addAction(helpAction);
    mb->addAction(aboutAction);
#endif

#if defined(Q_WS_MAC)
    mainWindow->setWindowIcon(QIcon());
#endif
}
Beispiel #3
0
MacMenu::MacMenu() :
	QMenuBar(nullptr)
{
	//
	// File menu
	//
	QMenu *filemenu = addMenu(MainWindow::tr("&File"));

	QAction *newdocument = makeAction(filemenu, "newdocument", MainWindow::tr("&New"), QKeySequence::New);
	QAction *open = makeAction(filemenu, "opendocument", MainWindow::tr("&Open..."), QKeySequence::Open);

	connect(newdocument, &QAction::triggered, this, &MacMenu::newDocument);
	connect(open, &QAction::triggered, this, &MacMenu::openDocument);

	_recent = filemenu->addMenu(MainWindow::tr("Open &Recent"));
	connect(_recent, &QMenu::triggered, this, &MacMenu::openRecent);

	// Relocated menu items
	QAction *quit = makeAction(filemenu, "exitprogram", MainWindow::tr("&Quit"), QKeySequence("Ctrl+Q"));
	quit->setMenuRole(QAction::QuitRole);
	connect(quit, &QAction::triggered, this, &MacMenu::quitAll);

	QAction *preferences = makeAction(filemenu, 0, MainWindow::tr("Prefere&nces"), QKeySequence());
	preferences->setMenuRole(QAction::PreferencesRole);
	connect(preferences, &QAction::triggered, &MainWindow::showSettings);

	//
	// Session menu
	//

	QMenu *sessionmenu = addMenu(MainWindow::tr("&Session"));
	QAction *host = makeAction(sessionmenu, "hostsession", MainWindow::tr("&Host..."), QKeySequence());
	QAction *join = makeAction(sessionmenu, "joinsession", MainWindow::tr("&Join..."), QKeySequence());

	host->setEnabled(false);
	connect(join, &QAction::triggered, this, &MacMenu::joinSession);

	//
	// Window menu (Mac specific)
	//
	_windows = addMenu(MainWindow::tr("Window"));
	connect(_windows, &QMenu::triggered, this, &MacMenu::winSelect);
	connect(_windows, &QMenu::aboutToShow, this, &MacMenu::updateWinMenu);

	QAction *minimize = makeAction(_windows, 0, tr("Minimize"), QKeySequence("ctrl+m"));

	_windows->addSeparator();

	connect(minimize, &QAction::triggered, this, &MacMenu::winMinimize);

	//
	// Help menu
	//
	QMenu *helpmenu = addMenu(MainWindow::tr("&Help"));

	QAction *homepage = makeAction(helpmenu, "dphomepage", MainWindow::tr("&Homepage"), QKeySequence());
	QAction *about = makeAction(helpmenu, "dpabout", MainWindow::tr("&About Drawpile"), QKeySequence());
	about->setMenuRole(QAction::AboutRole);
	QAction *aboutqt = makeAction(helpmenu, "aboutqt", MainWindow::tr("About &Qt"), QKeySequence());
	aboutqt->setMenuRole(QAction::AboutQtRole);

	connect(homepage, &QAction::triggered, &MainWindow::homepage);
	connect(about, &QAction::triggered, &MainWindow::about);
	connect(aboutqt, &QAction::triggered, &QApplication::aboutQt);

	//
	// Initialize
	//
	updateRecentMenu();
}