1
//=============================================================================
3
// File : KviKvsCallbackObject.cpp
4
// Creation date : Mon 21 Nov 2005 01:46:51 by Szymon Stefanek
6
// This file is part of the KVIrc IRC Client distribution
7
// Copyright (C) 2005-2010 Szymon Stefanek <pragma at kvirc dot net>
9
// This program is FREE software. You can redistribute it and/or
10
// modify it under the terms of the GNU General Public License
11
// as published by the Free Software Foundation; either version 2
12
// of the License, or (at your opinion) any later version.
14
// This program is distributed in the HOPE that it will be USEFUL,
15
// but WITHOUT ANY WARRANTY; without even the implied warranty of
16
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
17
// See the GNU General Public License for more details.
19
// You should have received a copy of the GNU General Public License
20
// along with this program. If not, write to the Free Software Foundation,
21
// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
23
//=============================================================================
27
#include "KviKvsCallbackObject.h"
28
#include "KviConsoleWindow.h"
29
#include "KviApplication.h"
32
KviKvsCallbackObject::KviKvsCallbackObject(const QString &szCallbackName,KviWindow * pTargetWindow,const QString &szCallbackCode,KviKvsVariantList * pMagicParams,unsigned int uFlags)
36
m_pTargetWindow = pTargetWindow;
38
m_pTargetConsole = pTargetWindow->console();
41
m_pMagicParams = new KviKvsVariantList();
43
for(KviKvsVariant * v = pMagicParams->first();v;v = pMagicParams->next())
44
m_pMagicParams->append(new KviKvsVariant(*v));
46
szName = szCallbackName;
49
m_pScript = new KviKvsScript(szName,szCallbackCode);
52
KviKvsCallbackObject::~KviKvsCallbackObject()
55
delete m_pMagicParams;
58
KviKvsCallbackObject::CallbackStatus KviKvsCallbackObject::execute(KviKvsVariantList * pParams,KviKvsVariant * pRetVal)
60
// first of all check the window
62
m_pTargetWindow = g_pApp->activeConsole();
63
if(!g_pApp->windowExists(m_pTargetWindow))
66
if(m_uFlags & OnlyIfWindowExists)
67
return TargetWindowDead;
69
m_pTargetWindow = m_pTargetConsole;
72
m_pTargetWindow = g_pApp->activeConsole();
74
return Error; // ooops...
76
if(!g_pApp->windowExists(m_pTargetWindow))
78
m_pTargetWindow = g_pApp->activeConsole();
80
return Error; // ooops...
85
// now take care of the params
86
KviKvsVariantList params;
87
params.setAutoDelete(false);
91
for(v = pParams->first();v;v = pParams->next())
94
for(v = m_pMagicParams->first();v;v = m_pMagicParams->next())
97
unsigned int uRet = m_pScript->run(m_pTargetWindow,¶ms,pRetVal,KviKvsScript::PreserveParams);
101
if(uRet & KviKvsScript::HaltEncountered)
102
return HaltEncountered;