/* This file is part of the KDE project Copyright (C) 2004 Cedric Pasteur This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include "formscript.h" #include "scriptmanager.h" #include "form.h" #include "objecttree.h" // Kross Includes #include "main/manager.h" #include "main/scriptcontainer.h" #include "api/exception.h" #include using namespace KFormDesigner; FormScript::FormScript(Form *form, ScriptManager *manager, const char *name) : TQObject(manager, name), m_manager(manager), m_form(form) { m_script = manager->krossManager()->getScriptContainer(form->widget()->name()); } FormScript::~FormScript() { } TQString FormScript::getCode(const TQString &) { /// \todo Allow to select only one function return m_script->getCode(); } void FormScript::setCode(const TQString &code) { m_script->setCode(code); } void FormScript::appendCode(const TQString &code) { TQString s = m_script->getCode(); s.append("\n"); s.append(code); m_script->setCode(s); } bool FormScript::execute(const TQString &functionName) { /// \todo support return value and arguments try { m_script->callFunction(functionName); } catch(Kross::Api::Exception& e) { kdDebug() << TQString("EXCEPTION type='%1' description='%2'").arg(e.type()).arg(e.description()) << endl; return false; } return true; } void FormScript::connectEvents() { if(!m_form || !m_form->objectTree()) return; // first call addTQObject for each widget in the Form ObjectTreeDict *dict = m_form->objectTree()->dict(); ObjectTreeDictIterator it(*dict); for(; it.current(); ++it) m_script->addTQObject(it.current()->widget()); m_script->addTQObject(m_form->widget()); // Then we connect all signals TQValueListConstIterator endIt = m_list.constEnd(); for(TQValueListConstIterator it = m_list.constBegin(); it != endIt; ++it) { if( (*it)->type() == Event::Slot) { connect((*it)->sender(), (*it)->signal(), (*it)->receiver(), (*it)->slot()); } else if( (*it)->type() == Event::UserFunction) { m_script->connect((*it)->sender(), (*it)->signal(), (*it)->slot()); } else if( (*it)->type() == Event::Action) { /// \todo connect signals with actions } } } #include "formscript.moc"