예제 #1
0
        public static void InitRuntime()
        {
            if (runtimeInitialized)
            {
                return;
            }
            Qyoto.Init_qyoto_qtcore();
            SmokeMarshallers.SetUp();
            QMetaType.RegisterType <object>();
            // not set when mono is embedded
            if (AppDomain.CurrentDomain.SetupInformation.ConfigurationFile == null)
            {
                PropertyInfo   pi    = typeof(AppDomain).GetProperty("SetupInformationNoCopy", BindingFlags.NonPublic | BindingFlags.Instance);
                AppDomainSetup setup = (AppDomainSetup)pi.GetValue(AppDomain.CurrentDomain, null);
                setup.ConfigurationFile = Assembly.GetExecutingAssembly().Location + ".config";
            }

            foreach (Assembly a in AppDomain.CurrentDomain.GetAssemblies())
            {
                TryInitialize(a);
            }

            runtimeInitialized = true;
        }
예제 #2
0
        static public QVariant FromValue(object value, System.Type valueType)
        {
            if (valueType == typeof(bool))
            {
                return(new QVariant((bool)value));
            }
            else if (valueType == typeof(double))
            {
                return(new QVariant((double)value));
            }
            else if (valueType == typeof(QBitArray))
            {
                return(new QVariant((QBitArray)value));
            }
            else if (valueType == typeof(QByteArray))
            {
                return(new QVariant((QByteArray)value));
            }
            else if (valueType == typeof(char))
            {
                return(new QVariant(new QChar((char)value)));
            }
            else if (valueType == typeof(QDate))
            {
                return(new QVariant((QDate)value));
            }
            else if (valueType == typeof(QDateTime))
            {
                return(new QVariant((QDateTime)value));
            }
            else if (valueType == typeof(int))
            {
                return(new QVariant((int)value));
            }
            else if (valueType == typeof(QLine))
            {
                return(new QVariant((QLine)value));
            }
            else if (valueType == typeof(QLineF))
            {
                return(new QVariant((QLineF)value));
            }
            else if (valueType == typeof(QLocale))
            {
                return(new QVariant((QLocale)value));
            }
            else if (valueType == typeof(QPoint))
            {
                return(new QVariant((QPoint)value));
            }
            else if (valueType == typeof(QPointF))
            {
                return(new QVariant((QPointF)value));
            }
            else if (valueType == typeof(QRect))
            {
                return(new QVariant((QRect)value));
            }
            else if (valueType == typeof(QRectF))
            {
                return(new QVariant((QRectF)value));
            }
            else if (valueType == typeof(QRegExp))
            {
                return(new QVariant((QRegExp)value));
            }
            else if (valueType == typeof(QSize))
            {
                return(new QVariant((QSize)value));
            }
            else if (valueType == typeof(QSizeF))
            {
                return(new QVariant((QSizeF)value));
            }
            else if (valueType == typeof(string))
            {
                return(new QVariant((string)value));
            }
            else if (valueType == typeof(List <string>))
            {
                return(new QVariant((List <string>)value));
            }
            else if (valueType == typeof(List <QVariant>))
            {
                return(new QVariant((List <QVariant>)value));
            }
            else if (valueType == typeof(Dictionary <string, QVariant>))
            {
                return(new QVariant((Dictionary <string, QVariant>)value));
            }
            else if (valueType == typeof(QTime))
            {
                return(new QVariant((QTime)value));
            }
            else if (valueType == typeof(uint))
            {
                return(new QVariant((uint)value));
            }
            else if (valueType == typeof(QUrl))
            {
                return(new QVariant((QUrl)value));
            }
            else if (valueType == typeof(QVariant))
            {
                return(new QVariant((QVariant)value));
            }
            else if (valueType.IsEnum)
            {
                return(new QVariant((int)value));
            }
            else
            {
                string typeName;
                if (SmokeMarshallers.IsSmokeClass(valueType))
                {
                    typeName = SmokeMarshallers.SmokeClassName(valueType);
                }
                else
                {
                    typeName = valueType.ToString();
                }
                Type type = NameToType(typeName);
                if (type == Type.Invalid)
                {
                    return(FromValue <object>(value));
                }
                else if (type > Type.LastCoreType)
                {
                    IntPtr valueHandle = IntPtr.Zero;
                    if (value != null)
                    {
                        valueHandle = (IntPtr)GCHandle.Alloc(value);
                    }
                    GCHandle handle = (GCHandle)QVariantFromValue(QMetaType.type(typeName), valueHandle);
                    QVariant v      = (QVariant)handle.Target;
                    handle.Free();
                    return(v);
                }

                return(new QVariant());
            }
        }
예제 #3
0
 static QVariant()
 {
     QMetaType.RegisterType <object>();
 }