aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Fabio Bas2010-10-16 19:55:11 +0000
committerGravatar Fabio Bas2010-10-16 19:55:11 +0000
commitd0d73fbe22f23f964dcfba21c97fc3d9124e76f1 (patch)
treea91aa8e0fe85c3f06ac3354718c1f40ef65e7b76
parentfix for #1001, plz sm1 test! (diff)
downloadKVIrc-d0d73fbe22f23f964dcfba21c97fc3d9124e76f1.tar.gz
KVIrc-d0d73fbe22f23f964dcfba21c97fc3d9124e76f1.tar.bz2
KVIrc-d0d73fbe22f23f964dcfba21c97fc3d9124e76f1.zip
added OnInputBarPaste event (#995)
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@5081 17fca916-40b9-46aa-a4ea-0a15b648b75c
-rw-r--r--src/kvirc/kvs/kvi_kvs_eventtable.cpp29
-rw-r--r--src/kvirc/kvs/kvi_kvs_eventtable.h4
-rw-r--r--src/kvirc/ui/kvi_input.cpp2
-rw-r--r--src/kvirc/ui/kvi_input_editor.cpp37
4 files changed, 52 insertions, 20 deletions
diff --git a/src/kvirc/kvs/kvi_kvs_eventtable.cpp b/src/kvirc/kvs/kvi_kvs_eventtable.cpp
index 319270a55..e3c6c039c 100644
--- a/src/kvirc/kvs/kvi_kvs_eventtable.cpp
+++ b/src/kvirc/kvs/kvi_kvs_eventtable.cpp
@@ -261,7 +261,7 @@ KviKvsEvent KviKvsEventManager::m_appEventTable[KVI_KVS_NUM_APP_EVENTS]=
(if that option was specified).[br]
$5 contains the original color/icon set of the message that depends on
the type of the message itself.[br]
- Since the CTCP ACTION messages generally have different format of output,
+ Since the CTCP ACTION messages generally have different format of output,
for your convenience $6 contains 1 if the message was caused by a
CTCP ACTION or 0 otherwise.[br]
If you call [cmd]halt[/cmd] in this event the message output will be completely disabled
@@ -3754,7 +3754,7 @@ KviKvsEvent KviKvsEventManager::m_appEventTable[KVI_KVS_NUM_APP_EVENTS]=
"$0 = actual name\n" \
"$1 - visible name\n" \
"$2 - command name"),
-
+
/*
@doc: onwindowtitlerequest
@type:
@@ -3775,6 +3775,29 @@ KviKvsEvent KviKvsEventManager::m_appEventTable[KVI_KVS_NUM_APP_EVENTS]=
*/
EVENT("OnWindowTitleRequest", \
"$0 = window id\n" \
- "$1 = default window title")
+ "$1 = default window title"),
+
+ /*
+ @doc: oninputbarpaste
+ @type:
+ event
+ @title:
+ OnInputBarPaste
+ @short:
+ Triggered when the user paste some text on the inputbar
+ @parameters:
+ none
+ @window:
+ Any window
+ @description:
+ This event is triggered when the user paste some text on the input bar.[br]
+ You can check the text, insert any other text and halt the orginal from being inserted in the input bar.[br]
+ Note that the text can contains binary data, end-of-line or other characters that could need a special treatment then parsed.
+ @seealso:
+ [cmd]window.insertInInputText[cmd]
+ */
+ EVENT("OnInputBarPaste", \
+ "$0 = window id\n" \
+ "$1 = pasted text")
};
diff --git a/src/kvirc/kvs/kvi_kvs_eventtable.h b/src/kvirc/kvs/kvi_kvs_eventtable.h
index d0500fd64..75916f571 100644
--- a/src/kvirc/kvs/kvi_kvs_eventtable.h
+++ b/src/kvirc/kvs/kvi_kvs_eventtable.h
@@ -56,6 +56,7 @@
* \def KviEvent_OnIgnoredMessage Triggered when a message is ignored
* \def KviEvent_OnServerNotice A server NOTICE have been issued
* \def KviEvent_OnWindowTitleRequest A window title is needed
+* \def KviEvent_OnInputBarPaste User pasted some text on the inputbar
*/
#define KviEvent_OnKVIrcStartup 0
#define KviEvent_OnKVIrcShutdown 1
@@ -81,6 +82,7 @@
#define KviEvent_OnIgnoredMessage 21
#define KviEvent_OnServerNotice 22
#define KviEvent_OnWindowTitleRequest 145
+#define KviEvent_OnInputBarPaste 146
// Connection
/**
@@ -364,6 +366,6 @@
#define KviEvent_OnQueryNickDefaultActionRequest 144
/** \def KVI_KVS_NUM_APP_EVENTS Defines the number of events */
-#define KVI_KVS_NUM_APP_EVENTS 146
+#define KVI_KVS_NUM_APP_EVENTS 147
#endif //_KVI_KVS_EVENTTABLE_H_
diff --git a/src/kvirc/ui/kvi_input.cpp b/src/kvirc/ui/kvi_input.cpp
index ae97c26b0..44c907b5d 100644
--- a/src/kvirc/ui/kvi_input.cpp
+++ b/src/kvirc/ui/kvi_input.cpp
@@ -170,7 +170,7 @@ KviInput::KviInput(KviWindow * pPar, KviUserListView * pView)
m_pLayout->addWidget(m_pHideToolsButton,0,2,2,1);
m_pLayout->addWidget(m_pButtonContainer,0,1,2,1);
m_pLayout->addWidget(m_pInputEditor,0,0,2,1);
-
+
installShortcuts();
}
diff --git a/src/kvirc/ui/kvi_input_editor.cpp b/src/kvirc/ui/kvi_input_editor.cpp
index c503c819d..4510421bb 100644
--- a/src/kvirc/ui/kvi_input_editor.cpp
+++ b/src/kvirc/ui/kvi_input_editor.cpp
@@ -47,6 +47,7 @@
#include "kvi_userinput.h"
#include "kvi_userlistview.h"
#include "kvi_shortcuts.h"
+#include "kvi_kvs_eventtriggers.h"
#include <QClipboard>
#include <QLabel>
@@ -125,7 +126,7 @@ KviInputEditor::KviInputEditor(QWidget * pPar, KviWindow * pWnd, KviUserListView
setContentsMargins(KVI_INPUT_MARGIN,KVI_INPUT_MARGIN,KVI_INPUT_MARGIN,KVI_INPUT_MARGIN);
//set the font and font metrics
applyOptions();
-
+
installShortcuts();
}
@@ -235,7 +236,7 @@ QSize KviInputEditor::sizeHint() const
void KviInputEditor::paintEvent(QPaintEvent *)
{
QPainter p(this);
-
+
#ifdef COMPILE_PSEUDO_TRANSPARENCY
if(KVI_OPTION_BOOL(KviOption_boolUseCompositingForTransparency) && g_pApp->supportsCompositing())
{
@@ -252,7 +253,7 @@ void KviInputEditor::paintEvent(QPaintEvent *)
} else {
#endif
p.fillRect(contentsRect(),KVI_OPTION_COLOR(KviOption_colorInputBackground));
-
+
QPixmap * pix = KVI_OPTION_PIXMAP(KviOption_pixmapLabelBackground).pixmap();
if(pix)
KviPixmapUtils::drawPixmapWithPainter(&p,pix,KVI_OPTION_UINT(KviOption_uintTreeWindowListPixmapAlign),contentsRect(),contentsRect().width(),contentsRect().height());
@@ -266,11 +267,11 @@ void KviInputEditor::paintEvent(QPaintEvent *)
option.rect = rect();
option.lineWidth = style()->pixelMetric(QStyle::PM_DefaultFrameWidth, &option, this);
option.midLineWidth = 0;
-
+
option.state |= QStyle::State_Sunken;
if(isReadOnly())
option.state |= QStyle::State_ReadOnly;
-
+
//option.state &= ~(QStyle::State_HasFocus | QStyle::State_Active | QStyle::State_MouseOver); // kill any state that will cause an "active" frame to be painted
option.features = QStyleOptionFrameV2::None;
@@ -282,7 +283,7 @@ void KviInputEditor::paintEvent(QPaintEvent *)
r.setY(r.y() + KVI_INPUT_MARGIN + KVI_INPUT_PADDING);
r.setRight(r.right() - KVI_INPUT_MARGIN - KVI_INPUT_PADDING);
r.setBottom(r.bottom() - KVI_INPUT_MARGIN - KVI_INPUT_PADDING);
-
+
p.setClipRect(r);
p.translate(r.topLeft());
@@ -991,6 +992,9 @@ void KviInputEditor::pasteClipboardWithConfirmation()
if(!pClip) return;
QString szText = pClip->text(QClipboard::Clipboard);
+ if(KVS_TRIGGER_EVENT_2_HALTED(KviEvent_OnInputBarPaste,m_pKviWindow,m_pKviWindow->id(),szText))
+ return;
+
if(szText.contains(QChar('\n')) > 0)
{
if(m_pInputParent->inherits("KviInput"))
@@ -1006,6 +1010,9 @@ void KviInputEditor::pasteSelectionWithConfirmation()
if(!pClip) return;
QString szText = pClip->text(pClip->supportsSelection() ? QClipboard::Selection : QClipboard::Clipboard);
+ if(KVS_TRIGGER_EVENT_2_HALTED(KviEvent_OnInputBarPaste,m_pKviWindow,m_pKviWindow->id(),szText))
+ return;
+
if(szText.contains(QChar('\n')) > 0)
{
if(m_pInputParent->inherits("KviInput"))
@@ -1271,7 +1278,7 @@ void KviInputEditor::inputMethodEvent(QInputMethodEvent * e)
// repaint
m_bUpdatesEnabled = true;
-
+
repaintWithCursorOn();
}
@@ -1330,7 +1337,7 @@ void KviInputEditor::installShortcuts()
void KviInputEditor::keyPressEvent(QKeyEvent * e)
{
-
+
// disable the keyPress handling when IM is in composition.
if(m_bIMComposing)
{
@@ -1683,10 +1690,10 @@ void KviInputEditor::standardNickCompletion(bool bAddMask,QString & szWord,bool
m_bLastCompletionFinished=0;
// REPAINT CALLED FROM OUTSIDE!
} // else no match at all
-
+
return;
}
-
+
if(!m_bLastCompletionFinished)
{
// Old session
@@ -1711,10 +1718,10 @@ void KviInputEditor::standardNickCompletion(bool bAddMask,QString & szWord,bool
m_bLastCompletionFinished=1;
m_szLastCompletedNick = "";
}
-
+
return;
}
-
+
// Old session finished
// re-extract
//word = m_szTextBuffer.left(m_iCursorPosition);
@@ -1855,7 +1862,7 @@ int KviInputEditor::xPositionFromCharIndex(int iChIdx)
if(m_szTextBuffer.isEmpty())
return iCurXPos;
-
+
while(iCurChar < iChIdx)
{
QChar c = m_szTextBuffer.at(iCurChar);
@@ -2311,7 +2318,7 @@ void KviInputEditor::homeInternalSelection()
// There is selection
m_iSelectionEnd = m_iSelectionBegin - 1;
}
-
+
m_iSelectionBegin = 0;
home();
}
@@ -2427,7 +2434,7 @@ void KviInputEditor::deleteHit()
removeSelected();
return;
}
-
+
if(m_iCursorPosition < (int)m_szTextBuffer.length())
{
m_szTextBuffer.remove(m_iCursorPosition,1);