void BrailleMusicEditor::setupEditActions() { auto tb = new QToolBar(this); tb->setWindowTitle(tr("Edit Actions")); addToolBar(tb); auto menu = new QMenu(tr("&Edit"), this); menuBar()->addMenu(menu); QAction *a; a = actionUndo = new QAction(QIcon::fromTheme("edit-undo"), tr("&Undo"), this); a->setShortcut(QKeySequence::Undo); tb->addAction(a); menu->addAction(a); a = actionRedo = new QAction(QIcon::fromTheme("edit-redo"), tr("&Redo"), this); a->setPriority(QAction::LowPriority); a->setShortcut(QKeySequence::Redo); tb->addAction(a); menu->addAction(a); menu->addSeparator(); a = actionCut = new QAction(QIcon::fromTheme("edit-cut"), tr("Cu&t"), this); a->setPriority(QAction::LowPriority); a->setShortcut(QKeySequence::Cut); tb->addAction(a); menu->addAction(a); a = actionCopy = new QAction(QIcon::fromTheme("edit-copy"), tr("&Copy"), this); a->setPriority(QAction::LowPriority); a->setShortcut(QKeySequence::Copy); tb->addAction(a); menu->addAction(a); a = actionPaste = new QAction(QIcon::fromTheme("edit-paste"), tr("&Paste"), this); a->setPriority(QAction::LowPriority); a->setShortcut(QKeySequence::Paste); tb->addAction(a); menu->addAction(a); #ifndef QT_NO_CLIPBOARD if (const QMimeData *md = QApplication::clipboard()->mimeData()) actionPaste->setEnabled(md->hasText()); #endif menu->addSeparator(); a = new QAction(tr("&Reformat"), this); a->setPriority(QAction::LowPriority); a->setShortcut(Qt::Key_F9); a->setEnabled(false); connect(this, &BrailleMusicEditor::scoreAvailable, a, &QAction::setEnabled); connect(a, &QAction::triggered, this, &BrailleMusicEditor::editReformat); tb->addAction(a); menu->addAction(a); }
void TextEdit::setupEditActions() { QToolBar *tb = new QToolBar(this); tb->setWindowTitle(tr("Edit Actions")); addToolBar(tb); QMenu *menu = new QMenu(tr("&Edit"), this); menuBar()->addMenu(menu); QAction *a; a = actionUndo = new QAction(QIcon::fromTheme("edit-undo", QIcon(rsrcPath + "/editundo.png")), tr("&Undo"), this); a->setShortcut(QKeySequence::Undo); tb->addAction(a); menu->addAction(a); a = actionRedo = new QAction(QIcon::fromTheme("edit-redo", QIcon(rsrcPath + "/editredo.png")), tr("&Redo"), this); a->setPriority(QAction::LowPriority); a->setShortcut(QKeySequence::Redo); tb->addAction(a); menu->addAction(a); menu->addSeparator(); a = actionCut = new QAction(QIcon::fromTheme("edit-cut", QIcon(rsrcPath + "/editcut.png")), tr("Cu&t"), this); a->setPriority(QAction::LowPriority); a->setShortcut(QKeySequence::Cut); tb->addAction(a); menu->addAction(a); a = actionCopy = new QAction(QIcon::fromTheme("edit-copy", QIcon(rsrcPath + "/editcopy.png")), tr("&Copy"), this); a->setPriority(QAction::LowPriority); a->setShortcut(QKeySequence::Copy); tb->addAction(a); menu->addAction(a); a = actionPaste = new QAction(QIcon::fromTheme("edit-paste", QIcon(rsrcPath + "/editpaste.png")), tr("&Paste"), this); a->setPriority(QAction::LowPriority); a->setShortcut(QKeySequence::Paste); tb->addAction(a); menu->addAction(a); #ifndef QT_NO_CLIPBOARD if (const QMimeData *md = QApplication::clipboard()->mimeData()) actionPaste->setEnabled(md->hasText()); #endif }
void Dialog::createWidget() { createdWidgetx = true; dgReadByUser = false; int w = smiles->size().width() / W_CNT; int h = smiles->size().height() / H_CNT; lwHistory = new QListWidget(); teMessage = new TextEditMessage(); //teHistory->setReadOnly(true); addWidget(lwHistory); setStretchFactor(0, 2); panel = new QToolBar(); QIcon newIcon = QPixmap::fromImage(smiles->copy(w, 0, w, h)); QAction *a = new QAction(newIcon, QString("&Smiles"), 0); a->setPriority(QAction::LowPriority); a->setShortcut(Qt::CTRL + Qt::Key_S); connect(a, SIGNAL(triggered()), this, SLOT(slotClickedSmileMenu())); panel->addAction(a); panel->setFixedHeight(30); //panel->pos() /*QMenuBar *panel = new QMenuBar(this); panel->setFixedHeight(30); panel->setAutoFillBackground(true); panel->setStyleSheet("QMenuBar { background-color: #f3f2f1; } QMenuBar::item { background-color: #f3f2f1; }"); //panel->setStyleSheet("QMenuBar::item { icon-size: 32px; } "); //panel->setStyleSheet("QMenuBar::button { background-color: #ffffff; }");*/ addWidget(panel); addWidget(teMessage); smileMenu = new QMenu("Smiles"); smileMenu->setIcon(QPixmap::fromImage(smiles->copy(w, 0, w, h))); smileMenu->setStyleSheet("QMenu { background-color: #ffffff;}"); QGridLayout *lytSmiles = new QGridLayout(smileMenu); QPalette palw; palw.setBrush(smileMenu->backgroundRole(), Qt::white); smileMenu->setAutoFillBackground(true); smileMenu->setPalette(palw); for (int i = 0; i < W_CNT; ++i) for (int j = 0; j < H_CNT; ++j) { QImage icon = smiles->copy(j * w, i * h, w, h); SmileButton *but = new SmileButton(icon, W_CNT * i + j); connect(but, SIGNAL(clicked()), this, SLOT(slotSmilesClicked())); lytSmiles->addWidget(but, i, j); //teMessage->document()->addResource(QTextDocument::ImageResource, QUrl(but->name()), smiles->copy(j * w, i * h, w, h)); //teHistory->document()->addResource(QTextDocument::ImageResource, QUrl(but->name()), smiles->copy(j * w, i * h, w, h)); } reloadResource(message()); smileMenu->setFixedSize(lytSmiles->sizeHint()); lwHistory->scrollToBottom(); connect(&tmrNotActive, SIGNAL(timeout()), this, SLOT(slotNotActiveBehav())); connect(teMessage, SIGNAL(gotFocus()), this, SLOT(slotFinishReadMessage())); connect(teMessage, SIGNAL(lostFocus()), this, SLOT(slotNotActiveBehav())); }
void TextEdit::setupEditActions() { QToolBar *tb = new QToolBar(this); tb->setWindowTitle(tr("Edit Actions")); addToolBar(tb); QMenu *menu = new QMenu(tr("&Edit"), this); menuBar()->addMenu(menu); QAction *a; a = actionUndo = new QAction(QIcon(":/res/smallUndo.png"),tr("&Undo"), this); a->setShortcut(QKeySequence::Undo); tb->addAction(a); menu->addAction(a); a = actionRedo = new QAction(QIcon(":/res/smallRedo.png"), tr("&Redo"), this); a->setPriority(QAction::LowPriority); a->setShortcut(QKeySequence::Redo); tb->addAction(a); menu->addAction(a); menu->addSeparator(); a = actionCut = new QAction(QIcon(":/res/smallcut.png"),tr("Cu&t"), this); a->setPriority(QAction::LowPriority); a->setShortcut(QKeySequence::Cut); tb->addAction(a); menu->addAction(a); a = actionCopy = new QAction(QIcon(":/res/smallcopy.png"), tr("&Copy"), this); a->setPriority(QAction::LowPriority); a->setShortcut(QKeySequence::Copy); tb->addAction(a); menu->addAction(a); a = actionPaste = new QAction(QIcon(":/res/smallpaste.png"), tr("&Paste"), this); a->setPriority(QAction::LowPriority); a->setShortcut(QKeySequence::Paste); tb->addAction(a); menu->addAction(a); #ifndef QT_NO_CLIPBOARD actionPaste->setEnabled(!QApplication::clipboard()->text().isEmpty()); #endif }
void TextEdit::setupFileActions() { QToolBar *tb = new QToolBar(this); tb->setWindowTitle(tr("File Actions")); addToolBar(tb); QMenu *menu = new QMenu(tr("&File"), this); menuBar()->addMenu(menu); QAction *a; QIcon newIcon = QIcon::fromTheme("document-new", QIcon(rsrcPath + "/filenew.png")); a = new QAction( newIcon, tr("&New"), this); a->setPriority(QAction::LowPriority); a->setShortcut(QKeySequence::New); connect(a, SIGNAL(triggered()), this, SLOT(fileNew())); tb->addAction(a); menu->addAction(a); a = new QAction(QIcon::fromTheme("document-open", QIcon(rsrcPath + "/fileopen.png")), tr("&Open..."), this); a->setShortcut(QKeySequence::Open); connect(a, SIGNAL(triggered()), this, SLOT(fileOpen())); tb->addAction(a); menu->addAction(a); menu->addSeparator(); actionSave = a = new QAction(QIcon::fromTheme("document-save", QIcon(rsrcPath + "/filesave.png")), tr("&Save"), this); a->setShortcut(QKeySequence::Save); connect(a, SIGNAL(triggered()), this, SLOT(fileSave())); a->setEnabled(false); tb->addAction(a); menu->addAction(a); menu->addSeparator(); a = new QAction(tr("Save &As ODT..."), this); a->setPriority(QAction::LowPriority); connect(a, SIGNAL(triggered()), this, SLOT(fileSaveAsOdt())); menu->addAction(a); a = new QAction(tr("Save &As HTML..."), this); a->setPriority(QAction::LowPriority); connect(a, SIGNAL(triggered()), this, SLOT(fileSaveAsHtml())); menu->addAction(a); menu->addSeparator(); #ifndef QT_NO_PRINTER //a = new QAction(QIcon::fromTheme("document-print", QIcon(rsrcPath + "/fileprint.png")), // tr("&Print..."), this); //a->setPriority(QAction::LowPriority); //a->setShortcut(QKeySequence::Print); //connect(a, SIGNAL(triggered()), this, SLOT(filePrint())); //tb->addAction(a); //menu->addAction(a); //a = new QAction(QIcon::fromTheme("fileprint", QIcon(rsrcPath + "/fileprint.png")), // tr("Print Preview..."), this); //connect(a, SIGNAL(triggered()), this, SLOT(filePrintPreview())); //menu->addAction(a); a = new QAction(QIcon::fromTheme("exportpdf", QIcon(rsrcPath + "/exportpdf.png")), tr("&Export PDF..."), this); a->setPriority(QAction::LowPriority); a->setShortcut(Qt::CTRL + Qt::Key_D); connect(a, SIGNAL(triggered()), this, SLOT(filePrintPdf())); tb->addAction(a); menu->addAction(a); menu->addSeparator(); #endif a = new QAction(tr("&Quit"), this); a->setShortcut(Qt::CTRL + Qt::Key_Q); connect(a, SIGNAL(triggered()), this, SLOT(close())); menu->addAction(a); }
PodcastCategory::PodcastCategory( QWidget *parent ) : PlaylistBrowserCategory( Playlists::PodcastChannelPlaylist, "podcasts", s_configGroup, The::podcastModel(), parent ) { setPrettyName( i18n( "Podcasts" ) ); setShortDescription( i18n( "List of podcast subscriptions and episodes" ) ); setIcon( KIcon( "podcast-amarok" ) ); setLongDescription( i18n( "Manage your podcast subscriptions and browse individual episodes. " "Downloading episodes to the disk is also done here, or you can tell " "Amarok to do this automatically." ) ); setImagePath( KStandardDirs::locate( "data", "amarok/images/hover_info_podcasts.png" ) ); // set background if( AmarokConfig::showBrowserBackgroundImage() ) setBackgroundImage( imagePath() ); QAction *addPodcastAction = new QAction( KIcon( "list-add-amarok" ), i18n("&Add Podcast"), m_toolBar ); addPodcastAction->setPriority( QAction::NormalPriority ); m_toolBar->insertAction( m_separator, addPodcastAction ); connect( addPodcastAction, SIGNAL(triggered( bool )), The::podcastModel(), SLOT(addPodcast()) ); QAction *updateAllAction = new QAction( KIcon("view-refresh-amarok"), QString(), m_toolBar ); updateAllAction->setToolTip( i18n("&Update All") ); updateAllAction->setPriority( QAction::LowPriority ); m_toolBar->insertAction( m_separator, updateAllAction ); connect( updateAllAction, SIGNAL(triggered( bool )), The::podcastModel(), SLOT(refreshPodcasts()) ); QAction *importOpmlAction = new QAction( KIcon("document-import") , i18n( "Import OPML File" ) , m_toolBar ); importOpmlAction->setToolTip( i18n( "Import OPML File" ) ); importOpmlAction->setPriority( QAction::LowPriority ); m_toolBar->addAction( importOpmlAction ); connect( importOpmlAction, SIGNAL( triggered() ), SLOT( slotImportOpml() ) ); PlaylistBrowserView *view = static_cast<PlaylistBrowserView*>( playlistView() ); connect( view, SIGNAL(currentItemChanged(QModelIndex)), SLOT(showInfo(QModelIndex)) ); //transparency // QPalette p = m_podcastTreeView->palette(); // QColor c = p.color( QPalette::Base ); // c.setAlpha( 0 ); // p.setColor( QPalette::Base, c ); // // c = p.color( QPalette::AlternateBase ); // c.setAlpha( 77 ); // p.setColor( QPalette::AlternateBase, c ); // // m_podcastTreeView->setPalette( p ); // // QSizePolicy sizePolicy1(QSizePolicy::MinimumExpanding, QSizePolicy::Expanding); // sizePolicy1.setHorizontalStretch(0); // sizePolicy1.setVerticalStretch(0); // sizePolicy1.setHeightForWidth(m_podcastTreeView->sizePolicy().hasHeightForWidth()); // m_podcastTreeView->setSizePolicy(sizePolicy1); }
MainWindow::MainWindow(QWidget *parent, Qt::WFlags flags) : QMainWindow(parent, flags) , mUi(new Ui::MainWindow) , mMapDocument(0) , mActionHandler(new MapDocumentActionHandler(this)) , mLayerDock(new LayerDock(this)) , mTilesetDock(new TilesetDock(this)) , mZoomLabel(new QLabel) , mStatusInfoLabel(new QLabel) , mClipboardManager(new ClipboardManager(this)) , mDocumentManager(DocumentManager::instance()) { mUi->setupUi(this); setCentralWidget(mDocumentManager->widget()); PluginManager::instance()->loadPlugins(); #ifdef Q_WS_MAC MacSupport::addFullscreen(this); #endif Preferences *preferences = Preferences::instance(); QIcon redoIcon(QLatin1String(":images/16x16/edit-redo.png")); QIcon undoIcon(QLatin1String(":images/16x16/edit-undo.png")); QIcon tiledIcon(QLatin1String(":images/tiled-icon-16.png")); tiledIcon.addFile(QLatin1String(":images/tiled-icon-32.png")); setWindowIcon(tiledIcon); // Add larger icon versions for actions used in the tool bar QIcon newIcon = mUi->actionNew->icon(); QIcon openIcon = mUi->actionOpen->icon(); QIcon saveIcon = mUi->actionSave->icon(); newIcon.addFile(QLatin1String(":images/24x24/document-new.png")); openIcon.addFile(QLatin1String(":images/24x24/document-open.png")); saveIcon.addFile(QLatin1String(":images/24x24/document-save.png")); redoIcon.addFile(QLatin1String(":images/24x24/edit-redo.png")); undoIcon.addFile(QLatin1String(":images/24x24/edit-undo.png")); mUi->actionNew->setIcon(newIcon); mUi->actionOpen->setIcon(openIcon); mUi->actionSave->setIcon(saveIcon); QUndoGroup *undoGroup = mDocumentManager->undoGroup(); QAction *undoAction = undoGroup->createUndoAction(this, tr("Undo")); QAction *redoAction = undoGroup->createRedoAction(this, tr("Redo")); mUi->mainToolBar->setToolButtonStyle(Qt::ToolButtonFollowStyle); mUi->actionNew->setPriority(QAction::LowPriority); redoAction->setPriority(QAction::LowPriority); redoAction->setIcon(redoIcon); undoAction->setIcon(undoIcon); redoAction->setIconText(tr("Redo")); undoAction->setIconText(tr("Undo")); connect(undoGroup, SIGNAL(cleanChanged(bool)), SLOT(updateWindowTitle())); UndoDock *undoDock = new UndoDock(undoGroup, this); addDockWidget(Qt::RightDockWidgetArea, mLayerDock); addDockWidget(Qt::RightDockWidgetArea, undoDock); tabifyDockWidget(undoDock, mLayerDock); addDockWidget(Qt::RightDockWidgetArea, mTilesetDock); statusBar()->addPermanentWidget(mZoomLabel); mUi->actionNew->setShortcuts(QKeySequence::New); mUi->actionOpen->setShortcuts(QKeySequence::Open); mUi->actionSave->setShortcuts(QKeySequence::Save); mUi->actionSaveAs->setShortcuts(QKeySequence::SaveAs); mUi->actionClose->setShortcuts(QKeySequence::Close); mUi->actionQuit->setShortcuts(QKeySequence::Quit); mUi->actionCut->setShortcuts(QKeySequence::Cut); mUi->actionCopy->setShortcuts(QKeySequence::Copy); mUi->actionPaste->setShortcuts(QKeySequence::Paste); mUi->actionDelete->setShortcuts(QKeySequence::Delete); undoAction->setShortcuts(QKeySequence::Undo); redoAction->setShortcuts(QKeySequence::Redo); mUi->actionShowGrid->setChecked(preferences->showGrid()); mUi->actionSnapToGrid->setChecked(preferences->snapToGrid()); mUi->actionHighlightCurrentLayer->setChecked(preferences->highlightCurrentLayer()); // Make sure Ctrl+= also works for zooming in QList<QKeySequence> keys = QKeySequence::keyBindings(QKeySequence::ZoomIn); keys += QKeySequence(tr("Ctrl+=")); keys += QKeySequence(tr("+")); mUi->actionZoomIn->setShortcuts(keys); keys = QKeySequence::keyBindings(QKeySequence::ZoomOut); keys += QKeySequence(tr("-")); mUi->actionZoomOut->setShortcuts(keys); mUi->menuEdit->insertAction(mUi->actionCut, undoAction); mUi->menuEdit->insertAction(mUi->actionCut, redoAction); mUi->menuEdit->insertSeparator(mUi->actionCut); mUi->menuEdit->insertAction(mUi->actionPreferences, mActionHandler->actionSelectAll()); mUi->menuEdit->insertAction(mUi->actionPreferences, mActionHandler->actionSelectNone()); mUi->menuEdit->insertSeparator(mUi->actionPreferences); mUi->mainToolBar->addAction(undoAction); mUi->mainToolBar->addAction(redoAction); mUi->mainToolBar->addSeparator(); mCommandButton = new CommandButton(this); mUi->mainToolBar->addWidget(mCommandButton); mUi->menuMap->insertAction(mUi->actionOffsetMap, mActionHandler->actionCropToSelection()); mRandomButton = new QToolButton(this); mRandomButton->setToolTip(tr("Random Mode")); mRandomButton->setIcon(QIcon(QLatin1String(":images/24x24/dice.png"))); mRandomButton->setCheckable(true); mUi->mainToolBar->addWidget(mRandomButton); mLayerMenu = new QMenu(tr("&Layer"), this); mLayerMenu->addAction(mActionHandler->actionAddTileLayer()); mLayerMenu->addAction(mActionHandler->actionAddObjectGroup()); mLayerMenu->addAction(mActionHandler->actionDuplicateLayer()); mLayerMenu->addAction(mActionHandler->actionMergeLayerDown()); mLayerMenu->addAction(mActionHandler->actionRemoveLayer()); mLayerMenu->addAction(mActionHandler->actionRenameLayer()); mLayerMenu->addSeparator(); mLayerMenu->addAction(mActionHandler->actionSelectPreviousLayer()); mLayerMenu->addAction(mActionHandler->actionSelectNextLayer()); mLayerMenu->addAction(mActionHandler->actionMoveLayerUp()); mLayerMenu->addAction(mActionHandler->actionMoveLayerDown()); mLayerMenu->addSeparator(); mLayerMenu->addAction(mActionHandler->actionToggleOtherLayers()); mLayerMenu->addSeparator(); mLayerMenu->addAction(mActionHandler->actionLayerProperties()); menuBar()->insertMenu(mUi->menuHelp->menuAction(), mLayerMenu); connect(mUi->actionNew, SIGNAL(triggered()), SLOT(newMap())); connect(mUi->actionOpen, SIGNAL(triggered()), SLOT(openFile())); connect(mUi->actionClearRecentFiles, SIGNAL(triggered()), SLOT(clearRecentFiles())); connect(mUi->actionSave, SIGNAL(triggered()), SLOT(saveFile())); connect(mUi->actionSaveAs, SIGNAL(triggered()), SLOT(saveFileAs())); connect(mUi->actionSaveAsImage, SIGNAL(triggered()), SLOT(saveAsImage())); connect(mUi->actionExport, SIGNAL(triggered()), SLOT(exportAs())); connect(mUi->actionClose, SIGNAL(triggered()), SLOT(closeFile())); connect(mUi->actionCloseAll, SIGNAL(triggered()), SLOT(closeAllFiles())); connect(mUi->actionQuit, SIGNAL(triggered()), SLOT(close())); connect(mUi->actionCut, SIGNAL(triggered()), SLOT(cut())); connect(mUi->actionCopy, SIGNAL(triggered()), SLOT(copy())); connect(mUi->actionPaste, SIGNAL(triggered()), SLOT(paste())); connect(mUi->actionDelete, SIGNAL(triggered()), SLOT(delete_())); connect(mUi->actionPreferences, SIGNAL(triggered()), SLOT(openPreferences())); connect(mUi->actionShowGrid, SIGNAL(toggled(bool)), preferences, SLOT(setShowGrid(bool))); connect(mUi->actionSnapToGrid, SIGNAL(toggled(bool)), preferences, SLOT(setSnapToGrid(bool))); connect(mUi->actionHighlightCurrentLayer, SIGNAL(toggled(bool)), preferences, SLOT(setHighlightCurrentLayer(bool))); connect(mUi->actionZoomIn, SIGNAL(triggered()), SLOT(zoomIn())); connect(mUi->actionZoomOut, SIGNAL(triggered()), SLOT(zoomOut())); connect(mUi->actionZoomNormal, SIGNAL(triggered()), SLOT(zoomNormal())); connect(mUi->actionNewTileset, SIGNAL(triggered()), SLOT(newTileset())); connect(mUi->actionAddExternalTileset, SIGNAL(triggered()), SLOT(addExternalTileset())); connect(mUi->actionResizeMap, SIGNAL(triggered()), SLOT(resizeMap())); connect(mUi->actionOffsetMap, SIGNAL(triggered()), SLOT(offsetMap())); connect(mUi->actionMapProperties, SIGNAL(triggered()), SLOT(editMapProperties())); connect(mUi->actionAutoMap, SIGNAL(triggered()), SLOT(autoMap())); connect(mActionHandler->actionLayerProperties(), SIGNAL(triggered()), SLOT(editLayerProperties())); connect(mUi->actionAbout, SIGNAL(triggered()), SLOT(aboutTiled())); connect(mUi->actionAboutQt, SIGNAL(triggered()), qApp, SLOT(aboutQt())); connect(mTilesetDock, SIGNAL(tilesetsDropped(QStringList)), SLOT(newTilesets(QStringList))); // Add recent file actions to the recent files menu for (int i = 0; i < MaxRecentFiles; ++i) { mRecentFiles[i] = new QAction(this); mUi->menuRecentFiles->insertAction(mUi->actionClearRecentFiles, mRecentFiles[i]); mRecentFiles[i]->setVisible(false); connect(mRecentFiles[i], SIGNAL(triggered()), this, SLOT(openRecentFile())); } mUi->menuRecentFiles->insertSeparator(mUi->actionClearRecentFiles); setThemeIcon(mUi->actionNew, "document-new"); setThemeIcon(mUi->actionOpen, "document-open"); setThemeIcon(mUi->menuRecentFiles, "document-open-recent"); setThemeIcon(mUi->actionClearRecentFiles, "edit-clear"); setThemeIcon(mUi->actionSave, "document-save"); setThemeIcon(mUi->actionSaveAs, "document-save-as"); setThemeIcon(mUi->actionClose, "window-close"); setThemeIcon(mUi->actionQuit, "application-exit"); setThemeIcon(mUi->actionCut, "edit-cut"); setThemeIcon(mUi->actionCopy, "edit-copy"); setThemeIcon(mUi->actionPaste, "edit-paste"); setThemeIcon(mUi->actionDelete, "edit-delete"); setThemeIcon(redoAction, "edit-redo"); setThemeIcon(undoAction, "edit-undo"); setThemeIcon(mUi->actionZoomIn, "zoom-in"); setThemeIcon(mUi->actionZoomOut, "zoom-out"); setThemeIcon(mUi->actionZoomNormal, "zoom-original"); setThemeIcon(mUi->actionNewTileset, "document-new"); setThemeIcon(mUi->actionResizeMap, "document-page-setup"); setThemeIcon(mUi->actionMapProperties, "document-properties"); setThemeIcon(mUi->actionAbout, "help-about"); mStampBrush = new StampBrush(this); mBucketFillTool = new BucketFillTool(this); CreateObjectTool *tileObjectsTool = new CreateObjectTool( CreateObjectTool::CreateTile, this); CreateObjectTool *areaObjectsTool = new CreateObjectTool( CreateObjectTool::CreateArea, this); CreateObjectTool *polygonObjectsTool = new CreateObjectTool( CreateObjectTool::CreatePolygon, this); CreateObjectTool *polylineObjectsTool = new CreateObjectTool( CreateObjectTool::CreatePolyline, this); connect(mTilesetDock, SIGNAL(currentTilesChanged(const TileLayer*)), this, SLOT(setStampBrush(const TileLayer*))); connect(mStampBrush, SIGNAL(currentTilesChanged(const TileLayer*)), this, SLOT(setStampBrush(const TileLayer*))); connect(mTilesetDock, SIGNAL(currentTileChanged(Tile*)), tileObjectsTool, SLOT(setTile(Tile*))); connect(mRandomButton, SIGNAL(toggled(bool)), mStampBrush, SLOT(setRandom(bool))); ToolManager *toolManager = ToolManager::instance(); toolManager->registerTool(mStampBrush); toolManager->registerTool(mBucketFillTool); toolManager->registerTool(new Eraser(this)); toolManager->registerTool(new TileSelectionTool(this)); toolManager->addSeparator(); toolManager->registerTool(new ObjectSelectionTool(this)); toolManager->registerTool(new EditPolygonTool(this)); toolManager->registerTool(areaObjectsTool); toolManager->registerTool(tileObjectsTool); toolManager->registerTool(polygonObjectsTool); toolManager->registerTool(polylineObjectsTool); addToolBar(toolManager->toolBar()); statusBar()->addWidget(mStatusInfoLabel); connect(toolManager, SIGNAL(statusInfoChanged(QString)), this, SLOT(updateStatusInfoLabel(QString))); mUi->menuView->addSeparator(); mUi->menuView->addAction(mTilesetDock->toggleViewAction()); mUi->menuView->addAction(mLayerDock->toggleViewAction()); mUi->menuView->addAction(undoDock->toggleViewAction()); connect(mClipboardManager, SIGNAL(hasMapChanged()), SLOT(updateActions())); connect(mDocumentManager, SIGNAL(currentDocumentChanged(MapDocument*)), SLOT(mapDocumentChanged(MapDocument*))); connect(mDocumentManager, SIGNAL(documentCloseRequested(int)), this, SLOT(closeMapDocument(int))); QShortcut *switchToLeftDocument = new QShortcut(tr("Ctrl+PgUp"), this); connect(switchToLeftDocument, SIGNAL(activated()), mDocumentManager, SLOT(switchToLeftDocument())); QShortcut *switchToLeftDocument1 = new QShortcut(tr("Ctrl+Shift+Tab"), this); connect(switchToLeftDocument1, SIGNAL(activated()), mDocumentManager, SLOT(switchToLeftDocument())); QShortcut *switchToRightDocument = new QShortcut(tr("Ctrl+PgDown"), this); connect(switchToRightDocument, SIGNAL(activated()), mDocumentManager, SLOT(switchToRightDocument())); QShortcut *switchToRightDocument1 = new QShortcut(tr("Ctrl+Tab"), this); connect(switchToRightDocument1, SIGNAL(activated()), mDocumentManager, SLOT(switchToRightDocument())); new QShortcut(tr("X"), this, SLOT(flipStampHorizontally())); new QShortcut(tr("Y"), this, SLOT(flipStampVertically())); new QShortcut(tr("Z"), this, SLOT(rotateStampRight())); new QShortcut(tr("Shift+Z"), this, SLOT(rotateStampLeft())); QShortcut *copyPositionShortcut = new QShortcut(tr("Alt+C"), this); connect(copyPositionShortcut, SIGNAL(activated()), mActionHandler, SLOT(copyPosition())); updateActions(); readSettings(); setupQuickStamps(); connect(AutomappingManager::instance(), SIGNAL(warningsOccurred()), this, SLOT(autoMappingWarning())); connect(AutomappingManager::instance(), SIGNAL(errorsOccurred()), this, SLOT(autoMappingError())); }
MainWindow::MainWindow(QWidget *parent, Qt::WindowFlags flags) : QMainWindow(parent, flags) , mUi(new Ui::MainWindow) , mMapDocument(0) , mActionHandler(new MapDocumentActionHandler(this)) , mMapsDock(new MapsDock(this)) , mTilesetDock(new TilesetDock(this)) , mMiniMapDock(new MiniMapDock(this)) , mZoomable(0) , mZoomComboBox(new QComboBox) , mStatusInfoLabel(new QLabel) , mValidationErrorWidget(new QWidget) , mValidationErrorLabel(new QLabel) , mDocumentManager(DocumentManager::instance()) , mQuickStampManager(new QuickStampManager(this)) , mToolManager(new ToolManager(this)) , mKodableMapValidator(new KodableMapValidator(this)) { mUi->setupUi(this); setCentralWidget(mDocumentManager->widget()); #ifdef Q_OS_MAC MacSupport::addFullscreen(this); #endif Preferences *preferences = Preferences::instance(); QIcon redoIcon(QLatin1String(":images/16x16/edit-redo.png")); QIcon undoIcon(QLatin1String(":images/16x16/edit-undo.png")); QIcon windowIcon(QLatin1String(":images/kodable-editor-icon.png")); setWindowIcon(windowIcon); // Add larger icon versions for actions used in the tool bar QIcon newIcon = mUi->actionNew->icon(); QIcon openIcon = mUi->actionOpen->icon(); QIcon saveIcon = mUi->actionSave->icon(); newIcon.addFile(QLatin1String(":images/24x24/document-new.png")); openIcon.addFile(QLatin1String(":images/24x24/document-open.png")); saveIcon.addFile(QLatin1String(":images/24x24/document-save.png")); redoIcon.addFile(QLatin1String(":images/24x24/edit-redo.png")); undoIcon.addFile(QLatin1String(":images/24x24/edit-undo.png")); mUi->actionNew->setIcon(newIcon); mUi->actionOpen->setIcon(openIcon); mUi->actionSave->setIcon(saveIcon); QUndoGroup *undoGroup = mDocumentManager->undoGroup(); QAction *undoAction = undoGroup->createUndoAction(this, tr("Undo")); QAction *redoAction = undoGroup->createRedoAction(this, tr("Redo")); mUi->mainToolBar->setToolButtonStyle(Qt::ToolButtonFollowStyle); mUi->actionNew->setPriority(QAction::LowPriority); redoAction->setPriority(QAction::LowPriority); redoAction->setIcon(redoIcon); undoAction->setIcon(undoIcon); redoAction->setIconText(tr("Redo")); undoAction->setIconText(tr("Undo")); connect(undoGroup, SIGNAL(cleanChanged(bool)), SLOT(updateWindowTitle())); UndoDock *undoDock = new UndoDock(undoGroup, this); PropertiesDock *propertiesDock = new PropertiesDock(this); addDockWidget(Qt::LeftDockWidgetArea, undoDock); addDockWidget(Qt::LeftDockWidgetArea, mMapsDock); addDockWidget(Qt::RightDockWidgetArea, mMiniMapDock); addDockWidget(Qt::RightDockWidgetArea, mTilesetDock); addDockWidget(Qt::RightDockWidgetArea, propertiesDock); tabifyDockWidget(undoDock, mMapsDock); // These dock widgets may not be immediately useful to many people, so // they are hidden by default. undoDock->setVisible(false); mMapsDock->setVisible(false); mMiniMapDock->setVisible(false); QHBoxLayout *errorBoxLayout = new QHBoxLayout; QLabel *iconLabel = new QLabel; iconLabel->setPixmap(QPixmap(QLatin1String(":images/16x16/dialog-warning.png"))); errorBoxLayout->addWidget(iconLabel); errorBoxLayout->addWidget(mValidationErrorLabel); mValidationErrorWidget->setLayout(errorBoxLayout); mValidationErrorWidget->setVisible(false); statusBar()->addPermanentWidget(mValidationErrorWidget); statusBar()->addPermanentWidget(mZoomComboBox); mUi->actionNew->setShortcuts(QKeySequence::New); mUi->actionOpen->setShortcuts(QKeySequence::Open); mUi->actionSave->setShortcuts(QKeySequence::Save); mUi->actionSaveAs->setShortcuts(QKeySequence::SaveAs); mUi->actionClose->setShortcuts(QKeySequence::Close); mUi->actionQuit->setShortcuts(QKeySequence::Quit); mUi->actionCut->setShortcuts(QKeySequence::Cut); mUi->actionCopy->setShortcuts(QKeySequence::Copy); mUi->actionPaste->setShortcuts(QKeySequence::Paste); mUi->actionDelete->setShortcuts(QKeySequence::Delete); undoAction->setShortcuts(QKeySequence::Undo); redoAction->setShortcuts(QKeySequence::Redo); mUi->actionShowGrid->setChecked(preferences->showGrid()); mUi->actionShowTileObjectOutlines->setChecked(preferences->showTileObjectOutlines()); mUi->actionShowTileAnimations->setChecked(preferences->showTileAnimations()); mUi->actionSnapToGrid->setChecked(preferences->snapToGrid()); mUi->actionSnapToFineGrid->setChecked(preferences->snapToFineGrid()); mUi->actionHighlightCurrentLayer->setChecked(preferences->highlightCurrentLayer()); QShortcut *reloadTilesetsShortcut = new QShortcut(QKeySequence(tr("Ctrl+T")), this); connect(reloadTilesetsShortcut, SIGNAL(activated()), this, SLOT(reloadTilesets())); // Make sure Ctrl+= also works for zooming in QList<QKeySequence> keys = QKeySequence::keyBindings(QKeySequence::ZoomIn); keys += QKeySequence(tr("Ctrl+=")); keys += QKeySequence(tr("+")); mUi->actionZoomIn->setShortcuts(keys); keys = QKeySequence::keyBindings(QKeySequence::ZoomOut); keys += QKeySequence(tr("-")); mUi->actionZoomOut->setShortcuts(keys); mUi->menuEdit->insertAction(mUi->actionCut, undoAction); mUi->menuEdit->insertAction(mUi->actionCut, redoAction); mUi->menuEdit->insertSeparator(mUi->actionCut); mUi->menuEdit->insertAction(mUi->actionPreferences, mActionHandler->actionSelectAll()); mUi->menuEdit->insertAction(mUi->actionPreferences, mActionHandler->actionSelectNone()); mUi->menuEdit->insertSeparator(mUi->actionPreferences); mUi->mainToolBar->addAction(undoAction); mUi->mainToolBar->addAction(redoAction); mUi->mainToolBar->addSeparator(); mLayerMenu = new QMenu(tr("&Layer"), this); mLayerMenu->addAction(mActionHandler->actionLayerProperties()); menuBar()->insertMenu(mUi->menuHelp->menuAction(), mLayerMenu); connect(mUi->actionNew, SIGNAL(triggered()), SLOT(newMap())); connect(mUi->actionOpen, SIGNAL(triggered()), SLOT(openFile())); connect(mUi->actionClearRecentFiles, SIGNAL(triggered()), SLOT(clearRecentFiles())); connect(mUi->actionSave, SIGNAL(triggered()), SLOT(saveFile())); connect(mUi->actionSaveAs, SIGNAL(triggered()), SLOT(saveFileAs())); connect(mUi->actionSaveAsImage, SIGNAL(triggered()), SLOT(saveAsImage())); connect(mUi->actionExport, SIGNAL(triggered()), SLOT(exportAs())); connect(mUi->actionClose, SIGNAL(triggered()), SLOT(closeFile())); connect(mUi->actionCloseAll, SIGNAL(triggered()), SLOT(closeAllFiles())); connect(mUi->actionQuit, SIGNAL(triggered()), SLOT(close())); connect(mUi->actionCut, SIGNAL(triggered()), SLOT(cut())); connect(mUi->actionCopy, SIGNAL(triggered()), SLOT(copy())); connect(mUi->actionPaste, SIGNAL(triggered()), SLOT(paste())); connect(mUi->actionDelete, SIGNAL(triggered()), SLOT(delete_())); connect(mUi->actionPreferences, SIGNAL(triggered()), SLOT(openPreferences())); connect(mUi->actionShowGrid, SIGNAL(toggled(bool)), preferences, SLOT(setShowGrid(bool))); connect(mUi->actionShowTileObjectOutlines, SIGNAL(toggled(bool)), preferences, SLOT(setShowTileObjectOutlines(bool))); connect(mUi->actionShowTileAnimations, SIGNAL(toggled(bool)), preferences, SLOT(setShowTileAnimations(bool))); connect(mUi->actionSnapToGrid, SIGNAL(toggled(bool)), preferences, SLOT(setSnapToGrid(bool))); connect(mUi->actionSnapToFineGrid, SIGNAL(toggled(bool)), preferences, SLOT(setSnapToFineGrid(bool))); connect(mUi->actionHighlightCurrentLayer, SIGNAL(toggled(bool)), preferences, SLOT(setHighlightCurrentLayer(bool))); connect(mUi->actionZoomIn, SIGNAL(triggered()), SLOT(zoomIn())); connect(mUi->actionZoomOut, SIGNAL(triggered()), SLOT(zoomOut())); connect(mUi->actionZoomNormal, SIGNAL(triggered()), SLOT(zoomNormal())); connect(mUi->actionNewTileset, SIGNAL(triggered()), SLOT(newTileset())); connect(mUi->actionAddExternalTileset, SIGNAL(triggered()), SLOT(addExternalTileset())); connect(mUi->actionOffsetMap, SIGNAL(triggered()), SLOT(offsetMap())); connect(mUi->actionMapProperties, SIGNAL(triggered()), SLOT(editMapProperties())); connect(mUi->actionAbout, SIGNAL(triggered()), SLOT(aboutTiled())); connect(mUi->actionAboutQt, SIGNAL(triggered()), qApp, SLOT(aboutQt())); connect(mTilesetDock, SIGNAL(tilesetsDropped(QStringList)), SLOT(newTilesets(QStringList))); // Add recent file actions to the recent files menu for (int i = 0; i < MaxRecentFiles; ++i) { mRecentFiles[i] = new QAction(this); mUi->menuRecentFiles->insertAction(mUi->actionClearRecentFiles, mRecentFiles[i]); mRecentFiles[i]->setVisible(false); connect(mRecentFiles[i], SIGNAL(triggered()), this, SLOT(openRecentFile())); } mUi->menuRecentFiles->insertSeparator(mUi->actionClearRecentFiles); setThemeIcon(mUi->actionNew, "document-new"); setThemeIcon(mUi->actionOpen, "document-open"); setThemeIcon(mUi->menuRecentFiles, "document-open-recent"); setThemeIcon(mUi->actionClearRecentFiles, "edit-clear"); setThemeIcon(mUi->actionSave, "document-save"); setThemeIcon(mUi->actionSaveAs, "document-save-as"); setThemeIcon(mUi->actionClose, "window-close"); setThemeIcon(mUi->actionQuit, "application-exit"); setThemeIcon(mUi->actionCut, "edit-cut"); setThemeIcon(mUi->actionCopy, "edit-copy"); setThemeIcon(mUi->actionPaste, "edit-paste"); setThemeIcon(mUi->actionDelete, "edit-delete"); setThemeIcon(redoAction, "edit-redo"); setThemeIcon(undoAction, "edit-undo"); setThemeIcon(mUi->actionZoomIn, "zoom-in"); setThemeIcon(mUi->actionZoomOut, "zoom-out"); setThemeIcon(mUi->actionZoomNormal, "zoom-original"); setThemeIcon(mUi->actionNewTileset, "document-new"); setThemeIcon(mUi->actionMapProperties, "document-properties"); setThemeIcon(mUi->actionAbout, "help-about"); mStampBrush = new StampBrush(this); mBucketFillTool = new BucketFillTool(this); connect(mTilesetDock, SIGNAL(currentTilesChanged(const TileLayer*)), this, SLOT(setStampBrush(const TileLayer*))); connect(mStampBrush, SIGNAL(currentTilesChanged(const TileLayer*)), this, SLOT(setStampBrush(const TileLayer*))); QToolBar *toolBar = mUi->toolsToolBar; toolBar->addAction(mToolManager->registerTool(mStampBrush)); toolBar->addAction(mToolManager->registerTool(mBucketFillTool)); toolBar->addAction(mToolManager->registerTool(new Eraser(this))); toolBar->addAction(mToolManager->registerTool(new TileSelectionTool(this))); mDocumentManager->setSelectedTool(mToolManager->selectedTool()); connect(mToolManager, SIGNAL(selectedToolChanged(AbstractTool*)), mDocumentManager, SLOT(setSelectedTool(AbstractTool*))); statusBar()->addWidget(mStatusInfoLabel); connect(mToolManager, SIGNAL(statusInfoChanged(QString)), this, SLOT(updateStatusInfoLabel(QString))); // Add the 'Views and Toolbars' submenu. This needs to happen after all // the dock widgets and toolbars have been added to the main window. mViewsAndToolbarsMenu = new QAction(tr("Views and Toolbars"), this); QMenu *popupMenu = createPopupMenu(); popupMenu->setParent(this); mViewsAndToolbarsMenu->setMenu(popupMenu); mUi->menuView->insertAction(mUi->actionShowGrid, mViewsAndToolbarsMenu); mUi->menuView->insertSeparator(mUi->actionShowGrid); connect(ClipboardManager::instance(), SIGNAL(hasMapChanged()), SLOT(updateActions())); connect(mDocumentManager, SIGNAL(currentDocumentChanged(MapDocument*)), SLOT(mapDocumentChanged(MapDocument*))); connect(mDocumentManager, SIGNAL(documentCloseRequested(int)), this, SLOT(closeMapDocument(int))); QShortcut *switchToLeftDocument = new QShortcut(tr("Alt+Left"), this); connect(switchToLeftDocument, SIGNAL(activated()), mDocumentManager, SLOT(switchToLeftDocument())); QShortcut *switchToLeftDocument1 = new QShortcut(tr("Ctrl+Shift+Tab"), this); connect(switchToLeftDocument1, SIGNAL(activated()), mDocumentManager, SLOT(switchToLeftDocument())); QShortcut *switchToRightDocument = new QShortcut(tr("Alt+Right"), this); connect(switchToRightDocument, SIGNAL(activated()), mDocumentManager, SLOT(switchToRightDocument())); QShortcut *switchToRightDocument1 = new QShortcut(tr("Ctrl+Tab"), this); connect(switchToRightDocument1, SIGNAL(activated()), mDocumentManager, SLOT(switchToRightDocument())); new QShortcut(tr("X"), this, SLOT(flipHorizontally())); new QShortcut(tr("Y"), this, SLOT(flipVertically())); new QShortcut(tr("Z"), this, SLOT(rotateRight())); new QShortcut(tr("Shift+Z"), this, SLOT(rotateLeft())); QShortcut *copyPositionShortcut = new QShortcut(tr("Alt+C"), this); connect(copyPositionShortcut, SIGNAL(activated()), mActionHandler, SLOT(copyPosition())); updateActions(); readSettings(); setupQuickStamps(); connect(undoGroup, SIGNAL(indexChanged(int)), mKodableMapValidator, SLOT(validateCurrentMap())); connect(mKodableMapValidator, SIGNAL(errorChanged(QString)), this, SLOT(setValidationError(QString))); }
void TextEdit::setupFileActions() { standardToolBar = new QToolBar(this); standardToolBar->setWindowTitle(tr("File Actions")); addToolBar(standardToolBar); QMenu *menu = new QMenu(tr("&File"), this); menuBar()->addMenu(menu); QAction *a; a = new QAction( QIcon(":/res/smallNew.png"), tr("&New"), this); a->setPriority(QAction::LowPriority); a->setShortcut(QKeySequence::New); connect(a, SIGNAL(triggered()), this, SLOT(fileNew())); standardToolBar->addAction(a); menu->addAction(a); a = new QAction(QIcon(":/res/smallOpen.png"), tr("&Open..."), this); a->setShortcut(QKeySequence::Open); connect(a, SIGNAL(triggered()), this, SLOT(fileOpen())); standardToolBar->addAction(a); menu->addAction(a); menu->addSeparator(); actionSave = a = new QAction(QIcon(":/res/smallSave.png"),tr("&Save"), this); a->setShortcut(QKeySequence::Save); connect(a, SIGNAL(triggered()), this, SLOT(fileSave())); a->setEnabled(false); standardToolBar->addAction(a); menu->addAction(a); a = new QAction(tr("Save &As..."), this); a->setPriority(QAction::LowPriority); connect(a, SIGNAL(triggered()), this, SLOT(fileSaveAs())); menu->addAction(a); menu->addSeparator(); #ifndef QT_NO_PRINTER a = new QAction(QIcon(":/res/smallPrint.png"),tr("&Print..."), this); a->setPriority(QAction::LowPriority); a->setShortcut(QKeySequence::Print); connect(a, SIGNAL(triggered()), this, SLOT(filePrint())); standardToolBar->addAction(a); menu->addAction(a); a = new QAction(QIcon(":/res/smallPrintPreview.png"),tr("Print Preview..."), this); connect(a, SIGNAL(triggered()), this, SLOT(filePrintPreview())); menu->addAction(a); a = new QAction(QIcon(":/res/smallSavePDF.png"),tr("&Export PDF..."), this); a->setPriority(QAction::LowPriority); a->setShortcut(Qt::CTRL + Qt::Key_D); connect(a, SIGNAL(triggered()), this, SLOT(filePrintPdf())); standardToolBar->addAction(a); menu->addAction(a); menu->addSeparator(); #endif a = new QAction(tr("&Quit"), this); a->setShortcut(Qt::CTRL + Qt::Key_Q); connect(a, SIGNAL(triggered()), this, SLOT(close())); menu->addAction(a); }
void BrailleMusicEditor::setupFileActions() { auto tb = new QToolBar(this); tb->setWindowTitle(tr("File Actions")); addToolBar(tb); auto menu = new QMenu(tr("&File"), this); menuBar()->addMenu(menu); QAction *a; auto newIcon = QIcon::fromTheme("document-new"); a = new QAction(newIcon, tr("&New"), this); a->setPriority(QAction::LowPriority); a->setShortcut(QKeySequence::New); connect(a, &QAction::triggered, this, &BrailleMusicEditor::fileNew); tb->addAction(a); menu->addAction(a); a = new QAction(QIcon::fromTheme("document-open"), tr("&Open..."), this); a->setShortcut(QKeySequence::Open); connect(a, &QAction::triggered, this, &BrailleMusicEditor::fileOpen); tb->addAction(a); menu->addAction(a); menu->addSeparator(); actionSave = a = new QAction(QIcon::fromTheme("document-save"), tr("&Save"), this); a->setShortcut(QKeySequence::Save); connect(a, &QAction::triggered, this, &BrailleMusicEditor::fileSave); a->setEnabled(false); tb->addAction(a); menu->addAction(a); a = new QAction(tr("Save &As..."), this); a->setPriority(QAction::LowPriority); connect(a, &QAction::triggered, this, &BrailleMusicEditor::fileSaveAs); menu->addAction(a); menu->addSeparator(); a = new QAction(tr("&Compile"), this); a->setPriority(QAction::LowPriority); a->setShortcut(Qt::Key_F8); connect(a, &QAction::triggered, this, &BrailleMusicEditor::fileCompile); menu->addAction(a); a = new QAction(tr("Export &MusicXML"), this); a->setPriority(QAction::LowPriority); connect(a, &QAction::triggered, this, &BrailleMusicEditor::fileExportMusicXML); a->setEnabled(false); connect(this, &BrailleMusicEditor::scoreAvailable, a, &QAction::setEnabled); menu->addAction(a); a = new QAction(tr("Export &LilyPond"), this); a->setPriority(QAction::LowPriority); connect(a, &QAction::triggered, this, &BrailleMusicEditor::fileExportLilyPond); a->setEnabled(false); connect(this, &BrailleMusicEditor::scoreAvailable, a, &QAction::setEnabled); menu->addAction(a); menu->addSeparator(); a = new QAction(tr("&Quit"), this); a->setShortcut(Qt::CTRL + Qt::Key_Q); connect(a, &QAction::triggered, this, &BrailleMusicEditor::close); menu->addAction(a); connect(this, &BrailleMusicEditor::scoreAvailable, this, &BrailleMusicEditor::runLilyPond); }