diff options
| author | 2009-03-15 15:51:40 +0000 | |
|---|---|---|
| committer | 2009-03-15 15:51:40 +0000 | |
| commit | d2b2b920aac89a8b25baa049aa6e91b69c56076a (patch) | |
| tree | 59e755bd19461e7c13603acbeed405c1ac15344a | |
| parent | updated german translations (diff) | |
| download | KVIrc-d2b2b920aac89a8b25baa049aa6e91b69c56076a.tar.gz KVIrc-d2b2b920aac89a8b25baa049aa6e91b69c56076a.tar.bz2 KVIrc-d2b2b920aac89a8b25baa049aa6e91b69c56076a.zip | |
highlight engine: added an option to switch between free match and strict word match; closes #5
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@3143 17fca916-40b9-46aa-a4ea-0a15b648b75c
| -rw-r--r-- | src/kvirc/kernel/kvi_options.cpp | 3 | ||||
| -rw-r--r-- | src/kvirc/kernel/kvi_options.h | 3 | ||||
| -rw-r--r-- | src/kvirc/ui/kvi_console.cpp | 38 | ||||
| -rw-r--r-- | src/modules/options/optw_highlighting.cpp | 17 |
4 files changed, 39 insertions, 22 deletions
diff --git a/src/kvirc/kernel/kvi_options.cpp b/src/kvirc/kernel/kvi_options.cpp index ac713676a..59416504e 100644 --- a/src/kvirc/kernel/kvi_options.cpp +++ b/src/kvirc/kernel/kvi_options.cpp @@ -313,7 +313,8 @@ KviBoolOption g_boolOptionsTable[KVI_NUM_BOOL_OPTIONS]= BOOL_OPTION("UseStartTlsIfAvailable",true,KviOption_sectFlagConnection), BOOL_OPTION("PasteLastLogOnChannelJoin",false,KviOption_sectFlagLogging), BOOL_OPTION("PasteLastLogOnQueryJoin",false,KviOption_sectFlagLogging), - BOOL_OPTION("UseSpecifiedSmartColorForOwnNick",false,KviOption_sectFlagIrcView | KviOption_groupTheme) + BOOL_OPTION("UseSpecifiedSmartColorForOwnNick",false,KviOption_sectFlagIrcView | KviOption_groupTheme), + BOOL_OPTION("UseFullWordHighlighting",false,KviOption_sectFlagIrcView) }; #define STRING_OPTION(_txt,_val,_flags) KviStringOption(KVI_STRING_OPTIONS_PREFIX _txt,_val,_flags) diff --git a/src/kvirc/kernel/kvi_options.h b/src/kvirc/kernel/kvi_options.h index 7cb100826..66eb093dc 100644 --- a/src/kvirc/kernel/kvi_options.h +++ b/src/kvirc/kernel/kvi_options.h @@ -321,7 +321,8 @@ DECLARE_OPTION_STRUCT(KviStringListOption,QStringList) #define KviOption_boolPasteLastLogOnChannelJoin 227 /* channel */ #define KviOption_boolPasteLastLogOnQueryJoin 228 /* query */ #define KviOption_boolUseSpecifiedSmartColorForOwnNick 229 /* interface::ircview */ -#define KVI_NUM_BOOL_OPTIONS 230 +#define KviOption_boolUseFullWordHighlighting 230 /* highlight */ +#define KVI_NUM_BOOL_OPTIONS 231 #define KVI_STRING_OPTIONS_PREFIX "string" diff --git a/src/kvirc/ui/kvi_console.cpp b/src/kvirc/ui/kvi_console.cpp index c77294c80..4c275adae 100644 --- a/src/kvirc/ui/kvi_console.cpp +++ b/src/kvirc/ui/kvi_console.cpp @@ -613,22 +613,30 @@ int KviConsole::applyHighlighting(KviWindow *wnd,int type,const QString &nick,co { if((*it).isEmpty()) continue; - if(!szPattern.isEmpty()) - rgxHlite.setPattern( - QString("(?:[%1]|\\s|^)%2(?:[%1]|\\s|$)").arg( - QRegExp::escape(szPattern), QRegExp::escape(*it) - ) - ); - else - rgxHlite.setPattern( - QString("(?:\\s|^)%1(?:\\s|$)").arg( - QRegExp::escape(*it) - ) - ); - rgxHlite.setCaseSensitivity(Qt::CaseInsensitive); - if(szStripMsg.contains(rgxHlite)) + if(KVI_OPTION_BOOL(KviOption_boolUseFullWordHighlighting)) { - return triggerOnHighlight(wnd,type,nick,user,host,szMsg,*it); + if(szStripMsg.contains(*it)) + { + return triggerOnHighlight(wnd,type,nick,user,host,szMsg,*it); + } + } else { + if(!szPattern.isEmpty()) + rgxHlite.setPattern( + QString("(?:[%1]|\\s|^)%2(?:[%1]|\\s|$)").arg( + QRegExp::escape(szPattern), QRegExp::escape(*it) + ) + ); + else + rgxHlite.setPattern( + QString("(?:\\s|^)%1(?:\\s|$)").arg( + QRegExp::escape(*it) + ) + ); + rgxHlite.setCaseSensitivity(Qt::CaseInsensitive); + if(szStripMsg.contains(rgxHlite)) + { + return triggerOnHighlight(wnd,type,nick,user,host,szMsg,*it); + } } } } diff --git a/src/modules/options/optw_highlighting.cpp b/src/modules/options/optw_highlighting.cpp index c2cfddef4..fd3fc427b 100644 --- a/src/modules/options/optw_highlighting.cpp +++ b/src/modules/options/optw_highlighting.cpp @@ -56,16 +56,23 @@ KviHighlightingOptionsWidget::KviHighlightingOptionsWidget(QWidget * parent) SIGNAL(toggled(bool)), addStringListSelector(0,1,0,1,__tr2qs_ctx("Words to highlight:","options"),KviOption_stringlistHighlightWords,KVI_OPTION_BOOL(KviOption_boolUseWordHighlighting)), SLOT(setEnabled(bool))); - addStringSelector(0,2,0,2,__tr2qs_ctx("Word splitters:","options"),KviOption_stringWordSplitters); + + connect( + addBoolSelector(0,2,0,2,__tr2qs_ctx("Highlight every occurence of a word inside text","options"),KviOption_boolUseFullWordHighlighting), + SIGNAL(toggled(bool)), + addStringSelector(0,3,0,3,__tr2qs_ctx("Highlight only whole words using these word splitters:","options"),KviOption_stringWordSplitters,!KVI_OPTION_BOOL(KviOption_boolUseFullWordHighlighting)), + SLOT(setDisabled(bool))); + + // This can be used even without Word highlighting - b = addBoolSelector(0,3,0,3,__tr2qs_ctx("Highlight messages containing my nickname","options"),KviOption_boolAlwaysHighlightNick); + b = addBoolSelector(0,4,0,4,__tr2qs_ctx("Highlight messages containing my nickname","options"),KviOption_boolAlwaysHighlightNick); mergeTip(b,__tr2qs_ctx("<center>If this option is enabled, KVIrc will highlight any user message containing your current nickname</center>","options")); - b = addBoolSelector(0,4,0,4,__tr2qs_ctx("Flash the system taskbar entry on highlighted messages","options"),KviOption_boolFlashWindowOnHighlightedMessages); + b = addBoolSelector(0,5,0,5,__tr2qs_ctx("Flash the system taskbar entry on highlighted messages","options"),KviOption_boolFlashWindowOnHighlightedMessages); mergeTip(b,__tr2qs_ctx("<center>If this option is enabled, KVIrc will (attempt to) flash the system taskbar entry when a highlighted message is printed and KVIrc is not the active window</center>","options")); - b = addBoolSelector(0,5,0,5,__tr2qs_ctx("Popup the notifier window on highlighted messages","options"),KviOption_boolPopupNotifierOnHighlightedMessages); + b = addBoolSelector(0,6,0,6,__tr2qs_ctx("Popup the notifier window on highlighted messages","options"),KviOption_boolPopupNotifierOnHighlightedMessages); mergeTip(b,__tr2qs_ctx("<center>If this option is enabled, KVIrc will popup a little notifier window in the low right corner of your desktop when a highlighted message is printed and KVIrc is not the active window</center>","options")); - addRowSpacer(0,6,0,6); + addRowSpacer(0,7,0,7); } KviHighlightingOptionsWidget::~KviHighlightingOptionsWidget() |
