|
|
|
/*
|
|
|
|
* Copyright (C) 2003, Richard J. Moore <rich@kde.org>
|
|
|
|
*
|
|
|
|
* 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 <kstandarddirs.h>
|
|
|
|
#include <kiconloader.h>
|
|
|
|
#include <tdeglobal.h>
|
|
|
|
#include <kdebug.h>
|
|
|
|
#include <jsproxy.h>
|
|
|
|
#include <jsbinding.h>
|
|
|
|
#include <jsfactory.h>
|
|
|
|
#include <tqdir.h>
|
|
|
|
#include <tqapplication.h>
|
|
|
|
#include "resources.h"
|
|
|
|
|
|
|
|
namespace KJSEmbed {
|
|
|
|
namespace BuiltIns {
|
|
|
|
|
|
|
|
|
|
|
|
StdDirsImp::StdDirsImp( KJS::ExecState *exec, uint mid )
|
|
|
|
: JSProxyImp(exec), id(mid)
|
|
|
|
{
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
StdDirsImp::~StdDirsImp() {}
|
|
|
|
|
|
|
|
void StdDirsImp::addBindings( KJS::ExecState *exec, KJS::Object &parent )
|
|
|
|
{
|
|
|
|
|
|
|
|
JSProxy::MethodTable methods[] = {
|
|
|
|
{ StdDirsImp::findResource, "findResource" },
|
|
|
|
{ StdDirsImp::addResourceType, "addResourceType" },
|
|
|
|
{ StdDirsImp::kde_default, "kde_default" },
|
|
|
|
{ StdDirsImp::addResourceDir, "addResourceDir" },
|
|
|
|
{ StdDirsImp::findResourceDir, "findResourceDir" },
|
|
|
|
{ StdDirsImp::saveLocation, "saveLocation" },
|
|
|
|
{ StdDirsImp::makeDir, "makeDir" },
|
|
|
|
{ StdDirsImp::exists, "exists" },
|
|
|
|
{ StdDirsImp::realPath, "realPath" },
|
|
|
|
{ StdDirsImp::currentDirPath, "currentDirPath" },
|
|
|
|
{ StdDirsImp::homeDirPath, "homeDirPath" },
|
|
|
|
{ StdDirsImp::applicationDirPath, "applicationDirPath" },
|
|
|
|
{ 0, 0 }
|
|
|
|
};
|
|
|
|
|
|
|
|
int idx = 0;
|
|
|
|
do {
|
|
|
|
StdDirsImp *sdi = new StdDirsImp( exec, idx );
|
|
|
|
parent.put( exec , methods[idx].name, KJS::Object(sdi) );
|
|
|
|
++idx;
|
|
|
|
} while( methods[idx].id );
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
KJS::Value StdDirsImp::call( KJS::ExecState *exec, KJS::Object &/*self*/, const KJS::List &args )
|
|
|
|
{
|
|
|
|
// TQString arg0 = extractTQString(exec, args, 0);
|
|
|
|
// TQString arg1 = extractTQString(exec, args, 1);
|
|
|
|
|
|
|
|
switch( id ) {
|
|
|
|
case StdDirsImp::findResource:
|
|
|
|
{
|
|
|
|
TQString arg0 = extractTQString(exec, args, 0);
|
|
|
|
TQString arg1 = extractTQString(exec, args, 1);
|
|
|
|
TQString path = TDEGlobal::dirs ()->findResource(arg0.latin1(), arg1);
|
|
|
|
return KJS::String( path );
|
|
|
|
}
|
|
|
|
case StdDirsImp::addResourceType:
|
|
|
|
{
|
|
|
|
TQString arg0 = extractTQString(exec, args, 0);
|
|
|
|
TQString arg1 = extractTQString(exec, args, 1);
|
|
|
|
bool isOk = TDEGlobal::dirs ()->addResourceType(arg0.latin1(), arg1);
|
|
|
|
return KJS::Boolean( isOk );
|
|
|
|
}
|
|
|
|
case StdDirsImp::kde_default:
|
|
|
|
{
|
|
|
|
TQString arg0 = extractTQString(exec, args, 0);
|
|
|
|
TQString path = TDEGlobal::dirs ()->kde_default(arg0.latin1());
|
|
|
|
return KJS::String( path );
|
|
|
|
}
|
|
|
|
case StdDirsImp::addResourceDir:
|
|
|
|
{
|
|
|
|
TQString arg0 = extractTQString(exec, args, 0);
|
|
|
|
TQString arg1 = extractTQString(exec, args, 1);
|
|
|
|
bool isOk = TDEGlobal::dirs ()->addResourceDir(arg0.latin1(), arg1);
|
|
|
|
return KJS::Boolean( isOk );
|
|
|
|
}
|
|
|
|
case StdDirsImp::findResourceDir:
|
|
|
|
{
|
|
|
|
TQString arg0 = extractTQString(exec, args, 0);
|
|
|
|
TQString arg1 = extractTQString(exec, args, 1);
|
|
|
|
TQString path = TDEGlobal::dirs ()->findResourceDir(arg0.latin1(), arg1);
|
|
|
|
return KJS::String( path );
|
|
|
|
}
|
|
|
|
case StdDirsImp::saveLocation:
|
|
|
|
{
|
|
|
|
TQString arg0 = extractTQString(exec, args, 0);
|
|
|
|
TQString arg1 = extractTQString(exec, args, 1);
|
|
|
|
bool arg2 = (args.size() > 2) ? args[2].toBoolean(exec) : true;
|
|
|
|
TQString path = TDEGlobal::dirs ()->saveLocation(arg0.latin1(), arg1, arg2);
|
|
|
|
return KJS::String( path );
|
|
|
|
}
|
|
|
|
case StdDirsImp::makeDir:
|
|
|
|
{
|
|
|
|
TQString arg0 = extractTQString(exec, args, 0);
|
|
|
|
int arg1 = (args.size() > 1) ? args[1].toInteger(exec) : 0755;
|
|
|
|
bool isOk = TDEStandardDirs::makeDir(arg0, arg1);
|
|
|
|
return KJS::Boolean( isOk );
|
|
|
|
}
|
|
|
|
case StdDirsImp::exists:
|
|
|
|
{
|
|
|
|
TQString arg0 = extractTQString(exec, args, 0);
|
|
|
|
bool isOk = TDEStandardDirs::exists(arg0);
|
|
|
|
return KJS::Boolean( isOk );
|
|
|
|
}
|
|
|
|
case StdDirsImp::realPath:
|
|
|
|
{
|
|
|
|
TQString arg0 = extractTQString(exec, args, 0);
|
|
|
|
TQString path = TDEStandardDirs::realPath(arg0);
|
|
|
|
return KJS::String( path );
|
|
|
|
}
|
|
|
|
case StdDirsImp::currentDirPath:
|
|
|
|
return KJS::String(TQDir::currentDirPath());
|
|
|
|
case StdDirsImp::homeDirPath:
|
|
|
|
return KJS::String(TQDir::homeDirPath());
|
|
|
|
case StdDirsImp::applicationDirPath:
|
|
|
|
return KJS::String(tqApp->applicationDirPath());
|
|
|
|
default:
|
|
|
|
kdWarning() << "StdDirsImp has no method " << id << endl;
|
|
|
|
}
|
|
|
|
|
|
|
|
kdWarning() << "StdDirsImp returning null" << endl;
|
|
|
|
|
|
|
|
return KJS::Null();
|
|
|
|
}
|
|
|
|
|
|
|
|
StdIconsImp::StdIconsImp( JSFactory *fact, KJS::ExecState *exec, uint mid )
|
|
|
|
: JSProxyImp(exec), id(mid), jsfact(fact)
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
StdIconsImp::~StdIconsImp() {}
|
|
|
|
|
|
|
|
void StdIconsImp::addBindings( JSFactory *fact, KJS::ExecState *exec, KJS::Object &parent )
|
|
|
|
{
|
|
|
|
JSProxy::MethodTable methods[] = {
|
|
|
|
{ StdIconsImp::BarIcon, "BarIcon" },
|
|
|
|
{ StdIconsImp::DesktopIcon, "DesktopIcon" },
|
|
|
|
{ StdIconsImp::SmallIcon, "SmallIcon" },
|
|
|
|
{ StdIconsImp::MainBarIcon, "MainBarIcon" },
|
|
|
|
{ StdIconsImp::UserIcon, "UserIcon" },
|
|
|
|
{ StdIconsImp::MimeSourceIcon, "MimeSourceIcon" },
|
|
|
|
{ 0, 0 }
|
|
|
|
};
|
|
|
|
|
|
|
|
int idx = 0;
|
|
|
|
do {
|
|
|
|
StdIconsImp *sdi = new StdIconsImp( fact, exec, idx );
|
|
|
|
parent.put( exec , methods[idx].name, KJS::Object(sdi) );
|
|
|
|
++idx;
|
|
|
|
} while( methods[idx].id );
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
KJS::Value StdIconsImp::wrapPixmap(KJS::ExecState *exec, const TQPixmap &icon)
|
|
|
|
{
|
|
|
|
return convertToValue(exec, icon);
|
|
|
|
}
|
|
|
|
|
|
|
|
KJS::Value StdIconsImp::call( KJS::ExecState *exec, KJS::Object &/*obj*/, const KJS::List &args )
|
|
|
|
{
|
|
|
|
TQString arg0 = extractTQString(exec, args, 0); // Name
|
|
|
|
int arg1 = extractInt(exec, args, 1); // Size 0, 16, 24, 32, 48, 64, 128
|
|
|
|
int arg2 = extractInt(exec, args, 2);
|
|
|
|
// State 0 DefaultState, 1 ActiveState, 2 DisabledState, 3 LastState
|
|
|
|
switch( id ) {
|
|
|
|
case StdIconsImp::BarIcon:
|
|
|
|
{
|
|
|
|
return wrapPixmap(exec, ::BarIcon(arg0, arg1, arg2));
|
|
|
|
}
|
|
|
|
case StdIconsImp::DesktopIcon:
|
|
|
|
{
|
|
|
|
return wrapPixmap(exec, ::DesktopIcon(arg0, arg1, arg2));
|
|
|
|
}
|
|
|
|
case StdIconsImp::SmallIcon:
|
|
|
|
{
|
|
|
|
return wrapPixmap(exec, ::SmallIcon(arg0, arg1, arg2));
|
|
|
|
}
|
|
|
|
case StdIconsImp::MainBarIcon:
|
|
|
|
{
|
|
|
|
return wrapPixmap(exec, ::MainBarIcon(arg0, arg1, arg2));
|
|
|
|
}
|
|
|
|
case StdIconsImp::UserIcon:
|
|
|
|
{
|
|
|
|
return wrapPixmap(exec, ::UserIcon(arg0, arg2));
|
|
|
|
}
|
|
|
|
case StdIconsImp::MimeSourceIcon:
|
|
|
|
{
|
|
|
|
return wrapPixmap( exec, TQPixmap::fromMimeSource(arg0));
|
|
|
|
}
|
|
|
|
default:
|
|
|
|
kdWarning() << "StdDirsImp has no method " << id << endl;
|
|
|
|
}
|
|
|
|
|
|
|
|
kdWarning() << "StdDirsImp returning null" << endl;
|
|
|
|
|
|
|
|
return KJS::Null();
|
|
|
|
}
|
|
|
|
|
|
|
|
} // namespace KJSEmbed::BuiltIns
|
|
|
|
} // namespace KJSEmbed
|