From kde-commits Fri Aug 31 21:19:54 2007 From: Sebastian Pipping Date: Fri, 31 Aug 2007 21:19:54 +0000 To: kde-commits Subject: KDE/kdelibs/kate Message-Id: <1188595194.868740.31358.nullmailer () svn ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-commits&m=118859520427064 SVN commit 707050 by sping: Search config is now copied to global config as proposed on the mailing list CCMAIL: kwrite-devel@kde.org M +126 -31 utils/katesearchbar.cpp M +10 -2 utils/katesearchbar.h M +12 -10 view/kateview.cpp M +1 -1 view/kateview.h --- trunk/KDE/kdelibs/kate/utils/katesearchbar.cpp #707049:707050 @@ -2,9 +2,7 @@ ## ## TODO: ## * Fix regex search in KateDocument? -## (Skips when backwords, ".*" endless loop!?) -## * Fix highlighting of matches/replacements? -## (Zero width smart range) +## (Fix case with pattern "\n+") ## * Proper loading/saving of search settings ## * Highlight all (with background thread?) ## @@ -32,8 +30,11 @@ #include "katesearchbar.h" #include "kateview.h" #include "katedocument.h" +#include "kateglobal.h" + #include "ui_searchbarincremental.h" #include "ui_searchbarpower.h" + #include #include #include @@ -45,7 +46,7 @@ -KateSearchBar::KateSearchBar(KateViewBar * viewBar) +KateSearchBar::KateSearchBar(KateViewBar * viewBar, bool initAsPower) : KateViewBarWidget(viewBar), m_view(viewBar->view()), m_topRange(NULL), @@ -67,13 +68,9 @@ m_powerSelectionOnly(false), m_powerUsePlaceholders(false), m_powerMode(0) { + // Modify parent QWidget * const widget = centralWidget(); widget->setLayout(m_layout); - - // Start in incremental mode - onMutateIncremental(); - // onMutatePower(); - m_layout->setMargin(2); // Init highlight @@ -81,8 +78,10 @@ m_topRange->setInsertBehavior(SmartRange::ExpandRight); enableHighlights(true); - // Read settings - const long searchFlags = m_view->config()->searchFlags(); + + // Copy global to local config backup + KateViewConfig * const globalConfig = KateGlobal::self()->viewConfig(); + const long searchFlags = globalConfig->searchFlags(); m_incHighlightAll = (searchFlags & KateViewConfig::IncHighlightAll) != 0; m_incFromCursor = (searchFlags & KateViewConfig::IncFromCursor) != 0; m_incMatchCase = (searchFlags & KateViewConfig::IncMatchCase) != 0; @@ -98,6 +97,15 @@ : (((searchFlags & KateViewConfig::PowerModeWholeWords) != 0) ? 1 : 0)); // Plain text + kDebug() << "GLOBAL SEARCH CONFIG COPIED TO LOCAL" << "past" << searchFlags; + + + // Load one of either dialogs + if (initAsPower) { + onMutatePower(); + } else { + onMutateIncremental(); + } } @@ -359,6 +367,30 @@ +void KateSearchBar::onIncMatchCaseToggle(bool invokedByUserAction) { + if (invokedByUserAction) { + sendConfig(); + } +} + + + +void KateSearchBar::onIncHighlightAllToggle(bool invokedByUserAction) { + if (invokedByUserAction) { + sendConfig(); + } +} + + + +void KateSearchBar::onIncFromCursorToggle(bool invokedByUserAction) { + if (invokedByUserAction) { + sendConfig(); + } +} + + + void KateSearchBar::fixForSingleLine(Range & range, bool forwards) { kDebug() << "Single-line workaround checking" << range; if (forwards) { @@ -607,18 +639,21 @@ void KateSearchBar::sendConfig() { + KateViewConfig * const globalConfig = KateGlobal::self()->viewConfig(); + const long pastFlags = globalConfig->searchFlags(); + long futureFlags = pastFlags; + if (m_powerUi != NULL) { const bool OF_POWER = true; backupConfig(OF_POWER); - } else if (m_incUi != NULL) { - const bool OF_INCREMENTAL = false; - backupConfig(OF_INCREMENTAL); - } - const long searchFlags = 0 - | (m_incHighlightAll ? KateViewConfig::IncHighlightAll : 0) - | (m_incFromCursor ? KateViewConfig::IncFromCursor : 0) - | (m_incMatchCase ? KateViewConfig::IncMatchCase : 0) + // Update power search flags only + const long incFlagsOnly = pastFlags + & (KateViewConfig::IncHighlightAll + | KateViewConfig::IncFromCursor + | KateViewConfig::IncMatchCase); + + futureFlags = incFlagsOnly | (m_powerMatchCase ? KateViewConfig::PowerMatchCase : 0) | (m_powerFromCursor ? KateViewConfig::PowerFromCursor : 0) | (m_powerHighlightAll ? KateViewConfig::PowerHighlightAll : 0) @@ -632,8 +667,31 @@ ? KateViewConfig::PowerModeWholeWords : KateViewConfig::PowerModePlainText))); - KateViewConfig * const viewConfig = m_view->config(); - viewConfig->setSearchFlags(searchFlags); + } else if (m_incUi != NULL) { + const bool OF_INCREMENTAL = false; + backupConfig(OF_INCREMENTAL); + + // Update incremental search flags only + const long powerFlagsOnly = pastFlags + & (KateViewConfig::PowerMatchCase + | KateViewConfig::PowerFromCursor + | KateViewConfig::PowerHighlightAll + | KateViewConfig::PowerSelectionOnly + | KateViewConfig::PowerUsePlaceholders + | KateViewConfig::PowerModeRegularExpression + | KateViewConfig::PowerModeEscapeSequences + | KateViewConfig::PowerModeWholeWords + | KateViewConfig::PowerModePlainText); + + futureFlags = powerFlagsOnly + | (m_incHighlightAll ? KateViewConfig::IncHighlightAll : 0) + | (m_incFromCursor ? KateViewConfig::IncFromCursor : 0) + | (m_incMatchCase ? KateViewConfig::IncMatchCase : 0); + } + + // Adjust global config + globalConfig->setSearchFlags(futureFlags); + kDebug() << "LOCAL SEARCH CONFIG COPIED TO GLOBAL" << "past" << pastFlags << "future" << futureFlags; } @@ -918,13 +976,49 @@ -void KateSearchBar::onPowerUsePlaceholdersToggle(int state) { +void KateSearchBar::onPowerUsePlaceholdersToggle(int state, bool invokedByUserAction) { const bool disabled = (state != Qt::Checked); m_powerUi->replacementAdd->setDisabled(disabled); + + if (invokedByUserAction) { + sendConfig(); + } } +void KateSearchBar::onPowerMatchCaseToggle(bool invokedByUserAction) { + if (invokedByUserAction) { + sendConfig(); + } +} + + + +void KateSearchBar::onPowerHighlightAllToggle(bool invokedByUserAction) { + if (invokedByUserAction) { + sendConfig(); + } +} + + + +void KateSearchBar::onPowerFromCursorToggle(bool invokedByUserAction) { + if (invokedByUserAction) { + sendConfig(); + } +} + + + +void KateSearchBar::onPowerSelectionOnlyToggle(bool invokedByUserAction) { + if (invokedByUserAction) { + sendConfig(); + } +} + + + void KateSearchBar::onPowerModeChanged(int index, bool invokedByUserAction) { const bool disabled = (index < 2); // TODO m_powerUi->patternAdd->setDisabled(disabled); @@ -942,6 +1036,8 @@ default: ; // NOOP } + + sendConfig(); } } @@ -1057,8 +1153,8 @@ // Propagate settings (slots are still inactive on purpose) onPowerPatternChanged(initialPattern); - onPowerUsePlaceholdersToggle(m_powerUi->usePlaceholders->checkState()); const bool NOT_INVOKED_BY_USER_ACTION = false; + onPowerUsePlaceholdersToggle(m_powerUi->usePlaceholders->checkState(), NOT_INVOKED_BY_USER_ACTION); onPowerModeChanged(m_powerUi->searchMode->currentIndex(), NOT_INVOKED_BY_USER_ACTION); if (create) { @@ -1072,14 +1168,15 @@ connect(m_powerUi->searchMode, SIGNAL(currentIndexChanged(int)), this, SLOT(onPowerModeChanged(int))); connect(m_powerUi->patternAdd, SIGNAL(clicked()), this, SLOT(onPowerAddToPatternClicked())); connect(m_powerUi->usePlaceholders, SIGNAL(stateChanged(int)), this, SLOT(onPowerUsePlaceholdersToggle(int))); + connect(m_powerUi->matchCase, SIGNAL(stateChanged(int)), this, SLOT(onPowerMatchCaseToggle())); + connect(m_powerUi->highlightAll, SIGNAL(stateChanged(int)), this, SLOT(onPowerHighlightAllToggle())); + connect(m_powerUi->fromCursor, SIGNAL(stateChanged(int)), this, SLOT(onPowerFromCursorToggle())); + connect(m_powerUi->selectionOnly, SIGNAL(stateChanged(int)), this, SLOT(onPowerSelectionOnlyToggle())); connect(m_powerUi->replacementAdd, SIGNAL(clicked()), this, SLOT(onPowerAddToReplacementClicked())); } // Focus m_powerUi->pattern->setFocus(Qt::MouseFocusReason); - - // Send config - // sendConfig(); } @@ -1164,6 +1261,9 @@ connect(m_incUi->pattern, SIGNAL(textChanged(const QString &)), this, SLOT(onIncPatternChanged(const QString &))); connect(m_incUi->next, SIGNAL(clicked()), this, SLOT(onIncNext())); connect(m_incUi->prev, SIGNAL(clicked()), this, SLOT(onIncPrev())); + connect(m_incMenuMatchCase, SIGNAL(changed()), this, SLOT(onIncMatchCaseToggle())); + connect(m_incMenuFromCursor, SIGNAL(changed()), this, SLOT(onIncFromCursorToggle())); + connect(m_incMenuHighlightAll, SIGNAL(changed()), this, SLOT(onIncHighlightAllToggle())); // Make button click open the menu as well. IMHO with the dropdown arrow present the button // better shows his nature than in instant popup mode. @@ -1172,9 +1272,6 @@ // Focus m_incUi->pattern->setFocus(Qt::MouseFocusReason); - - // Send config - // sendConfig(); } @@ -1240,8 +1337,6 @@ void KateSearchBar::hideEvent(QHideEvent * event) { enableHighlights(false); KateViewBarWidget::hideEvent(event); - - // sendConfig(); } --- trunk/KDE/kdelibs/kate/utils/katesearchbar.h #707049:707050 @@ -55,7 +55,7 @@ Q_OBJECT public: - explicit KateSearchBar(KateViewBar * viewBar); + explicit KateSearchBar(KateViewBar * viewBar, bool initAsPower); ~KateSearchBar(); public Q_SLOTS: @@ -66,6 +66,10 @@ void onIncPatternChanged(const QString & pattern); void onIncNext(); void onIncPrev(); + void onIncMatchCaseToggle(bool invokedByUserAction = true); + void onIncHighlightAllToggle(bool invokedByUserAction = true); + void onIncFromCursorToggle(bool invokedByUserAction = true); + void onStep(bool replace, bool forwards = true); void onPowerPatternChanged(const QString & pattern); void onPowerFindNext(); @@ -74,7 +78,11 @@ void onPowerReplaceAll(); void onPowerAddToPatternClicked(); void onPowerAddToReplacementClicked(); - void onPowerUsePlaceholdersToggle(int state); + void onPowerUsePlaceholdersToggle(int state, bool invokedByUserAction = true); + void onPowerMatchCaseToggle(bool invokedByUserAction = true); + void onPowerHighlightAllToggle(bool invokedByUserAction = true); + void onPowerFromCursorToggle(bool invokedByUserAction = true); + void onPowerSelectionOnlyToggle(bool invokedByUserAction = true); void onPowerModeChanged(int index, bool invokedByUserAction = true); public Q_SLOTS: --- trunk/KDE/kdelibs/kate/view/kateview.cpp #707049:707050 @@ -1104,18 +1104,20 @@ void KateView::find() { - searchBar()->onMutateIncremental(); - - searchBar()->showBar(); - searchBar()->setFocus(); + const bool INIT_HINT_AS_POWER = true; + KateSearchBar * const bar = searchBar(INIT_HINT_AS_POWER); + bar->onMutateIncremental(); + bar->showBar(); + bar->setFocus(); } void KateView::replace() { - searchBar()->onMutatePower(); - - searchBar()->showBar(); - searchBar()->setFocus(); + const bool INIT_HINT_AS_INCREMENTAL = false; + KateSearchBar * const bar = searchBar(INIT_HINT_AS_INCREMENTAL); + bar->onMutatePower(); + bar->showBar(); + bar->setFocus(); } void KateView::findNext() @@ -2450,12 +2452,12 @@ return m_cmdLine = new KateCmdLine (this, m_viewBar); } -KateSearchBar *KateView::searchBar () +KateSearchBar *KateView::searchBar (bool initHintAsPower) { if (m_searchBar) return m_searchBar; - return m_searchBar = new KateSearchBar(m_viewBar); + return m_searchBar = new KateSearchBar(m_viewBar, initHintAsPower); } KateGotoBar *KateView::gotoBar () --- trunk/KDE/kdelibs/kate/view/kateview.h #707049:707050 @@ -607,7 +607,7 @@ */ public: KateCmdLine *cmdLine (); - KateSearchBar *searchBar (); + KateSearchBar *searchBar (bool initHintAsPower = false); KateGotoBar *gotoBar (); /**