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()->loadMenu(ID_MENU_FIND); 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); #ifdef Q_OS_MAC actionContext->regAction(m_replaceAct,"Replace","ALT+CTRL+F"); #else actionContext->regAction(m_replaceAct,"Replace",QKeySequence::Replace); #endif 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; }
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_fileSearchAct,SIGNAL(triggered()),this,SLOT(fileSearch())); connect(m_liteApp,SIGNAL(key_escape()),this,SLOT(hideFind())); connect(m_liteApp,SIGNAL(key_escape()),this,SLOT(hideFileSearch())); return true; }
FindEditor::FindEditor(LiteApi::IApplication *app, QObject *parent) : QObject(parent), m_liteApp(app), m_widget(new QWidget) { m_findEdit = new QLineEdit; m_replaceEdit = new QLineEdit; m_findNext = new QPushButton(tr("Find Next")); m_findPrev = new QPushButton(tr("Find Previous")); m_replaceLabel = new QLabel(tr("Replace With:")); m_replace = new QPushButton(tr("Replace")); m_replaceAll = new QPushButton(tr("Replace All")); m_matchWordCheckBox = new QCheckBox(tr("Match whole word only")); m_matchCaseCheckBox = new QCheckBox(tr("Match case")); m_useRegexCheckBox = new QCheckBox(tr("Regular expression")); m_wrapAroundCheckBox = new QCheckBox(tr("Wrap around")); m_matchWordCheckBox->setChecked(m_liteApp->settings()->value(FIND_MATCHWORD,true).toBool()); m_matchCaseCheckBox->setChecked(m_liteApp->settings()->value(FIND_MATCHCASE,true).toBool()); m_useRegexCheckBox->setChecked(m_liteApp->settings()->value(FIND_USEREGEXP,false).toBool()); m_wrapAroundCheckBox->setChecked(m_liteApp->settings()->value(FIND_WRAPAROUND,true).toBool()); m_status = new QLabel(tr("Ready")); m_status->setFrameStyle(QFrame::Panel | QFrame::Sunken); m_status->setAlignment(Qt::AlignRight); m_status->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Preferred); QPushButton *close = new QPushButton(); close->setIcon(QIcon("icon:images/closetool.png")); close->setIconSize(QSize(16,16)); close->setFlat(true); close->setToolTip(tr("Close")); m_showReplaceCheckBox = new QCheckBox; m_showReplaceCheckBox->setText(tr("Show Replace")); connect(m_showReplaceCheckBox,SIGNAL(toggled(bool)),this,SLOT(setReplaceMode(bool))); connect(close,SIGNAL(clicked()),this,SLOT(hideFind())); QGridLayout *layout = new QGridLayout; layout->setMargin(0); layout->setVerticalSpacing(1); QHBoxLayout *optLayout = new QHBoxLayout; optLayout->setMargin(0); optLayout->addWidget(m_matchWordCheckBox); optLayout->addWidget(m_matchCaseCheckBox); optLayout->addWidget(m_useRegexCheckBox); optLayout->addWidget(m_wrapAroundCheckBox); optLayout->addStretch(); optLayout->addWidget(m_status); layout->addWidget(new QLabel(tr("Find What:")),0,0); layout->addWidget(m_findEdit,0,1); layout->addWidget(m_findNext,0,2); layout->addWidget(m_findPrev,0,3); layout->addWidget(m_showReplaceCheckBox,0,4); layout->addWidget(close,0,5); layout->addWidget(m_replaceLabel,1,0); layout->addWidget(m_replaceEdit,1,1); layout->addWidget(m_replace,1,2); layout->addWidget(m_replaceAll,1,3); layout->addWidget(new QLabel(tr("Options:")),3,0); layout->addLayout(optLayout,3,1,1,4); m_widget->setLayout(layout); QWidget::setTabOrder(m_findEdit,m_replaceEdit); connect(m_findEdit,SIGNAL(returnPressed()),this,SLOT(findNext())); connect(m_findNext,SIGNAL(clicked()),this,SLOT(findNext())); connect(m_findPrev,SIGNAL(clicked()),this,SLOT(findPrev())); connect(m_replaceEdit,SIGNAL(returnPressed()),this,SLOT(replace())); connect(m_replace,SIGNAL(clicked()),this,SLOT(replace())); connect(m_replaceAll,SIGNAL(clicked()),this,SLOT(replaceAll())); connect(m_matchCaseCheckBox,SIGNAL(toggled(bool)),this,SLOT(findOptionChanged())); connect(m_matchWordCheckBox,SIGNAL(toggled(bool)),this,SLOT(findOptionChanged())); connect(m_useRegexCheckBox,SIGNAL(toggled(bool)),this,SLOT(findOptionChanged())); connect(m_wrapAroundCheckBox,SIGNAL(toggled(bool)),this,SLOT(findOptionChanged())); connect(m_findEdit,SIGNAL(textChanged(QString)),this,SLOT(findOptionChanged())); connect(m_replaceEdit,SIGNAL(textChanged(QString)),this,SLOT(replaceChanged())); connect(m_liteApp->editorManager(),SIGNAL(currentEditorChanged(LiteApi::IEditor*)),this,SLOT(updateCurrentEditor(LiteApi::IEditor*))); }
connect( editor, SIGNAL( undoAvailable( bool ) ), this, SIGNAL( updateActions() ) ); connect( editor, SIGNAL( redoAvailable( bool ) ), this, SIGNAL( updateActions() ) ); connect( editor, SIGNAL( overWriteModeChanged() ), this, SLOT( overWriteModeChanged() ) ); connect( editor, SIGNAL( textChanged() ), this, SIGNAL( textChanged() ) ); connect( findAndReplaceWidget, SIGNAL( findText( QString, QTextDocument::FindFlags, bool, bool ) ), editor, SLOT( findAndHighlightText( QString, QTextDocument::FindFlags, bool, bool ) ) ); connect( findAndReplaceWidget, SIGNAL( findHide() ), editor, SLOT( findFinished() ) ); connect( findAndReplaceWidget, SIGNAL( findHide() ), this, SLOT( setFocusEditor() ) ); connect( findAndReplaceWidget, SIGNAL( findHide() ), this, SLOT( hideFind() ) ); connect( findAndReplaceWidget, SIGNAL( findNext( QString, QTextDocument::FindFlags, bool ) ), editor, SLOT( findFirstOccurrance( QString, QTextDocument::FindFlags, bool ) ) ); connect( findAndReplaceWidget, SIGNAL( findPrevious( QString, QTextDocument::FindFlags, bool ) ), editor, SLOT( findFirstOccurrance( QString, QTextDocument::FindFlags, bool ) ) ); connect( findAndReplaceWidget, SIGNAL( replace( QString ) ), editor, SLOT( replace( QString ) ) ); connect( findAndReplaceWidget, SIGNAL( replaceAll( QString, QString, QTextDocument::FindFlags, bool ) ), editor, SLOT( replaceAll( QString, QString, QTextDocument::FindFlags, bool ) ) ); connect( editor, SIGNAL( focusInSignal() ), this, SIGNAL( focusInSignal() ) ); } void MarkdownEditAreaWidget::parseMarkdown() { // if (lastRevision == editor->document()->revision()) // return;