#include <qpalette.h> #include <qpixmap.h> #include <qfont.h> #include <tdelocale.h> #include <kjs/object.h> #include <kdebug.h> #include <kjsembed/jsobjectproxy.h> #include <kjsembed/jsopaqueproxy.h> #include <kjsembed/jsbinding.h> #include <> #include "_imp.h" /** * Namespace containing the KJSEmbed library. */ namespace KJSEmbed { Imp::Imp( KJS::ExecState *exec, int id ) : JSProxyImp(exec), mid(id) { } Imp::~Imp() { } void Imp::addBindings( KJS::ExecState *exec, KJS::Object &object ) { JSProxy::MethodTable methods[] = { _ Method_ { , "" }, { 0, 0 } }; int idx = 0; do { Imp *meth = new Imp( exec, methods[idx].id ); object.put( exec , methods[idx].name, KJS::Object(meth) ); ++idx; } while( methods[idx].id ); // // Define the enum constants // struct EnumValue { const char *id; int val; }; EnumValue enums[] = { // enum { "", :: }, { 0, 0 } }; int enumidx = 0; do { object.put( exec, enums[enumidx].id, KJS::Number(enums[enumidx].val), KJS::ReadOnly ); ++enumidx; } while( enums[enumidx].id ); } *Imp::to( KJS::Object &self ) { JSObjectProxy *ob = JSProxy::toObjectProxy( self.imp() ); if ( ob ) { TQObject *obj = ob->object(); if ( obj ) return dynamic_cast<TQComboBox *>( obj ); } JSOpaqueProxy *op = JSProxy::toOpaqueProxy( self.imp() ); if ( !op ) return 0; if ( op->typeName() != "" ) return 0; return ( *)( op->toVoidStar() ); } KJS::Value Imp::call( KJS::ExecState *exec, KJS::Object &self, const KJS::List &args ) { instance = Imp::to( self ); switch( mid ) { _ Method_ case : return ( exec, self, args ); break; default: break; } TQString msg = i18n( "Imp has no method with id '%1'" ).arg( mid ); KJS::Object err = KJS::Error::create( exec, KJS::ReferenceError, msg.utf8() ); exec->setException( err ); return err; } Imp::_ KJS::Value ( KJS::ExecState *exec, KJS::Object &obj, const KJS::List &args ) { TQString arg = (args.size() >= ) ? args[].toString(exec).qstring() : TQString::null; TQString arg = (args.size() >= ) ? args[].toString(exec).qstring() : TQString::null; const char *arg = (args.size() >= ) ? args[].toString(exec).ascii() : 0; int arg = (args.size() >= ) ? args[].toInteger(exec) : -1; uint arg = (args.size() >= ) ? args[].toInteger(exec) : -1; double arg = (args.size() >= ) ? args[].toInteger(exec) : -1; bool arg = (args.size() >= ) ? args[].toBoolean(exec) : false; TQFont arg; // TODO TQPalette arg; // TODO TQStringList arg = extractTQStringList(exec, args, ); TQStrList arg; if ( args.size() >= ) { // TODO: populate the list } TQRect arg = extractTQRect(exec, args, ); TQSize arg = extractTQSize(exec, args, ); TQPixmap arg = extractTQPixmap(exec, args, ); TQColor arg = extractTQColor(exec, args, ); TQDate arg = extractTQDate(exec, args, ); TQTime arg = extractTQTime(exec, args, ); TQDateTime arg = extractTQDateTime(exec, args, ); TQComboBox::Policy arg; // TODO (hack for combo box) // Unsupported parameter return KJS::Value(); arg; // Dummy bool ret; ret = instance->( arg, ); return KJS::Boolean( ret ); int ret; ret = instance->( arg, ); return KJS::Number( ret ); uint ret; ret = instance->( arg, ); return KJS::Number( ret ); double ret; ret = instance->( arg, ); return KJS::Number( ret ); TQString ret; ret = instance->( arg, ); return KJS::String( ret ); const char *ret; ret = instance->( arg, ); return KJS::String( ret ); TQStringList ret; ret = instance->( arg, ); return convertToValue( exec, ret ); instance->( arg, ); return KJS::Value(); // Returns void instance->( arg, ); return KJS::Value(); // Returns '' } } // namespace KJSEmbed // Local Variables: // c-basic-offset: 4 // End: