


#include <tqcstring.h>
#include <tqpalette.h>
#include <tqpixmap.h>
#include <tqfont.h>

#include <kjs/object.h>

#include <kjsembed/global.h>
#include <kjsembed/jsobjectproxy.h>
#include <kjsembed/jsopaqueproxy.h>
#include <kjsembed/jsbinding.h>

#include <tqnamespace.h>
#include "qt_imp.h"

/**
 * Namespace containing the KJSEmbed library.
 */
namespace KJSEmbed {

QtImp::QtImp( KJS::ExecState *exec, int mid, bool constructor )
   : JSProxyImp(exec), id(mid), cons(constructor)
{
}

QtImp::~QtImp()
{
}

/**
 * Adds bindings for static methods and enum constants to the specified Object.
 */
void QtImp::addStaticBindings( KJS::ExecState *exec, KJS::Object &object )
{
    JSProxy::MethodTable methods[] = {

	{ 0, 0 }
    };

    int idx = 0;
    TQCString lastName;

    while( methods[idx].name ) {
        if ( lastName != methods[idx].name ) {
            QtImp *meth = new QtImp( exec, methods[idx].id );
            object.put( exec , methods[idx].name, KJS::Object(meth) );
            lastName = methods[idx].name;
        }
        ++idx;
    }


    //
    // Define the enum constants
    //
    struct EnumValue {
	const char *id;
	int val;
    };

    EnumValue enums[] = {

        // enum ButtonState
        { "NoButton", TQt::NoButton },
        { "LeftButton", TQt::LeftButton },
        { "RightButton", TQt::RightButton },
        { "MidButton", TQt::MidButton },
        { "MouseButtonMask", TQt::MouseButtonMask },
        { "ShiftButton", TQt::ShiftButton },
        { "ControlButton", TQt::ControlButton },
        { "AltButton", TQt::AltButton },
        { "MetaButton", TQt::MetaButton },
        { "KeyButtonMask", TQt::KeyButtonMask },
        { "Keypad", TQt::Keypad },
        // enum Orientation
        { "Horizontal", TQt::Horizontal },
        { "Vertical", TQt::Vertical },
        // enum SortOrder
        { "Ascending", TQt::Ascending },
        { "Descending", TQt::Descending },
        // enum AlignmentFlags
        { "AlignAuto", TQt::AlignAuto },
        { "AlignLeft", TQt::AlignLeft },
        { "AlignRight", TQt::AlignRight },
        { "AlignHCenter", TQt::AlignHCenter },
        { "AlignJustify", TQt::AlignJustify },
        { "AlignHorizontal_Mask", TQt::AlignHorizontal_Mask },
        { "AlignTop", TQt::AlignTop },
        { "AlignBottom", TQt::AlignBottom },
        { "AlignVCenter", TQt::AlignVCenter },
        { "AlignVertical_Mask", TQt::AlignVertical_Mask },
        { "AlignCenter", TQt::AlignCenter },
        // enum TextFlags
        { "SingleLine", TQt::SingleLine },
        { "DontClip", TQt::DontClip },
        { "ExpandTabs", TQt::ExpandTabs },
        { "ShowPrefix", TQt::ShowPrefix },
        { "WordBreak", TQt::WordBreak },
        { "BreakAnywhere", TQt::BreakAnywhere },
        { "DontPrint", TQt::DontPrint },
        { "Underline", TQt::Underline },
        { "Overline", TQt::Overline },
        { "StrikeOut", TQt::StrikeOut },
        { "IncludeTrailingSpaces", TQt::IncludeTrailingSpaces },
        { "NoAccel", TQt::NoAccel },
        // enum WidgetState
        { "WState_Created", TQt::WState_Created },
        { "WState_Disabled", TQt::WState_Disabled },
        { "WState_Visible", TQt::WState_Visible },
        { "WState_ForceHide", TQt::WState_ForceHide },
        { "WState_OwnCursor", TQt::WState_OwnCursor },
        { "WState_MouseTracking", TQt::WState_MouseTracking },
        { "WState_CompressKeys", TQt::WState_CompressKeys },
        { "WState_BlockUpdates", TQt::WState_BlockUpdates },
        { "WState_InPaintEvent", TQt::WState_InPaintEvent },
        { "WState_Reparented", TQt::WState_Reparented },
        { "WState_ConfigPending", TQt::WState_ConfigPending },
        { "WState_Resized", TQt::WState_Resized },
        { "WState_AutoMask", TQt::WState_AutoMask },
        { "WState_Polished", TQt::WState_Polished },
        { "WState_DND", TQt::WState_DND },
        { "WState_Reserved0", TQt::WState_Reserved0 },
        { "WState_FullScreen", TQt::WState_FullScreen },
        { "WState_OwnSizePolicy", TQt::WState_OwnSizePolicy },
        { "WState_CreatedHidden", TQt::WState_CreatedHidden },
        { "WState_Maximized", TQt::WState_Maximized },
        { "WState_Minimized", TQt::WState_Minimized },
        { "WState_ForceDisabled", TQt::WState_ForceDisabled },
        { "WState_Exposed", TQt::WState_Exposed },
        { "WState_HasMouse", TQt::WState_HasMouse },
        // enum WidgetFlags
        { "WType_TopLevel", TQt::WType_TopLevel },
        { "WType_Dialog", TQt::WType_Dialog },
        { "WType_Popup", TQt::WType_Popup },
        { "WType_Desktop", TQt::WType_Desktop },
        { "WType_Mask", TQt::WType_Mask },
        { "WStyle_Customize", TQt::WStyle_Customize },
        { "WStyle_NormalBorder", TQt::WStyle_NormalBorder },
        { "WStyle_DialogBorder", TQt::WStyle_DialogBorder },
        { "WStyle_NoBorder", TQt::WStyle_NoBorder },
        { "WStyle_Title", TQt::WStyle_Title },
        { "WStyle_SysMenu", TQt::WStyle_SysMenu },
        { "WStyle_Minimize", TQt::WStyle_Minimize },
        { "WStyle_Maximize", TQt::WStyle_Maximize },
        { "WStyle_MinMax", TQt::WStyle_MinMax },
        { "WStyle_Tool", TQt::WStyle_Tool },
        { "WStyle_StaysOnTop", TQt::WStyle_StaysOnTop },
        { "WStyle_ContextHelp", TQt::WStyle_ContextHelp },
        { "WStyle_Reserved", TQt::WStyle_Reserved },
        { "WStyle_Mask", TQt::WStyle_Mask },
        { "WDestructiveClose", TQt::WDestructiveClose },
        { "WPaintDesktop", TQt::WPaintDesktop },
        { "WPaintUnclipped", TQt::WPaintUnclipped },
        { "WPaintClever", TQt::WPaintClever },
        { "WResizeNoErase", TQt::WResizeNoErase },
        { "WMouseNoMask", TQt::WMouseNoMask },
        { "WStaticContents", TQt::WStaticContents },
        { "WRepaintNoErase", TQt::WRepaintNoErase },
        { "WX11BypassWM", TQt::WX11BypassWM },
        { "WWinOwnDC", TQt::WWinOwnDC },
        { "WMacNoSheet", TQt::WMacNoSheet },
        { "WMacDrawer", TQt::WMacDrawer },
        { "WGroupLeader", TQt::WGroupLeader },
        { "WShowModal", TQt::WShowModal },
        { "WNoMousePropagation", TQt::WNoMousePropagation },
        { "WSubWindow", TQt::WSubWindow },
        { "WStyle_Splash", TQt::WStyle_Splash },
        { "WNoAutoErase", TQt::WNoAutoErase },
        { "WNorthWestGravity", TQt::WNorthWestGravity },
        { "WType_Modal", TQt::WType_Modal },
        { "WStyle_Dialog", TQt::WStyle_Dialog },
        { "WStyle_NoBorderEx", TQt::WStyle_NoBorderEx },
        // enum WindowState
        { "WindowNoState", TQt::WindowNoState },
        { "WindowMinimized", TQt::WindowMinimized },
        { "WindowMaximized", TQt::WindowMaximized },
        { "WindowFullScreen", TQt::WindowFullScreen },
        { "WindowActive", TQt::WindowActive },
        // enum ImageConversionFlags
        { "ColorMode_Mask", TQt::ColorMode_Mask },
        { "AutoColor", TQt::AutoColor },
        { "ColorOnly", TQt::ColorOnly },
        { "MonoOnly", TQt::MonoOnly },
        { "AlphaDither_Mask", TQt::AlphaDither_Mask },
        { "ThresholdAlphaDither", TQt::ThresholdAlphaDither },
        { "OrderedAlphaDither", TQt::OrderedAlphaDither },
        { "DiffuseAlphaDither", TQt::DiffuseAlphaDither },
        { "NoAlpha", TQt::NoAlpha },
        { "Dither_Mask", TQt::Dither_Mask },
        { "DiffuseDither", TQt::DiffuseDither },
        { "OrderedDither", TQt::OrderedDither },
        { "ThresholdDither", TQt::ThresholdDither },
        { "DitherMode_Mask", TQt::DitherMode_Mask },
        { "AutoDither", TQt::AutoDither },
        { "PreferDither", TQt::PreferDither },
        { "AvoidDither", TQt::AvoidDither },
        // enum BGMode
        { "TransparentMode", TQt::TransparentMode },
        { "OpaqueMode", TQt::OpaqueMode },
        // enum PaintUnit
        { "PixelUnit", TQt::PixelUnit },
        { "LoMetricUnit", TQt::LoMetricUnit },
        { "HiMetricUnit", TQt::HiMetricUnit },
        { "LoEnglishUnit", TQt::LoEnglishUnit },
        { "HiEnglishUnit", TQt::HiEnglishUnit },
        { "TwipsUnit", TQt::TwipsUnit },
        // enum GUIStyle
        { "MacStyle", TQt::MacStyle },
        { "WindowsStyle", TQt::WindowsStyle },
        { "Win3Style", TQt::Win3Style },
        { "PMStyle", TQt::PMStyle },
        { "MotifStyle", TQt::MotifStyle },
        // enum SequenceMatch
        { "NoMatch", TQt::NoMatch },
        { "PartialMatch", TQt::PartialMatch },
        { "Identical", TQt::Identical },
        // enum Modifier
        { "META", TQt::META },
        { "SHIFT", TQt::SHIFT },
        { "CTRL", TQt::CTRL },
        { "ALT", TQt::ALT },
        { "MODIFIER_MASK", TQt::MODIFIER_MASK },
        { "UNICODE_ACCEL", TQt::UNICODE_ACCEL },
        { "ASCII_ACCEL", TQt::ASCII_ACCEL },
        // enum Key
        { "Key_Escape", TQt::Key_Escape },
        { "Key_Tab", TQt::Key_Tab },
        { "Key_Backtab", TQt::Key_Backtab },
        { "Key_BackTab", TQt::Key_BackTab },
        { "Key_Backspace", TQt::Key_Backspace },
        { "Key_BackSpace", TQt::Key_BackSpace },
        { "Key_Return", TQt::Key_Return },
        { "Key_Enter", TQt::Key_Enter },
        { "Key_Insert", TQt::Key_Insert },
        { "Key_Delete", TQt::Key_Delete },
        { "Key_Pause", TQt::Key_Pause },
        { "Key_Print", TQt::Key_Print },
        { "Key_SysReq", TQt::Key_SysReq },
        { "Key_Clear", TQt::Key_Clear },
        { "Key_Home", TQt::Key_Home },
        { "Key_End", TQt::Key_End },
        { "Key_Left", TQt::Key_Left },
        { "Key_Up", TQt::Key_Up },
        { "Key_Right", TQt::Key_Right },
        { "Key_Down", TQt::Key_Down },
        { "Key_Prior", TQt::Key_Prior },
        { "Key_PageUp", TQt::Key_PageUp },
        { "Key_Next", TQt::Key_Next },
        { "Key_PageDown", TQt::Key_PageDown },
        { "Key_Shift", TQt::Key_Shift },
        { "Key_Control", TQt::Key_Control },
        { "Key_Meta", TQt::Key_Meta },
        { "Key_Alt", TQt::Key_Alt },
        { "Key_CapsLock", TQt::Key_CapsLock },
        { "Key_NumLock", TQt::Key_NumLock },
        { "Key_ScrollLock", TQt::Key_ScrollLock },
        { "Key_F1", TQt::Key_F1 },
        { "Key_F2", TQt::Key_F2 },
        { "Key_F3", TQt::Key_F3 },
        { "Key_F4", TQt::Key_F4 },
        { "Key_F5", TQt::Key_F5 },
        { "Key_F6", TQt::Key_F6 },
        { "Key_F7", TQt::Key_F7 },
        { "Key_F8", TQt::Key_F8 },
        { "Key_F9", TQt::Key_F9 },
        { "Key_F10", TQt::Key_F10 },
        { "Key_F11", TQt::Key_F11 },
        { "Key_F12", TQt::Key_F12 },
        { "Key_F13", TQt::Key_F13 },
        { "Key_F14", TQt::Key_F14 },
        { "Key_F15", TQt::Key_F15 },
        { "Key_F16", TQt::Key_F16 },
        { "Key_F17", TQt::Key_F17 },
        { "Key_F18", TQt::Key_F18 },
        { "Key_F19", TQt::Key_F19 },
        { "Key_F20", TQt::Key_F20 },
        { "Key_F21", TQt::Key_F21 },
        { "Key_F22", TQt::Key_F22 },
        { "Key_F23", TQt::Key_F23 },
        { "Key_F24", TQt::Key_F24 },
        { "Key_F25", TQt::Key_F25 },
        { "Key_F26", TQt::Key_F26 },
        { "Key_F27", TQt::Key_F27 },
        { "Key_F28", TQt::Key_F28 },
        { "Key_F29", TQt::Key_F29 },
        { "Key_F30", TQt::Key_F30 },
        { "Key_F31", TQt::Key_F31 },
        { "Key_F32", TQt::Key_F32 },
        { "Key_F33", TQt::Key_F33 },
        { "Key_F34", TQt::Key_F34 },
        { "Key_F35", TQt::Key_F35 },
        { "Key_Super_L", TQt::Key_Super_L },
        { "Key_Super_R", TQt::Key_Super_R },
        { "Key_Menu", TQt::Key_Menu },
        { "Key_Hyper_L", TQt::Key_Hyper_L },
        { "Key_Hyper_R", TQt::Key_Hyper_R },
        { "Key_Help", TQt::Key_Help },
        { "Key_Direction_L", TQt::Key_Direction_L },
        { "Key_Direction_R", TQt::Key_Direction_R },
        { "Key_Space", TQt::Key_Space },
        { "Key_Any", TQt::Key_Any },
        { "Key_Exclam", TQt::Key_Exclam },
        { "Key_QuoteDbl", TQt::Key_QuoteDbl },
        { "Key_NumberSign", TQt::Key_NumberSign },
        { "Key_Dollar", TQt::Key_Dollar },
        { "Key_Percent", TQt::Key_Percent },
        { "Key_Ampersand", TQt::Key_Ampersand },
        { "Key_Apostrophe", TQt::Key_Apostrophe },
        { "Key_ParenLeft", TQt::Key_ParenLeft },
        { "Key_ParenRight", TQt::Key_ParenRight },
        { "Key_Asterisk", TQt::Key_Asterisk },
        { "Key_Plus", TQt::Key_Plus },
        { "Key_Comma", TQt::Key_Comma },
        { "Key_Minus", TQt::Key_Minus },
        { "Key_Period", TQt::Key_Period },
        { "Key_Slash", TQt::Key_Slash },
        { "Key_0", TQt::Key_0 },
        { "Key_1", TQt::Key_1 },
        { "Key_2", TQt::Key_2 },
        { "Key_3", TQt::Key_3 },
        { "Key_4", TQt::Key_4 },
        { "Key_5", TQt::Key_5 },
        { "Key_6", TQt::Key_6 },
        { "Key_7", TQt::Key_7 },
        { "Key_8", TQt::Key_8 },
        { "Key_9", TQt::Key_9 },
        { "Key_Colon", TQt::Key_Colon },
        { "Key_Semicolon", TQt::Key_Semicolon },
        { "Key_Less", TQt::Key_Less },
        { "Key_Equal", TQt::Key_Equal },
        { "Key_Greater", TQt::Key_Greater },
        { "Key_Question", TQt::Key_Question },
        { "Key_At", TQt::Key_At },
        { "Key_A", TQt::Key_A },
        { "Key_B", TQt::Key_B },
        { "Key_C", TQt::Key_C },
        { "Key_D", TQt::Key_D },
        { "Key_E", TQt::Key_E },
        { "Key_F", TQt::Key_F },
        { "Key_G", TQt::Key_G },
        { "Key_H", TQt::Key_H },
        { "Key_I", TQt::Key_I },
        { "Key_J", TQt::Key_J },
        { "Key_K", TQt::Key_K },
        { "Key_L", TQt::Key_L },
        { "Key_M", TQt::Key_M },
        { "Key_N", TQt::Key_N },
        { "Key_O", TQt::Key_O },
        { "Key_P", TQt::Key_P },
        { "Key_Q", TQt::Key_Q },
        { "Key_R", TQt::Key_R },
        { "Key_S", TQt::Key_S },
        { "Key_T", TQt::Key_T },
        { "Key_U", TQt::Key_U },
        { "Key_V", TQt::Key_V },
        { "Key_W", TQt::Key_W },
        { "Key_X", TQt::Key_X },
        { "Key_Y", TQt::Key_Y },
        { "Key_Z", TQt::Key_Z },
        { "Key_BracketLeft", TQt::Key_BracketLeft },
        { "Key_Backslash", TQt::Key_Backslash },
        { "Key_BracketRight", TQt::Key_BracketRight },
        { "Key_AsciiCircum", TQt::Key_AsciiCircum },
        { "Key_Underscore", TQt::Key_Underscore },
        { "Key_QuoteLeft", TQt::Key_QuoteLeft },
        { "Key_BraceLeft", TQt::Key_BraceLeft },
        { "Key_Bar", TQt::Key_Bar },
        { "Key_BraceRight", TQt::Key_BraceRight },
        { "Key_AsciiTilde", TQt::Key_AsciiTilde },
        { "Key_nobreakspace", TQt::Key_nobreakspace },
        { "Key_exclamdown", TQt::Key_exclamdown },
        { "Key_cent", TQt::Key_cent },
        { "Key_sterling", TQt::Key_sterling },
        { "Key_currency", TQt::Key_currency },
        { "Key_yen", TQt::Key_yen },
        { "Key_brokenbar", TQt::Key_brokenbar },
        { "Key_section", TQt::Key_section },
        { "Key_diaeresis", TQt::Key_diaeresis },
        { "Key_copyright", TQt::Key_copyright },
        { "Key_ordfeminine", TQt::Key_ordfeminine },
        { "Key_guillemotleft", TQt::Key_guillemotleft },
        { "Key_notsign", TQt::Key_notsign },
        { "Key_hyphen", TQt::Key_hyphen },
        { "Key_registered", TQt::Key_registered },
        { "Key_macron", TQt::Key_macron },
        { "Key_degree", TQt::Key_degree },
        { "Key_plusminus", TQt::Key_plusminus },
        { "Key_twosuperior", TQt::Key_twosuperior },
        { "Key_threesuperior", TQt::Key_threesuperior },
        { "Key_acute", TQt::Key_acute },
        { "Key_mu", TQt::Key_mu },
        { "Key_paragraph", TQt::Key_paragraph },
        { "Key_periodcentered", TQt::Key_periodcentered },
        { "Key_cedilla", TQt::Key_cedilla },
        { "Key_onesuperior", TQt::Key_onesuperior },
        { "Key_masculine", TQt::Key_masculine },
        { "Key_guillemotright", TQt::Key_guillemotright },
        { "Key_onequarter", TQt::Key_onequarter },
        { "Key_onehalf", TQt::Key_onehalf },
        { "Key_threequarters", TQt::Key_threequarters },
        { "Key_questiondown", TQt::Key_questiondown },
        { "Key_Agrave", TQt::Key_Agrave },
        { "Key_Aacute", TQt::Key_Aacute },
        { "Key_Acircumflex", TQt::Key_Acircumflex },
        { "Key_Atilde", TQt::Key_Atilde },
        { "Key_Adiaeresis", TQt::Key_Adiaeresis },
        { "Key_Aring", TQt::Key_Aring },
        { "Key_AE", TQt::Key_AE },
        { "Key_Ccedilla", TQt::Key_Ccedilla },
        { "Key_Egrave", TQt::Key_Egrave },
        { "Key_Eacute", TQt::Key_Eacute },
        { "Key_Ecircumflex", TQt::Key_Ecircumflex },
        { "Key_Ediaeresis", TQt::Key_Ediaeresis },
        { "Key_Igrave", TQt::Key_Igrave },
        { "Key_Iacute", TQt::Key_Iacute },
        { "Key_Icircumflex", TQt::Key_Icircumflex },
        { "Key_Idiaeresis", TQt::Key_Idiaeresis },
        { "Key_ETH", TQt::Key_ETH },
        { "Key_Ntilde", TQt::Key_Ntilde },
        { "Key_Ograve", TQt::Key_Ograve },
        { "Key_Oacute", TQt::Key_Oacute },
        { "Key_Ocircumflex", TQt::Key_Ocircumflex },
        { "Key_Otilde", TQt::Key_Otilde },
        { "Key_Odiaeresis", TQt::Key_Odiaeresis },
        { "Key_multiply", TQt::Key_multiply },
        { "Key_Ooblique", TQt::Key_Ooblique },
        { "Key_Ugrave", TQt::Key_Ugrave },
        { "Key_Uacute", TQt::Key_Uacute },
        { "Key_Ucircumflex", TQt::Key_Ucircumflex },
        { "Key_Udiaeresis", TQt::Key_Udiaeresis },
        { "Key_Yacute", TQt::Key_Yacute },
        { "Key_THORN", TQt::Key_THORN },
        { "Key_ssharp", TQt::Key_ssharp },
        { "Key_agrave", TQt::Key_agrave },
        { "Key_aacute", TQt::Key_aacute },
        { "Key_acircumflex", TQt::Key_acircumflex },
        { "Key_atilde", TQt::Key_atilde },
        { "Key_adiaeresis", TQt::Key_adiaeresis },
        { "Key_aring", TQt::Key_aring },
        { "Key_ae", TQt::Key_ae },
        { "Key_ccedilla", TQt::Key_ccedilla },
        { "Key_egrave", TQt::Key_egrave },
        { "Key_eacute", TQt::Key_eacute },
        { "Key_ecircumflex", TQt::Key_ecircumflex },
        { "Key_ediaeresis", TQt::Key_ediaeresis },
        { "Key_igrave", TQt::Key_igrave },
        { "Key_iacute", TQt::Key_iacute },
        { "Key_icircumflex", TQt::Key_icircumflex },
        { "Key_idiaeresis", TQt::Key_idiaeresis },
        { "Key_eth", TQt::Key_eth },
        { "Key_ntilde", TQt::Key_ntilde },
        { "Key_ograve", TQt::Key_ograve },
        { "Key_oacute", TQt::Key_oacute },
        { "Key_ocircumflex", TQt::Key_ocircumflex },
        { "Key_otilde", TQt::Key_otilde },
        { "Key_odiaeresis", TQt::Key_odiaeresis },
        { "Key_division", TQt::Key_division },
        { "Key_oslash", TQt::Key_oslash },
        { "Key_ugrave", TQt::Key_ugrave },
        { "Key_uacute", TQt::Key_uacute },
        { "Key_ucircumflex", TQt::Key_ucircumflex },
        { "Key_udiaeresis", TQt::Key_udiaeresis },
        { "Key_yacute", TQt::Key_yacute },
        { "Key_thorn", TQt::Key_thorn },
        { "Key_ydiaeresis", TQt::Key_ydiaeresis },
        { "Key_Back", TQt::Key_Back },
        { "Key_Forward", TQt::Key_Forward },
        { "Key_Stop", TQt::Key_Stop },
        { "Key_Refresh", TQt::Key_Refresh },
        { "Key_VolumeDown", TQt::Key_VolumeDown },
        { "Key_VolumeMute", TQt::Key_VolumeMute },
        { "Key_VolumeUp", TQt::Key_VolumeUp },
        { "Key_BassBoost", TQt::Key_BassBoost },
        { "Key_BassUp", TQt::Key_BassUp },
        { "Key_BassDown", TQt::Key_BassDown },
        { "Key_TrebleUp", TQt::Key_TrebleUp },
        { "Key_TrebleDown", TQt::Key_TrebleDown },
        { "Key_MediaPlay", TQt::Key_MediaPlay },
        { "Key_MediaStop", TQt::Key_MediaStop },
        { "Key_MediaPrev", TQt::Key_MediaPrev },
        { "Key_MediaNext", TQt::Key_MediaNext },
        { "Key_MediaRecord", TQt::Key_MediaRecord },
        { "Key_HomePage", TQt::Key_HomePage },
        { "Key_Favorites", TQt::Key_Favorites },
        { "Key_Search", TQt::Key_Search },
        { "Key_Standby", TQt::Key_Standby },
        { "Key_OpenUrl", TQt::Key_OpenUrl },
        { "Key_LaunchMail", TQt::Key_LaunchMail },
        { "Key_LaunchMedia", TQt::Key_LaunchMedia },
        { "Key_Launch0", TQt::Key_Launch0 },
        { "Key_Launch1", TQt::Key_Launch1 },
        { "Key_Launch2", TQt::Key_Launch2 },
        { "Key_Launch3", TQt::Key_Launch3 },
        { "Key_Launch4", TQt::Key_Launch4 },
        { "Key_Launch5", TQt::Key_Launch5 },
        { "Key_Launch6", TQt::Key_Launch6 },
        { "Key_Launch7", TQt::Key_Launch7 },
        { "Key_Launch8", TQt::Key_Launch8 },
        { "Key_Launch9", TQt::Key_Launch9 },
        { "Key_LaunchA", TQt::Key_LaunchA },
        { "Key_LaunchB", TQt::Key_LaunchB },
        { "Key_LaunchC", TQt::Key_LaunchC },
        { "Key_LaunchD", TQt::Key_LaunchD },
        { "Key_LaunchE", TQt::Key_LaunchE },
        { "Key_LaunchF", TQt::Key_LaunchF },
        { "Key_MediaLast", TQt::Key_MediaLast },
        { "Key_unknown", TQt::Key_unknown },
        // enum ArrowType
        { "UpArrow", TQt::UpArrow },
        { "DownArrow", TQt::DownArrow },
        { "LeftArrow", TQt::LeftArrow },
        { "RightArrow", TQt::RightArrow },
        // enum RasterOp
        { "CopyROP", TQt::CopyROP },
        { "OrROP", TQt::OrROP },
        { "XorROP", TQt::XorROP },
        { "NotAndROP", TQt::NotAndROP },
        { "EraseROP", TQt::EraseROP },
        { "NotCopyROP", TQt::NotCopyROP },
        { "NotOrROP", TQt::NotOrROP },
        { "NotXorROP", TQt::NotXorROP },
        { "AndROP", TQt::AndROP },
        { "NotEraseROP", TQt::NotEraseROP },
        { "NotROP", TQt::NotROP },
        { "ClearROP", TQt::ClearROP },
        { "SetROP", TQt::SetROP },
        { "NopROP", TQt::NopROP },
        { "AndNotROP", TQt::AndNotROP },
        { "OrNotROP", TQt::OrNotROP },
        { "NandROP", TQt::NandROP },
        { "NorROP", TQt::NorROP },
        { "LastROP", TQt::LastROP },
        // enum PenStyle
        { "NoPen", TQt::NoPen },
        { "SolidLine", TQt::SolidLine },
        { "DashLine", TQt::DashLine },
        { "DotLine", TQt::DotLine },
        { "DashDotLine", TQt::DashDotLine },
        { "DashDotDotLine", TQt::DashDotDotLine },
        { "MPenStyle", TQt::MPenStyle },
        // enum PenCapStyle
        { "FlatCap", TQt::FlatCap },
        { "SquareCap", TQt::SquareCap },
        { "RoundCap", TQt::RoundCap },
        { "MPenCapStyle", TQt::MPenCapStyle },
        // enum PenJoinStyle
        { "MiterJoin", TQt::MiterJoin },
        { "BevelJoin", TQt::BevelJoin },
        { "RoundJoin", TQt::RoundJoin },
        { "MPenJoinStyle", TQt::MPenJoinStyle },
        // enum BrushStyle
        { "NoBrush", TQt::NoBrush },
        { "SolidPattern", TQt::SolidPattern },
        { "Dense1Pattern", TQt::Dense1Pattern },
        { "Dense2Pattern", TQt::Dense2Pattern },
        { "Dense3Pattern", TQt::Dense3Pattern },
        { "Dense4Pattern", TQt::Dense4Pattern },
        { "Dense5Pattern", TQt::Dense5Pattern },
        { "Dense6Pattern", TQt::Dense6Pattern },
        { "Dense7Pattern", TQt::Dense7Pattern },
        { "HorPattern", TQt::HorPattern },
        { "VerPattern", TQt::VerPattern },
        { "CrossPattern", TQt::CrossPattern },
        { "BDiagPattern", TQt::BDiagPattern },
        { "FDiagPattern", TQt::FDiagPattern },
        { "DiagCrossPattern", TQt::DiagCrossPattern },
        { "CustomPattern", TQt::CustomPattern },
        // enum MacintoshVersion
        { "MV_Unknown", TQt::MV_Unknown },
        { "MV_9", TQt::MV_9 },
        { "MV_10_DOT_0", TQt::MV_10_DOT_0 },
        { "MV_10_DOT_1", TQt::MV_10_DOT_1 },
        { "MV_10_DOT_2", TQt::MV_10_DOT_2 },
        { "MV_10_DOT_3", TQt::MV_10_DOT_3 },
        { "MV_CHEETAH", TQt::MV_CHEETAH },
        { "MV_PUMA", TQt::MV_PUMA },
        { "MV_JAGUAR", TQt::MV_JAGUAR },
        { "MV_PANTHER", TQt::MV_PANTHER },
        // enum WindowsVersion
        { "WV_32s", TQt::WV_32s },
        { "WV_95", TQt::WV_95 },
        { "WV_98", TQt::WV_98 },
        { "WV_Me", TQt::WV_Me },
        { "WV_DOS_based", TQt::WV_DOS_based },
        { "WV_NT", TQt::WV_NT },
        { "WV_2000", TQt::WV_2000 },
        { "WV_XP", TQt::WV_XP },
        { "WV_2003", TQt::WV_2003 },
        { "WV_NT_based", TQt::WV_NT_based },
        { "WV_CE", TQt::WV_CE },
        { "WV_CENET", TQt::WV_CENET },
        { "WV_CE_based", TQt::WV_CE_based },
        // enum UIEffect
        { "UI_General", TQt::UI_General },
        { "UI_AnimateMenu", TQt::UI_AnimateMenu },
        { "UI_FadeMenu", TQt::UI_FadeMenu },
        { "UI_AnimateCombo", TQt::UI_AnimateCombo },
        { "UI_AnimateTooltip", TQt::UI_AnimateTooltip },
        { "UI_FadeTooltip", TQt::UI_FadeTooltip },
        { "UI_AnimateToolBox", TQt::UI_AnimateToolBox },
        // enum CursorShape
        { "ArrowCursor", TQt::ArrowCursor },
        { "UpArrowCursor", TQt::UpArrowCursor },
        { "CrossCursor", TQt::CrossCursor },
        { "WaitCursor", TQt::WaitCursor },
        { "IbeamCursor", TQt::IbeamCursor },
        { "SizeVerCursor", TQt::SizeVerCursor },
        { "SizeHorCursor", TQt::SizeHorCursor },
        { "SizeBDiagCursor", TQt::SizeBDiagCursor },
        { "SizeFDiagCursor", TQt::SizeFDiagCursor },
        { "SizeAllCursor", TQt::SizeAllCursor },
        { "BlankCursor", TQt::BlankCursor },
        { "SplitVCursor", TQt::SplitVCursor },
        { "SplitHCursor", TQt::SplitHCursor },
        { "PointingHandCursor", TQt::PointingHandCursor },
        { "ForbiddenCursor", TQt::ForbiddenCursor },
        { "WhatsThisCursor", TQt::WhatsThisCursor },
        { "BusyCursor", TQt::BusyCursor },
        { "LastCursor", TQt::LastCursor },
        { "BitmapCursor", TQt::BitmapCursor },
        // enum TextFormat
        { "PlainText", TQt::PlainText },
        { "RichText", TQt::RichText },
        { "AutoText", TQt::AutoText },
        { "LogText", TQt::LogText },
        // enum AnchorAttribute
        { "AnchorName", TQt::AnchorName },
        { "AnchorHref", TQt::AnchorHref },
        // enum Dock
        { "DockUnmanaged", TQt::DockUnmanaged },
        { "DockTornOff", TQt::DockTornOff },
        { "DockTop", TQt::DockTop },
        { "DockBottom", TQt::DockBottom },
        { "DockRight", TQt::DockRight },
        { "DockLeft", TQt::DockLeft },
        { "DockMinimized", TQt::DockMinimized },
        { "Unmanaged", TQt::Unmanaged },
        { "TornOff", TQt::TornOff },
        { "Top", TQt::Top },
        { "Bottom", TQt::Bottom },
        { "Right", TQt::Right },
        { "Left", TQt::Left },
        { "Minimized", TQt::Minimized },
        // enum DateFormat
        { "TextDate", TQt::TextDate },
        { "ISODate", TQt::ISODate },
        { "LocalDate", TQt::LocalDate },
        // enum TimeSpec
        { "LocalTime", TQt::LocalTime },
        { "UTC", TQt::UTC },
        // enum BackgroundMode
        { "FixedColor", TQt::FixedColor },
        { "FixedPixmap", TQt::FixedPixmap },
        { "NoBackground", TQt::NoBackground },
        { "PaletteForeground", TQt::PaletteForeground },
        { "PaletteButton", TQt::PaletteButton },
        { "PaletteLight", TQt::PaletteLight },
        { "PaletteMidlight", TQt::PaletteMidlight },
        { "PaletteDark", TQt::PaletteDark },
        { "PaletteMid", TQt::PaletteMid },
        { "PaletteText", TQt::PaletteText },
        { "PaletteBrightText", TQt::PaletteBrightText },
        { "PaletteBase", TQt::PaletteBase },
        { "PaletteBackground", TQt::PaletteBackground },
        { "PaletteShadow", TQt::PaletteShadow },
        { "PaletteHighlight", TQt::PaletteHighlight },
        { "PaletteHighlightedText", TQt::PaletteHighlightedText },
        { "PaletteButtonText", TQt::PaletteButtonText },
        { "PaletteLink", TQt::PaletteLink },
        { "PaletteLinkVisited", TQt::PaletteLinkVisited },
        { "X11ParentRelative", TQt::X11ParentRelative },
        // enum StringComparisonMode
        { "CaseSensitive", TQt::CaseSensitive },
        { "BeginsWith", TQt::BeginsWith },
        { "EndsWith", TQt::EndsWith },
        { "Contains", TQt::Contains },
        { "ExactMatch", TQt::ExactMatch },
        // enum Corner
        { "TopLeft", TQt::TopLeft },
        { "TopRight", TQt::TopRight },
        { "BottomLeft", TQt::BottomLeft },
        { "BottomRight", TQt::BottomRight },
	{ 0, 0 }
    };

    int enumidx = 0;
    while( enums[enumidx].id ) {
        object.put( exec, enums[enumidx].id, KJS::Number(enums[enumidx].val), KJS::ReadOnly );
        ++enumidx;
    }

}

/**
 * Adds bindings for instance methods to the specified Object.
 */
void QtImp::addBindings( KJS::ExecState *exec, KJS::Object &object )
{
    JSProxy::MethodTable methods[] = {

	{ 0, 0 }
    };

    int idx = 0;
    TQCString lastName;

    while( methods[idx].name ) {
        if ( lastName != methods[idx].name ) {
            QtImp *meth = new QtImp( exec, methods[idx].id );
            object.put( exec , methods[idx].name, KJS::Object(meth) );
            lastName = methods[idx].name;
        }
        ++idx;
    }
}

/**
 * Extract a Qt pointer from an Object.
 */
Qt *QtImp::toQt( KJS::Object &self )
{
    JSObjectProxy *ob = JSProxy::toObjectProxy( self.imp() );
    if ( ob ) {
        TQObject *obj = ob->object();
	if ( obj )
           return dynamic_cast<Qt *>( obj );
    }

    JSOpaqueProxy *op = JSProxy::toOpaqueProxy( self.imp() );
    if ( !op )
        return 0;

    if ( op->typeName() != "Qt" )
        return 0;

    return op->toNative<Qt>();
}

/**
 * Select and invoke the correct constructor.
 */
KJS::Object QtImp::construct( KJS::ExecState *exec, const KJS::List &args )
{
   switch( id ) {

         default:
             break;
    }

    TQString msg = i18n("QtCons has no constructor with id '%1'.").arg(id);
    return throwError(exec, msg,KJS::ReferenceError);
}


KJS::Value QtImp::call( KJS::ExecState *exec, KJS::Object &self, const KJS::List &args )
{
    instance = QtImp::toQt( self );

    switch( id ) {

    default:
        break;
    }

    TQString msg = i18n( "QtImp has no method with id '%1'." ).arg( id );
    return throwError(exec, msg,KJS::ReferenceError);
}



} // namespace KJSEmbed
