bool QuickOpenManager::initWithApp(IApplication *app) { if (!IQuickOpenManager::initWithApp(app)) { return false; } m_liteApp->extension()->addObject("LiteApi.IQuickOpenManager",this); m_widget = new QuickOpenWidget(m_liteApp,m_liteApp->mainWindow()); connect(m_widget->editor(),SIGNAL(textChanged(QString)),this,SLOT(filterChanged(QString))); connect(m_widget->editor(),SIGNAL(returnPressed()),this,SLOT(selected())); connect(m_widget->view(),SIGNAL(clicked(QModelIndex)),this,SLOT(selected())); connect(m_widget->view(),SIGNAL(activated(QModelIndex)),this,SLOT(selected())); connect(m_widget,SIGNAL(hideWidget()),this,SLOT(hideWidget())); connect(m_widget,SIGNAL(indexChanage(QModelIndex)),this,SLOT(indexChanage(QModelIndex))); m_quickOpenFiles = new QuickOpenFiles(app,this); m_quickOpenFolder = new QuickOpenFolder(app,this); this->addFilter("",m_quickOpenFiles); this->addFilter("",m_quickOpenFolder); this->addFilter("~",new QuickOpenEditor(m_liteApp,this)); this->addFilter(">",new QuickOpenAction(m_liteApp,this)); this->addFilter("?",new QuickOpenHelp(m_liteApp,this)); this->registerQuickOpenMimeType("@"); m_quickOpenAct = new QAction(tr("Quick Open File"),this); m_quickOpenEditAct = new QAction(tr("Quick Open Editor"),this); m_quickOpenSymbolAct = new QAction(tr("Quick Open Symbol"),this); m_quickOpenActionAct = new QAction(tr("Quick Open Command"),this); m_quickOpenHelpAct = new QAction(tr("Show All Quick Open Actions"),this); m_liteApp->actionManager()->setViewMenuSeparator("sep/quickopen",true); LiteApi::IActionContext *context = m_liteApp->actionManager()->getActionContext(m_liteApp,"App"); context->regAction(m_quickOpenAct,"QuickOpen","CTRL+P"); context->regAction(m_quickOpenEditAct,"QuickOpenEditor","CTRL+ALT+P"); context->regAction(m_quickOpenActionAct,"QuickOpenCommand","CTRL+SHIFT+P"); context->regAction(m_quickOpenSymbolAct,"QuickOpenSymbol","CTRL+SHIFT+O"); context->regAction(m_quickOpenHelpAct,"QuickOpenHelp",""); m_liteApp->actionManager()->insertMenuActions(ID_MENU_TOOLS,"sep/quickopen",true, QList<QAction*>() << m_quickOpenAct << m_quickOpenActionAct << m_quickOpenEditAct << m_quickOpenSymbolAct << m_quickOpenHelpAct ); connect(m_quickOpenAct,SIGNAL(triggered(bool)),this,SLOT(quickOpen())); connect(m_quickOpenEditAct,SIGNAL(triggered(bool)),this,SLOT(quickOpenEditor())); connect(m_quickOpenSymbolAct,SIGNAL(triggered(bool)),this,SLOT(quickOpenSymbol())); connect(m_quickOpenActionAct,SIGNAL(triggered(bool)),this,SLOT(quickOpenCommand())); connect(m_quickOpenHelpAct,SIGNAL(triggered(bool)),this,SLOT(quickOpenHelp())); connect(m_liteApp,SIGNAL(aboutToQuit()),this,SLOT(appAboutToQuit())); return true; }
bool LiteFindPlugin::load(LiteApi::IApplication *app) { m_liteApp = app; QLayout *layout = m_liteApp->editorManager()->widget()->layout(); if (!layout) { return false; } QMenu *menu = m_liteApp->actionManager()->insertMenu("menu/find",tr("F&ind"),"menu/help"); if (!menu) { return false; } m_findEditor = new FindEditor(m_liteApp,this); m_findEditor->widget()->hide(); layout->addWidget(m_findEditor->widget()); LiteApi::IActionContext *actionContext = m_liteApp->actionManager()->getActionContext(this,"Find"); m_findAct = new QAction(tr("Find"),this); actionContext->regAction(m_findAct,"Find",QKeySequence::Find); m_findNextAct = new QAction(tr("Find Next"),this); actionContext->regAction(m_findNextAct,"FindNext",QKeySequence::FindNext); m_findPrevAct = new QAction(tr("Find Previous"),this); actionContext->regAction(m_findPrevAct,"FindPrevious",QKeySequence::FindPrevious); m_replaceAct = new QAction(tr("Replace"),this); actionContext->regAction(m_replaceAct,"Replace",QKeySequence::Replace); m_fileSearchAct = new QAction(tr("File Search"),this); actionContext->regAction(m_fileSearchAct,"FileSearch","Ctrl+Shift+F"); menu->addAction(m_findAct); menu->addAction(m_findNextAct); menu->addAction(m_findPrevAct); menu->addSeparator(); menu->addAction(m_replaceAct); menu->addSeparator(); menu->addAction(m_fileSearchAct); connect(m_findAct,SIGNAL(triggered()),this,SLOT(find())); connect(m_findNextAct,SIGNAL(triggered()),m_findEditor,SLOT(findNext())); connect(m_findPrevAct,SIGNAL(triggered()),m_findEditor,SLOT(findPrev())); connect(m_replaceAct,SIGNAL(triggered()),this,SLOT(replace())); connect(m_liteApp,SIGNAL(key_escape()),this,SLOT(hideFind())); FileSearchManager *manager = new FileSearchManager(m_liteApp,this); FileSearch *fileSearch = new FileSearch(m_liteApp,manager); manager->addFileSearch(fileSearch); connect(m_fileSearchAct,SIGNAL(triggered()),manager,SLOT(newSearch())); return true; }
GolangEdit::GolangEdit(LiteApi::IApplication *app, QObject *parent) : QObject(parent), m_liteApp(app) { LiteApi::IActionContext *actionContext = m_liteApp->actionManager()->getActionContext(this,"GolangEdit"); m_findInfoAct = new QAction(tr("View Expression Information"),this); actionContext->regAction(m_findInfoAct,"ViewInfo","CTRL+SHIFT+I;F1"); m_jumpDeclAct = new QAction(tr("Jump to Declaration"),this); actionContext->regAction(m_jumpDeclAct,"JumpToDeclaration","CTRL+SHIFT+J;F2"); m_findUseAct = new QAction(tr("Find Usages"),this); actionContext->regAction(m_findUseAct,"FindUsages","CTRL+SHIFT+U"); m_renameSymbolAct = new QAction(tr("Rename Symbol Under Cursor"),this); actionContext->regAction(m_renameSymbolAct,"RenameSymbol","CTRL+SHIFT+R"); m_fileSearch = new GolangFileSearch(app,this); m_commentAct = new QAction(tr("Comment/Uncomment Selection"),this); actionContext->regAction(m_commentAct,"Comment","CTRL+/"); LiteApi::IFileSearchManager *manager = LiteApi::getFileSearchManager(app); if (manager) { manager->addFileSearch(m_fileSearch); } m_findDefProcess = new ProcessEx(this); m_findInfoProcess = new ProcessEx(this); m_findLinkProcess = new ProcessEx(this); connect(m_liteApp->editorManager(),SIGNAL(editorCreated(LiteApi::IEditor*)),this,SLOT(editorCreated(LiteApi::IEditor*))); connect(m_liteApp->editorManager(),SIGNAL(currentEditorChanged(LiteApi::IEditor*)),this,SLOT(currentEditorChanged(LiteApi::IEditor*))); connect(m_findInfoAct,SIGNAL(triggered()),this,SLOT(editorFindInfo())); connect(m_jumpDeclAct,SIGNAL(triggered()),this,SLOT(editorJumpToDecl())); connect(m_findUseAct,SIGNAL(triggered()),this,SLOT(editorFindUsages())); connect(m_renameSymbolAct,SIGNAL(triggered()),this,SLOT(editorRenameSymbol())); connect(m_commentAct,SIGNAL(triggered()),this,SLOT(editorComment())); connect(m_findDefProcess,SIGNAL(started()),this,SLOT(findDefStarted())); connect(m_findDefProcess,SIGNAL(extOutput(QByteArray,bool)),this,SLOT(findDefOutput(QByteArray,bool))); connect(m_findDefProcess,SIGNAL(extFinish(bool,int,QString)),this,SLOT(findDefFinish(bool,int,QString))); connect(m_findInfoProcess,SIGNAL(started()),this,SLOT(findInfoStarted())); connect(m_findInfoProcess,SIGNAL(extOutput(QByteArray,bool)),this,SLOT(findInfoOutput(QByteArray,bool))); connect(m_findInfoProcess,SIGNAL(extFinish(bool,int,QString)),this,SLOT(findInfoFinish(bool,int,QString))); connect(m_findLinkProcess,SIGNAL(started()),this,SLOT(findLinkStarted())); connect(m_findLinkProcess,SIGNAL(extOutput(QByteArray,bool)),this,SLOT(findLinkOutput(QByteArray,bool))); connect(m_findLinkProcess,SIGNAL(extFinish(bool,int,QString)),this,SLOT(findLinkFinish(bool,int,QString))); }
QAction *SplitWindowStyle::addToolWindow(LiteApi::IApplication *app,Qt::DockWidgetArea area, QWidget *widget, const QString &id, const QString &title, bool split, QList<QAction*> widgetActions) { // QMap<QString,SplitInitToolSate>::iterator it = m_initIdStateMap.find(id); // if (it != m_initIdStateMap.end()) { // area = it.value().area; // split = it.value().split; // } area = (Qt::DockWidgetArea)m_liteApp->settings()->value("split_area/"+id,area).toInt(); split = m_liteApp->settings()->value("split_split/"+id,split).toBool(); SplitActionToolBar *actToolBar = m_areaToolBar.value(area); QAction *action = new QAction(this); action->setText(title); action->setCheckable(true); action->setObjectName(id); SplitActionState *state = new SplitActionState; state->area = area; state->split = split; state->widget = widget; state->widgetActions = widgetActions; state->id = id; state->title = title; actToolBar->addAction(action,title,split); int index = m_actStateMap.size(); if (index <= 9) { action->setText(QString("%1: %2").arg(index).arg(title)); QKeySequence ks(LiteApi::UseMacShortcuts?QString("Ctrl+Alt+%1").arg(index):QString("Alt+%1").arg(index)); LiteApi::IActionContext *actionContext = app->actionManager()->getActionContext(app,"App"); actionContext->regAction(action,"ToolWindow_"+id,ks.toString()); } m_actStateMap.insert(action,state); connect(action,SIGNAL(toggled(bool)),this,SLOT(toggledAction(bool))); if (m_windowMenu) { m_windowMenu->addAction(action); } return action; }
DocumentBrowser::DocumentBrowser(LiteApi::IApplication *app, QObject *parent) : LiteApi::IDocumentBrowser(parent), m_liteApp(app), m_extension(new Extension) { m_widget = new QWidget; m_htmlWidget = app->htmlWidgetManager()->createByName(this,"QTextBrowser"); m_toolBar = new QToolBar; m_toolBar->setIconSize(LiteApi::getToolBarIconSize()); m_backwardAct = new QAction(QIcon("icon:images/backward.png"),tr("Back"),this); m_forwardAct = new QAction(QIcon("icon:images/forward.png"),tr("Forward"),this); m_reloadUrlAct = new QAction(QIcon("icon:images/reload.png"),tr("Reload"),this); m_toolBar->addAction(m_backwardAct); m_toolBar->addAction(m_forwardAct); LiteApi::IActionContext *actionContext = m_liteApp->actionManager()->getActionContext(this,"Document"); m_increaseFontSize = new QAction(tr("Increase Font Size"),this); actionContext->regAction(m_increaseFontSize,"IncreaseFontSize","Ctrl++;Ctrl+="); m_decreaseFontSize = new QAction(tr("Decrease Font Size"),this); actionContext->regAction(m_decreaseFontSize,"DecreaseFontSize","Ctrl+-"); m_resetFontSize = new QAction(tr("Reset Font Size"),this); actionContext->regAction(m_resetFontSize,"ResizeFontSize","Ctrl+0"); m_urlComboBox = new QComboBox; m_urlComboBox->setEditable(true); m_urlComboBox->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Preferred); m_toolBar->addSeparator(); m_toolBar->addWidget(m_urlComboBox); m_toolBar->addAction(m_reloadUrlAct); QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->setMargin(0); mainLayout->setSpacing(0); mainLayout->addWidget(m_toolBar); mainLayout->addWidget(m_htmlWidget->widget()); m_widget->setLayout(mainLayout); m_widget->addAction(m_increaseFontSize); m_widget->addAction(m_decreaseFontSize); m_widget->addAction(m_resetFontSize); connect(m_increaseFontSize,SIGNAL(triggered()),this,SLOT(increaseFontSize())); connect(m_decreaseFontSize,SIGNAL(triggered()),this,SLOT(decreaseFontSize())); connect(m_resetFontSize,SIGNAL(triggered()),this,SLOT(resetFontSize())); connect(m_htmlWidget,SIGNAL(linkHovered(QUrl)),this,SIGNAL(linkHovered(QUrl))); connect(m_htmlWidget,SIGNAL(linkClicked(QUrl)),this,SLOT(linkClicked(QUrl))); connect(m_htmlWidget,SIGNAL(loadFinished(bool)),this,SIGNAL(documentLoaded())); connect(m_backwardAct,SIGNAL(triggered()),this,SLOT(backward())); connect(m_forwardAct,SIGNAL(triggered()),this,SLOT(forward())); connect(m_reloadUrlAct,SIGNAL(triggered()),this,SLOT(reloadUrl())); connect(m_urlComboBox,SIGNAL(activated(QString)),this,SLOT(activatedUrl(QString))); connect(this,SIGNAL(backwardAvailable(bool)),m_backwardAct,SLOT(setEnabled(bool))); connect(this,SIGNAL(forwardAvailable(bool)),m_forwardAct,SLOT(setEnabled(bool))); m_extension->addObject("LiteApi.IDocumentBrowser",this); m_extension->addObject("LiteApi.IHtmlWidget",m_htmlWidget); m_extension->addObject("LiteApi.QTextBrowser",m_htmlWidget->widget()); m_htmlWidget->installEventFilter(m_liteApp->editorManager()); requestFontZoom(0); QPalette p = m_htmlWidget->widget()->palette(); p.setBrush(QPalette::Highlight,Qt::yellow); p.setColor(QPalette::HighlightedText,Qt::black); m_htmlWidget->widget()->setPalette(p); emit backwardAvailable(false); emit forwardAvailable(false); }
GolangPresentEdit::GolangPresentEdit(LiteApi::IApplication *app, LiteApi::IEditor *editor, QObject *parent) : QObject(parent), m_liteApp(app), m_htmldoc(0), m_process(0) { m_editor = LiteApi::getLiteEditor(editor); if (!m_editor) { return; } m_ed = LiteApi::getPlainTextEdit(editor); m_editor->setWordWrap(true); connect(m_liteApp->editorManager(),SIGNAL(editorSaved(LiteApi::IEditor*)),this,SLOT(editorSaved(LiteApi::IEditor*))); LiteApi::IActionContext *actionContext = m_liteApp->actionManager()->getActionContext(this,"GoSlide"); QAction *s1 = new QAction(QIcon("icon:golangpresent/images/s1.png"),tr("Section (s1)"),this); actionContext->regAction(s1,"Section","Ctrl+1"); QAction *s2 = new QAction(QIcon("icon:golangpresent/images/s2.png"),tr("Subsection (s2)"),this); actionContext->regAction(s2,"Subsection","Ctrl+2"); QAction *s3 = new QAction(QIcon("icon:golangpresent/images/s3.png"),tr("Sub-subsection (s3)"),this); actionContext->regAction(s3,"Sub-subsection","Ctrl+3"); QAction *bold = new QAction(QIcon("icon:golangpresent/images/bold.png"),tr("Bold"),this); actionContext->regAction(bold,"Bold",QKeySequence::Bold); QAction *italic = new QAction(QIcon("icon:golangpresent/images/italic.png"),tr("Italic"),this); actionContext->regAction(italic,"Italic",QKeySequence::Italic); QAction *code = new QAction(QIcon("icon:golangpresent/images/code.png"),tr("Inline Code"),this); actionContext->regAction(code,"InlineCode","Ctrl+K"); QAction *bullets = new QAction(QIcon("icon:golangpresent/images/bullets.png"),tr("Switch Bullets"),this); actionContext->regAction(bullets,"Switch Bullets","Ctrl+Shift+U"); QAction *comment = new QAction(tr("Comment/Uncomment Selection"),this); actionContext->regAction(comment,"Comment","Ctrl+/"); QAction *exportHtml = new QAction(QIcon("icon:golangpresent/images/exporthtml.png"),tr("Export HTML"),this); actionContext->regAction(exportHtml,"Export HTML",""); QAction *verify = new QAction(QIcon("icon:golangpresent/images/verify.png"),tr("Verify Present"),this); actionContext->regAction(verify,"Verify Present",""); //QAction *exportPdf = new QAction(QIcon("icon:golangpresent/images/exportpdf.png"),tr("Export PDF"),this); //actionContext->regAction(exportPdf,"Export PDF",""); connect(m_editor,SIGNAL(destroyed()),this,SLOT(deleteLater())); connect(s1,SIGNAL(triggered()),this,SLOT(s1())); connect(s2,SIGNAL(triggered()),this,SLOT(s2())); connect(s3,SIGNAL(triggered()),this,SLOT(s3())); connect(bold,SIGNAL(triggered()),this,SLOT(bold())); connect(italic,SIGNAL(triggered()),this,SLOT(italic())); connect(code,SIGNAL(triggered()),this,SLOT(code())); connect(bullets,SIGNAL(triggered()),this,SLOT(bullets())); connect(comment,SIGNAL(triggered()),this,SLOT(comment())); connect(exportHtml,SIGNAL(triggered()),this,SLOT(exportHtml())); connect(verify,SIGNAL(triggered()),this,SLOT(verify())); //connect(exportPdf,SIGNAL(triggered()),this,SLOT(exportPdf())); QToolBar *toolBar = LiteApi::findExtensionObject<QToolBar*>(editor,"LiteApi.QToolBar"); if (toolBar) { toolBar->addSeparator(); toolBar->addAction(s1); toolBar->addAction(s2); toolBar->addAction(s3); toolBar->addSeparator(); toolBar->addAction(bold); toolBar->addAction(italic); toolBar->addAction(code); toolBar->addSeparator(); toolBar->addAction(bullets); toolBar->addSeparator(); toolBar->addAction(verify); toolBar->addSeparator(); toolBar->addAction(exportHtml); //toolBar->addAction(exportPdf); } QMenu *menu = LiteApi::getEditMenu(editor); if (menu) { menu->addSeparator(); menu->addAction(s1); menu->addAction(s2); menu->addAction(s3); menu->addSeparator(); menu->addAction(bold); menu->addAction(italic); menu->addAction(code); menu->addSeparator(); menu->addAction(bullets); menu->addSeparator(); menu->addAction(comment); menu->addSeparator(); menu->addAction(verify); menu->addSeparator(); menu->addAction(exportHtml); //menu->addAction(exportPdf); } menu = LiteApi::getContextMenu(editor); if (menu) { menu->addSeparator(); menu->addAction(s1); menu->addAction(s2); menu->addAction(s3); menu->addSeparator(); menu->addAction(bold); menu->addAction(italic); menu->addAction(code); menu->addSeparator(); menu->addAction(bullets); menu->addSeparator(); menu->addAction(comment); } }
void LiteEditor::createActions() { LiteApi::IActionContext *actionContext = m_liteApp->actionManager()->getActionContext(this,"Editor"); m_undoAct = new QAction(QIcon("icon:liteeditor/images/undo.png"),tr("Undo"),this); actionContext->regAction(m_undoAct,"Undo",QKeySequence::Undo); m_redoAct = new QAction(QIcon("icon:liteeditor/images/redo.png"),tr("Redo"),this); actionContext->regAction(m_redoAct,"Redo","Ctrl+Shift+Z; Ctrl+Y"); m_cutAct = new QAction(QIcon("icon:liteeditor/images/cut.png"),tr("Cut"),this); actionContext->regAction(m_cutAct,"Cut",QKeySequence::Cut); m_copyAct = new QAction(QIcon("icon:liteeditor/images/copy.png"),tr("Copy"),this); actionContext->regAction(m_copyAct,"Copy",QKeySequence::Copy); m_pasteAct = new QAction(QIcon("icon:liteeditor/images/paste.png"),tr("Paste"),this); actionContext->regAction(m_pasteAct,"Paste",QKeySequence::Paste); m_selectAllAct = new QAction(tr("Select All"),this); actionContext->regAction(m_selectAllAct,"SelectAll",QKeySequence::SelectAll); m_exportHtmlAct = new QAction(QIcon("icon:liteeditor/images/exporthtml.png"),tr("Export HTML..."),this); #ifndef QT_NO_PRINTER m_exportPdfAct = new QAction(QIcon("icon:liteeditor/images/exportpdf.png"),tr("Export PDF..."),this); m_filePrintAct = new QAction(QIcon("icon:liteeditor/images/fileprint.png"),tr("Print..."),this); m_filePrintPreviewAct = new QAction(QIcon("icon:liteeditor/images/fileprintpreview.png"),tr("Print Preview..."),this); #endif m_gotoPrevBlockAct = new QAction(tr("Go To Previous Block"),this); actionContext->regAction(m_gotoPrevBlockAct,"GotoPreviousBlock","Ctrl+["); m_gotoNextBlockAct = new QAction(tr("Go To Next Block"),this); actionContext->regAction(m_gotoNextBlockAct,"GotoNextBlock","Ctrl+]"); m_selectBlockAct = new QAction(tr("Select Block"),this); actionContext->regAction(m_selectBlockAct,"SelectBlock","Ctrl+U"); m_gotoMatchBraceAct = new QAction(tr("Go To Matching Brace"),this); actionContext->regAction(m_gotoMatchBraceAct,"GotoMatchBrace","Ctrl+E"); m_foldAct = new QAction(tr("Fold"),this); actionContext->regAction(m_foldAct,"Fold","Ctrl+<"); m_unfoldAct = new QAction(tr("Unfold"),this); actionContext->regAction(m_unfoldAct,"Unfold","Ctrl+>"); m_foldAllAct = new QAction(tr("Fold All"),this); actionContext->regAction(m_foldAllAct,"FoldAll",""); m_unfoldAllAct = new QAction(tr("Unfold All"),this); actionContext->regAction(m_unfoldAllAct,"UnfoldAll",""); connect(m_foldAct,SIGNAL(triggered()),m_editorWidget,SLOT(fold())); connect(m_unfoldAct,SIGNAL(triggered()),m_editorWidget,SLOT(unfold())); connect(m_foldAllAct,SIGNAL(triggered()),m_editorWidget,SLOT(foldAll())); connect(m_unfoldAllAct,SIGNAL(triggered()),m_editorWidget,SLOT(unfoldAll())); m_gotoLineAct = new QAction(tr("Go To Line"),this); actionContext->regAction(m_gotoLineAct,"GotoLine","Ctrl+L"); m_lockAct = new QAction(QIcon("icon:liteeditor/images/lock.png"),tr("Locked"),this); m_lockAct->setEnabled(false); m_duplicateAct = new QAction(tr("Duplicate"),this); actionContext->regAction(m_duplicateAct,"Duplicate","Ctrl+Shift+D"); connect(m_duplicateAct,SIGNAL(triggered()),m_editorWidget,SLOT(duplicate())); m_deleteLineAct = new QAction(tr("Delete Line"),this); actionContext->regAction(m_deleteLineAct,"DeleteLine","Ctrl+Shift+K"); connect(m_deleteLineAct,SIGNAL(triggered()),m_editorWidget,SLOT(deleteLine())); m_copyLineAct = new QAction(tr("Copy Line"),this); actionContext->regAction(m_copyLineAct,"CopyLine","Ctrl+Ins"); connect(m_copyLineAct,SIGNAL(triggered()),m_editorWidget,SLOT(copyLine())); m_cutLineAct = new QAction(tr("Cut Line"),this); actionContext->regAction(m_cutLineAct,"CutLine","Shift+Del"); connect(m_cutLineAct,SIGNAL(triggered()),m_editorWidget,SLOT(cutLine())); m_insertLineBeforeAct = new QAction(tr("Insert Line Before"),this); actionContext->regAction(m_insertLineBeforeAct,"InsertLineBefore","Ctrl+Shift+Return"); connect(m_insertLineBeforeAct,SIGNAL(triggered()),m_editorWidget,SLOT(insertLineBefore())); m_insertLineAfterAct = new QAction(tr("Insert Line After"),this); actionContext->regAction(m_insertLineAfterAct,"InsertLineAfter","Ctrl+Return"); connect(m_insertLineAfterAct,SIGNAL(triggered()),m_editorWidget,SLOT(insertLineAfter())); m_increaseFontSizeAct = new QAction(tr("Increase Font Size"),this); actionContext->regAction(m_increaseFontSizeAct,"IncreaseFontSize","Ctrl++"); m_decreaseFontSizeAct = new QAction(tr("Decrease Font Size"),this); actionContext->regAction(m_decreaseFontSizeAct,"DecreaseFontSize","Ctrl+-"); m_resetFontSizeAct = new QAction(tr("Reset Font Size"),this); actionContext->regAction(m_resetFontSizeAct,"ResetFontSize","Ctrl+0"); m_cleanWhitespaceAct = new QAction(tr("Clean Whitespace"),this); actionContext->regAction(m_cleanWhitespaceAct,"CleanWhitespace",""); m_wordWrapAct = new QAction(tr("Word Wrap (MimeType)"),this); m_wordWrapAct->setCheckable(true); actionContext->regAction(m_wordWrapAct,"WordWrap",""); m_codeCompleteAct = new QAction(tr("Code Complete"),this); #ifdef Q_OS_MAC actionContext->regAction(m_codeCompleteAct,"CodeComplete","Meta+Space"); #else actionContext->regAction(m_codeCompleteAct,"CodeComplete","Ctrl+Space"); #endif m_commentAct = new QAction(tr("Toggle Comment"),this); actionContext->regAction(m_commentAct,"Comment","Ctrl+/"); m_blockCommentAct = new QAction(tr("Toggle Block Commnet"),this); actionContext->regAction(m_blockCommentAct,"BlockComment","Ctrl+Shift+/"); m_autoIndentAct = new QAction(tr("Auto-indent Selection"),this); actionContext->regAction(m_autoIndentAct,"AutoIndent","Ctrl+I"); m_autoIndentAct->setVisible(false); m_tabToSpacesAct = new QAction(tr("Tab To Spaces (MimeType)"),this); actionContext->regAction(m_tabToSpacesAct,"TabToSpaces",""); m_tabToSpacesAct->setCheckable(true); m_lineEndingWindowAct = new QAction(tr("Line End Windows (\\r\\n)"),this); actionContext->regAction(m_lineEndingWindowAct,"LineEndingWindow",""); m_lineEndingWindowAct->setCheckable(true); m_lineEndingUnixAct = new QAction(tr("Line End Unix (\\n)"),this); actionContext->regAction(m_lineEndingUnixAct,"LineEndingUnix",""); m_lineEndingUnixAct->setCheckable(true); m_visualizeWhitespaceAct = new QAction(tr("Visualize Whitespace (Global)"),this); actionContext->regAction(m_visualizeWhitespaceAct,"VisualizeWhitespace",""); m_visualizeWhitespaceAct->setCheckable(true); m_commentAct->setVisible(false); m_blockCommentAct->setVisible(false); m_moveLineUpAction = new QAction(tr("Move Line Up"),this); actionContext->regAction(m_moveLineUpAction,"MoveLineUp","Ctrl+Shift+Up"); m_moveLineDownAction = new QAction(tr("Move Line Down"),this); actionContext->regAction(m_moveLineDownAction,"MoveLineDown","Ctrl+Shift+Down"); m_copyLineUpAction = new QAction(tr("Copy Line Up"),this); actionContext->regAction(m_copyLineUpAction,"CopyLineUp","Ctrl+Alt+Up"); m_copyLineDownAction = new QAction(tr("Copy Line Down"),this); actionContext->regAction(m_copyLineDownAction,"CopyLineDown","Ctrl+Alt+Down"); m_joinLinesAction = new QAction(tr("Join Lines"),this); actionContext->regAction(m_joinLinesAction,"JoinLines","Ctrl+J"); connect(m_codeCompleteAct,SIGNAL(triggered()),m_editorWidget,SLOT(codeCompleter())); // m_widget->addAction(m_foldAct); // m_widget->addAction(m_unfoldAct); // m_widget->addAction(m_gotoLineAct); // m_widget->addAction(m_gotoPrevBlockAct); // m_widget->addAction(m_gotoNextBlockAct); // m_widget->addAction(m_selectBlockAct); // m_widget->addAction(m_gotoMatchBraceAct); connect(m_editorWidget,SIGNAL(undoAvailable(bool)),m_undoAct,SLOT(setEnabled(bool))); connect(m_editorWidget,SIGNAL(redoAvailable(bool)),m_redoAct,SLOT(setEnabled(bool))); connect(m_editorWidget,SIGNAL(copyAvailable(bool)),m_cutAct,SLOT(setEnabled(bool))); connect(m_editorWidget,SIGNAL(copyAvailable(bool)),m_copyAct,SLOT(setEnabled(bool))); connect(m_editorWidget,SIGNAL(wordWrapChanged(bool)),m_wordWrapAct,SLOT(setChecked(bool))); connect(m_undoAct,SIGNAL(triggered()),m_editorWidget,SLOT(undo())); connect(m_redoAct,SIGNAL(triggered()),m_editorWidget,SLOT(redo())); connect(m_cutAct,SIGNAL(triggered()),m_editorWidget,SLOT(cut())); connect(m_copyAct,SIGNAL(triggered()),m_editorWidget,SLOT(copy())); connect(m_pasteAct,SIGNAL(triggered()),m_editorWidget,SLOT(paste())); connect(m_selectAllAct,SIGNAL(triggered()),m_editorWidget,SLOT(selectAll())); connect(m_selectBlockAct,SIGNAL(triggered()),m_editorWidget,SLOT(selectBlock())); connect(m_exportHtmlAct,SIGNAL(triggered()),this,SLOT(exportHtml())); #ifndef QT_NO_PRINTER connect(m_exportPdfAct,SIGNAL(triggered()),this,SLOT(exportPdf())); connect(m_filePrintAct,SIGNAL(triggered()),this,SLOT(filePrint())); connect(m_filePrintPreviewAct,SIGNAL(triggered()),this,SLOT(filePrintPreview())); #endif connect(m_gotoPrevBlockAct,SIGNAL(triggered()),m_editorWidget,SLOT(gotoPrevBlock())); connect(m_gotoNextBlockAct,SIGNAL(triggered()),m_editorWidget,SLOT(gotoNextBlock())); connect(m_gotoMatchBraceAct,SIGNAL(triggered()),m_editorWidget,SLOT(gotoMatchBrace())); connect(m_gotoLineAct,SIGNAL(triggered()),this,SLOT(gotoLine())); connect(m_increaseFontSizeAct,SIGNAL(triggered()),this,SLOT(increaseFontSize())); connect(m_decreaseFontSizeAct,SIGNAL(triggered()),this,SLOT(decreaseFontSize())); connect(m_resetFontSizeAct,SIGNAL(triggered()),this,SLOT(resetFontSize())); connect(m_cleanWhitespaceAct,SIGNAL(triggered()),m_editorWidget,SLOT(cleanWhitespace())); connect(m_wordWrapAct,SIGNAL(triggered(bool)),m_editorWidget,SLOT(setWordWrapOverride(bool))); connect(m_commentAct,SIGNAL(triggered()),this,SLOT(comment())); connect(m_blockCommentAct,SIGNAL(triggered()),this,SLOT(blockComment())); connect(m_autoIndentAct,SIGNAL(triggered()),this,SLOT(autoIndent())); connect(m_tabToSpacesAct,SIGNAL(toggled(bool)),this,SLOT(tabToSpacesToggled(bool))); connect(m_visualizeWhitespaceAct,SIGNAL(toggled(bool)),this,SLOT(toggledVisualizeWhitespace(bool))); connect(m_moveLineUpAction,SIGNAL(triggered()),m_editorWidget,SLOT(moveLineUp())); connect(m_moveLineDownAction,SIGNAL(triggered()),m_editorWidget,SLOT(moveLineDown())); connect(m_copyLineUpAction,SIGNAL(triggered()),m_editorWidget,SLOT(copyLineUp())); connect(m_copyLineDownAction,SIGNAL(triggered()),m_editorWidget,SLOT(copyLineDown())); connect(m_joinLinesAction,SIGNAL(triggered()),m_editorWidget,SLOT(joinLines())); //connect(m_lineEndingWindowAct,SIGNAL(triggered()),this,SLOT(lineEndingWindow())); //connect(m_lineEndingUnixAct,SIGNAL(triggered()),this,SLOT(lineEndingUnixAct())); QActionGroup *group = new QActionGroup(this); group->addAction(m_lineEndingWindowAct); group->addAction(m_lineEndingUnixAct); connect(group,SIGNAL(triggered(QAction*)),this,SLOT(triggeredLineEnding(QAction*))); #ifdef Q_OS_WIN QClipboard *clipboard = QApplication::clipboard(); connect(clipboard,SIGNAL(dataChanged()),this,SLOT(clipbordDataChanged())); clipbordDataChanged(); #endif }
MarkdownEdit::MarkdownEdit(LiteApi::IApplication *app, LiteApi::IEditor *editor, QObject *parent) : QObject(parent), m_liteApp(app) { m_editor = LiteApi::getTextEditor(editor); if (!m_editor) { return; } m_ed = LiteApi::getPlainTextEdit(editor); if (!m_ed) { return; } m_ed->setLineWrapMode(QPlainTextEdit::WidgetWidth); LiteApi::IActionContext *actionContext = m_liteApp->actionManager()->getActionContext(this,"Markdown"); QAction *h1 = new QAction(QIcon("icon:markdown/images/h1.png"),tr("Header (h1)"),this); actionContext->regAction(h1,"Header1","Ctrl+1"); QAction *h2 = new QAction(QIcon("icon:markdown/images/h2.png"),tr("Header (h2)"),this); actionContext->regAction(h2,"Header2","Ctrl+2"); QAction *h3 = new QAction(QIcon("icon:markdown/images/h3.png"),tr("Header (h3)"),this); actionContext->regAction(h3,"Header3","Ctrl+3"); QAction *h4 = new QAction(QIcon("icon:markdown/images/h4.png"),tr("Header (h4)"),this); actionContext->regAction(h4,"Header4","Ctrl+4"); QAction *h5 = new QAction(QIcon("icon:markdown/images/h5.png"),tr("Header (h5)"),this); actionContext->regAction(h5,"Header5","Ctrl+5"); QAction *h6 = new QAction(QIcon("icon:markdown/images/h6.png"),tr("Header (h6)"),this); actionContext->regAction(h6,"Header6","Ctrl+6"); QAction *bold = new QAction(QIcon("icon:markdown/images/bold.png"),tr("Bold"),this); actionContext->regAction(bold,"Bold",QKeySequence::Bold); QAction *italic = new QAction(QIcon("icon:markdown/images/italic.png"),tr("Italic"),this); actionContext->regAction(italic,"Italic",QKeySequence::Italic); QAction *code = new QAction(QIcon("icon:markdown/images/code.png"),tr("Inline Code"),this); actionContext->regAction(code,"InlineCode","Ctrl+K"); QAction *link = new QAction(QIcon("icon:markdown/images/link.png"),tr("Link"),this); actionContext->regAction(link,"Link","Ctrl+Shift+L"); QAction *image = new QAction(QIcon("icon:markdown/images/image.png"),tr("Image"),this); actionContext->regAction(image,"Image","Ctrl+Shift+I"); QAction *ul = new QAction(QIcon("icon:markdown/images/ul.png"),tr("Unordered List"),this); actionContext->regAction(ul,"UnorderedList","Ctrl+Shift+U"); QAction *ol = new QAction(QIcon("icon:markdown/images/ol.png"),tr("Ordered List"),this); actionContext->regAction(ol,"OrderedList","Ctrl+Shift+O"); QAction *bq = new QAction(QIcon("icon:markdown/images/quote.png"),tr("Blockquote"),this); actionContext->regAction(bq,"Blockquote","Ctrl+Shift+Q"); QAction *hr = new QAction(QIcon("icon:markdown/images/hr.png"),tr("Horizontal Rule"),this); actionContext->regAction(hr,"HorizontalRule","Ctrl+Shift+H"); QToolBar *toolBar = LiteApi::findExtensionObject<QToolBar*>(editor,"LiteApi.QToolBar"); QMenu *menu = LiteApi::getEditMenu(editor); if (menu) { menu->addSeparator(); QMenu *h = menu->addMenu(tr("Heading")); h->addAction(h1); h->addAction(h2); h->addAction(h3); h->addAction(h4); h->addAction(h5); h->addAction(h6); menu->addSeparator(); menu->addAction(link); menu->addAction(image); menu->addSeparator(); menu->addAction(bold); menu->addAction(italic); menu->addAction(code); menu->addSeparator(); menu->addAction(ul); menu->addAction(ol); menu->addSeparator(); menu->addAction(bq); menu->addAction(hr); } menu = LiteApi::getContextMenu(editor); if (menu) { menu->addSeparator(); menu->addAction(link); menu->addAction(image); menu->addSeparator(); menu->addAction(bold); menu->addAction(italic); menu->addAction(code); menu->addSeparator(); menu->addAction(ul); menu->addAction(ol); menu->addSeparator(); menu->addAction(bq); menu->addAction(hr); } if (toolBar) { toolBar->addSeparator(); toolBar->addAction(h1); toolBar->addAction(h2); toolBar->addAction(h3); toolBar->addSeparator(); toolBar->addAction(link); toolBar->addAction(image); toolBar->addSeparator(); toolBar->addAction(bold); toolBar->addAction(italic); toolBar->addAction(code); toolBar->addSeparator(); toolBar->addAction(ul); toolBar->addAction(ol); toolBar->addSeparator(); toolBar->addAction(bq); toolBar->addAction(hr); //updateToolTip(toolBar); } connect(editor,SIGNAL(destroyed()),this,SLOT(deleteLater())); connect(h1,SIGNAL(triggered()),this,SLOT(h1())); connect(h2,SIGNAL(triggered()),this,SLOT(h2())); connect(h3,SIGNAL(triggered()),this,SLOT(h3())); connect(h4,SIGNAL(triggered()),this,SLOT(h4())); connect(h5,SIGNAL(triggered()),this,SLOT(h5())); connect(h6,SIGNAL(triggered()),this,SLOT(h6())); connect(bold,SIGNAL(triggered()),this,SLOT(bold())); connect(italic,SIGNAL(triggered()),this,SLOT(italic())); connect(code,SIGNAL(triggered()),this,SLOT(code())); connect(link,SIGNAL(triggered()),this,SLOT(link())); connect(image,SIGNAL(triggered()),this,SLOT(image())); connect(ul,SIGNAL(triggered()),this,SLOT(ul())); connect(ol,SIGNAL(triggered()),this,SLOT(ol())); connect(bq,SIGNAL(triggered()),this,SLOT(bq())); connect(hr,SIGNAL(triggered()),this,SLOT(hr())); //m_ed->installEventFilter(this); }
void LiteEditor::createActions() { LiteApi::IActionContext *actionContext = m_liteApp->actionManager()->getActionContext(this,"Editor"); m_undoAct = new QAction(QIcon("icon:liteeditor/images/undo.png"),tr("Undo"),this); actionContext->regAction(m_undoAct,"Undo",QKeySequence::Undo); m_redoAct = new QAction(QIcon("icon:liteeditor/images/redo.png"),tr("Redo"),this); actionContext->regAction(m_redoAct,"Redo","Ctrl+Shift+Z; Ctrl+Y"); m_cutAct = new QAction(QIcon("icon:liteeditor/images/cut.png"),tr("Cut"),this); actionContext->regAction(m_cutAct,"Cut",QKeySequence::Cut); m_copyAct = new QAction(QIcon("icon:liteeditor/images/copy.png"),tr("Copy"),this); actionContext->regAction(m_copyAct,"Copy",QKeySequence::Copy); m_pasteAct = new QAction(QIcon("icon:liteeditor/images/paste.png"),tr("Paste"),this); actionContext->regAction(m_pasteAct,"Paste",QKeySequence::Paste); m_selectAllAct = new QAction(tr("Select All"),this); actionContext->regAction(m_selectAllAct,"SelectAll",QKeySequence::SelectAll); m_exportHtmlAct = new QAction(QIcon("icon:liteeditor/images/exporthtml.png"),tr("Export HTML..."),this); #ifndef QT_NO_PRINTER m_exportPdfAct = new QAction(QIcon("icon:liteeditor/images/exportpdf.png"),tr("Export PDF..."),this); m_filePrintAct = new QAction(QIcon("icon:liteeditor/images/fileprint.png"),tr("Print..."),this); m_filePrintPreviewAct = new QAction(QIcon("icon:liteeditor/images/fileprintpreview.png"),tr("Print Preview..."),this); #endif m_gotoPrevBlockAct = new QAction(tr("Go To Previous Block"),this); actionContext->regAction(m_gotoPrevBlockAct,"GotoPreviousBlock","Ctrl+["); m_gotoNextBlockAct = new QAction(tr("Go To Next Block"),this); actionContext->regAction(m_gotoNextBlockAct,"GotoNextBlock","Ctrl+]"); m_selectBlockAct = new QAction(tr("Select Block"),this); actionContext->regAction(m_selectBlockAct,"SelectBlock","Ctrl+U"); m_gotoMatchBraceAct = new QAction(tr("Go To Matching Brace"),this); actionContext->regAction(m_gotoMatchBraceAct,"GotoMatchBrace","Ctrl+E"); m_foldAct = new QAction(tr("Fold"),this); actionContext->regAction(m_foldAct,"Fold","Ctrl+<"); m_unfoldAct = new QAction(tr("Unfold"),this); actionContext->regAction(m_unfoldAct,"Unfold","Ctrl+>"); m_foldAllAct = new QAction(tr("Fold All"),this); actionContext->regAction(m_foldAllAct,"FoldAll",""); m_unfoldAllAct = new QAction(tr("Unfold All"),this); actionContext->regAction(m_unfoldAllAct,"UnfoldAll",""); connect(m_foldAct,SIGNAL(triggered()),m_editorWidget,SLOT(fold())); connect(m_unfoldAct,SIGNAL(triggered()),m_editorWidget,SLOT(unfold())); connect(m_foldAllAct,SIGNAL(triggered()),m_editorWidget,SLOT(foldAll())); connect(m_unfoldAllAct,SIGNAL(triggered()),m_editorWidget,SLOT(unfoldAll())); m_gotoLineAct = new QAction(tr("Go To Line"),this); actionContext->regAction(m_gotoLineAct,"GotoLine","Ctrl+L"); m_lockAct = new QAction(QIcon("icon:liteeditor/images/lock.png"),tr("Locked"),this); m_lockAct->setEnabled(false); m_duplicateAct = new QAction(tr("Duplicate"),this); actionContext->regAction(m_duplicateAct,"Duplicate","Ctrl+D"); connect(m_duplicateAct,SIGNAL(triggered()),m_editorWidget,SLOT(duplicate())); m_deleteLineAct = new QAction(tr("Delete Line"),this); actionContext->regAction(m_deleteLineAct,"DeleteLine","Ctrl+Shift+K"); connect(m_deleteLineAct,SIGNAL(triggered()),m_editorWidget,SLOT(deleteLine())); m_insertLineBeforeAct = new QAction(tr("Insert Line Before"),this); actionContext->regAction(m_insertLineBeforeAct,"InsertLineBefore","Ctrl+Shift+Return"); connect(m_insertLineBeforeAct,SIGNAL(triggered()),m_editorWidget,SLOT(insertLineBefore())); m_insertLineAfterAct = new QAction(tr("Insert Line After"),this); actionContext->regAction(m_insertLineAfterAct,"InsertLineAfter","Ctrl+Return"); connect(m_insertLineAfterAct,SIGNAL(triggered()),m_editorWidget,SLOT(insertLineAfter())); m_increaseFontSizeAct = new QAction(tr("Increase Font Size"),this); actionContext->regAction(m_increaseFontSizeAct,"IncreaseFontSize","Ctrl++;Ctrl+="); m_decreaseFontSizeAct = new QAction(tr("Decrease Font Size"),this); actionContext->regAction(m_decreaseFontSizeAct,"DecreaseFontSize","Ctrl+-"); m_resetFontSizeAct = new QAction(tr("Reset Font Size"),this); actionContext->regAction(m_resetFontSizeAct,"ResetFontSize","Ctrl+0"); m_cleanWhitespaceAct = new QAction(tr("Clean Whitespace"),this); actionContext->regAction(m_cleanWhitespaceAct,"CleanWhitespace",""); m_wordWrapAct = new QAction(tr("Word Wrap"),this); m_wordWrapAct->setCheckable(true); actionContext->regAction(m_wordWrapAct,"WordWrap",""); // m_widget->addAction(m_foldAct); // m_widget->addAction(m_unfoldAct); // m_widget->addAction(m_gotoLineAct); // m_widget->addAction(m_gotoPrevBlockAct); // m_widget->addAction(m_gotoNextBlockAct); // m_widget->addAction(m_selectBlockAct); // m_widget->addAction(m_gotoMatchBraceAct); connect(m_editorWidget,SIGNAL(undoAvailable(bool)),m_undoAct,SLOT(setEnabled(bool))); connect(m_editorWidget,SIGNAL(redoAvailable(bool)),m_redoAct,SLOT(setEnabled(bool))); connect(m_editorWidget,SIGNAL(copyAvailable(bool)),m_cutAct,SLOT(setEnabled(bool))); connect(m_editorWidget,SIGNAL(copyAvailable(bool)),m_copyAct,SLOT(setEnabled(bool))); connect(m_editorWidget,SIGNAL(wordWrapChanged(bool)),m_wordWrapAct,SLOT(setChecked(bool))); connect(m_undoAct,SIGNAL(triggered()),m_editorWidget,SLOT(undo())); connect(m_redoAct,SIGNAL(triggered()),m_editorWidget,SLOT(redo())); connect(m_cutAct,SIGNAL(triggered()),m_editorWidget,SLOT(cut())); connect(m_copyAct,SIGNAL(triggered()),m_editorWidget,SLOT(copy())); connect(m_pasteAct,SIGNAL(triggered()),m_editorWidget,SLOT(paste())); connect(m_selectAllAct,SIGNAL(triggered()),m_editorWidget,SLOT(selectAll())); connect(m_selectBlockAct,SIGNAL(triggered()),m_editorWidget,SLOT(selectBlock())); connect(m_exportHtmlAct,SIGNAL(triggered()),this,SLOT(exportHtml())); #ifndef QT_NO_PRINTER connect(m_exportPdfAct,SIGNAL(triggered()),this,SLOT(exportPdf())); connect(m_filePrintAct,SIGNAL(triggered()),this,SLOT(filePrint())); connect(m_filePrintPreviewAct,SIGNAL(triggered()),this,SLOT(filePrintPreview())); #endif connect(m_gotoPrevBlockAct,SIGNAL(triggered()),m_editorWidget,SLOT(gotoPrevBlock())); connect(m_gotoNextBlockAct,SIGNAL(triggered()),m_editorWidget,SLOT(gotoNextBlock())); connect(m_gotoMatchBraceAct,SIGNAL(triggered()),m_editorWidget,SLOT(gotoMatchBrace())); connect(m_gotoLineAct,SIGNAL(triggered()),this,SLOT(gotoLine())); connect(m_increaseFontSizeAct,SIGNAL(triggered()),this,SLOT(increaseFontSize())); connect(m_decreaseFontSizeAct,SIGNAL(triggered()),this,SLOT(decreaseFontSize())); connect(m_resetFontSizeAct,SIGNAL(triggered()),this,SLOT(resetFontSize())); connect(m_cleanWhitespaceAct,SIGNAL(triggered()),m_editorWidget,SLOT(cleanWhitespace())); connect(m_wordWrapAct,SIGNAL(triggered(bool)),m_editorWidget,SLOT(setWordWrapOverride(bool))); QClipboard *clipboard = QApplication::clipboard(); connect(clipboard,SIGNAL(dataChanged()),this,SLOT(clipbordDataChanged())); clipbordDataChanged(); }