scriptloader.cpp
00001 /* This file is part of the KDE project 00002 Copyright (C) 2001 Ian Reinhart Geiser (geiseri@kde.org) 00003 00004 This library is free software; you can redistribute it and/or 00005 modify it under the terms of the GNU Library General Public 00006 License as published by the Free Software Foundation; either 00007 version 2 of the License, or (at your option) any later version. 00008 00009 This library is distributed in the hope that it will be useful, 00010 but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00012 Library General Public License for more details. 00013 00014 You should have received a copy of the GNU Library General Public License 00015 along with this library; see the file COPYING.LIB. If not, write to 00016 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 00017 Boston, MA 02110-1301, USA. 00018 */ 00019 #include "scriptloader.h" 00020 00021 #include <kapplication.h> 00022 #include <kparts/part.h> 00023 #include <kparts/componentfactory.h> 00024 #include <kglobal.h> 00025 #include <klocale.h> 00026 #include <kconfig.h> 00027 #include <kdesktopfile.h> 00028 #include <kstandarsdirs.h> 00029 #include <kstdaccel.h> 00030 #include <kdebug.h> 00031 00032 #include <qdir.h> 00033 #include <qfileinfo.h> 00034 00035 00036 ScriptLoader::ScriptLoader(KMainWindow *parent) : QObject (parent) 00037 { 00038 m_parent = parent; 00039 m_scripts.clear(); 00040 m_theAction = new KSelectAction ( i18n("KDE Scripts"), 00041 0, 00042 this, 00043 SLOT(runAction()), 00044 m_parent->actionCollection(), 00045 "scripts"); 00046 } 00047 00048 ScriptLoader::~ScriptLoader() 00049 { 00050 // Clean out the list 00051 m_scripts.clear(); 00052 } 00053 00054 KSelectAction * ScriptLoader::getScripts() 00055 { 00056 // Get the available scripts for this application. 00057 QStringList pluginList = ""; 00058 // Find plugins 00059 QString searchPath = kapp->name(); 00060 searchPath += "/scripts/"; 00061 QDir d(locate( "data", searchPath)); 00062 kdDebug() << "loading plugin from " << locate( "data", searchPath) << endl; 00063 const QFileInfoList *fileList = d.entryInfoList("*.desktop"); 00064 QFileInfoListIterator it ( *fileList ); 00065 QFileInfo *fi; 00066 // Find all available script desktop files 00067 while( (fi=it.current())) 00068 { 00069 // Query each desktop file 00070 if(KDesktopFile::isDesktopFile(fi->absFilePath())) 00071 { 00072 KDesktopFile desktop((fi->absFilePath()), true); 00073 kdDebug () << "Trying to load script type: " << desktop.readType() << endl; 00074 KScriptInterface *tmpIface = KParts::ComponentFactory::createInstanceFromQuery<KScriptInterface>(desktop.readType() ); 00075 if( tmpIface != 0 ) 00076 { 00077 m_scripts.append(tmpIface); 00078 m_scripts.current()->setScript(desktop.readURL()); 00079 //if(m_parent != 0) 00080 //m_scripts.current()->setParent(m_parent); 00081 pluginList.append(desktop.readName()); 00082 } 00083 else 00084 kdDebug() << desktop.readName() << " could not be loaded!" << endl; 00085 } 00086 ++it; 00087 } 00088 m_theAction->clear(); 00089 m_theAction->setItems(pluginList); 00090 return m_theAction; 00091 } 00092 00093 void ScriptLoader::runAction() 00094 { 00095 QString scriptName = m_theAction->currentText(); 00096 00097 } 00098 00099 void ScriptLoader::stopAction() 00100 { 00101 00102 } 00103 00104 #include "scriptloader.moc"