aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Fabio Bas2009-03-15 15:51:40 +0000
committerGravatar Fabio Bas2009-03-15 15:51:40 +0000
commitd2b2b920aac89a8b25baa049aa6e91b69c56076a (patch)
tree59e755bd19461e7c13603acbeed405c1ac15344a
parentupdated german translations (diff)
downloadKVIrc-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.cpp3
-rw-r--r--src/kvirc/kernel/kvi_options.h3
-rw-r--r--src/kvirc/ui/kvi_console.cpp38
-rw-r--r--src/modules/options/optw_highlighting.cpp17
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()