KVSO_CLASS_FUNCTION(trayIcon,setContextMenu) { CHECK_INTERNAL_POINTER(m_pTrayIcon) KviKvsObject *ob; kvs_hobject_t hObject; KVSO_PARAMETERS_BEGIN(c) KVSO_PARAMETER("widget",KVS_PT_HOBJECT,0,hObject) KVSO_PARAMETERS_END(c) ob=KviKvsKernel::instance()->objectController()->lookupObject(hObject); if (!ob) { c->warning(__tr2qs_ctx("Widget parameter is not an object","objects")); return true; } if (!ob->object()) { c->warning(__tr2qs_ctx("Widget parameter is not a valid object","objects")); return true; } if(!ob->inheritsClass("popupmenu")) { c->warning(__tr2qs_ctx("Can't add a non-popupmenu object","objects")); return true; } m_pTrayIcon->setContextMenu(((QMenu *)(ob->object()))); return true; }
KVSO_CLASS_FUNCTION(mainWindow,setCentralWidget) { CHECK_INTERNAL_POINTER(widget()) KviKvsObject * pObject; kvs_hobject_t hObject; KVSO_PARAMETERS_BEGIN(c) KVSO_PARAMETER("widget",KVS_PT_HOBJECT,0,hObject) KVSO_PARAMETERS_END(c) pObject=KviKvsKernel::instance()->objectController()->lookupObject(hObject); if (!pObject) { c->warning(__tr2qs_ctx("Widget parameter is not an object","objects")); return true; } if (!pObject->object()) { c->warning(__tr2qs_ctx("Widget parameter is not a valid object","objects")); return true; } if(!pObject->inheritsClass("widget")) { c->warning(__tr2qs_ctx("Widget object required","objects")); return true; } ((KviTalMainWindow *)widget())->setCentralWidget(((QWidget *)(pObject->object()))); return true; }
KVSO_CLASS_FUNCTION(xmlReader, parse) { KviKvsVariant * pVariantData; KVSO_PARAMETERS_BEGIN(c) KVSO_PARAMETER("string_or_memorybuffer_object", KVS_PT_VARIANT, 0, pVariantData) KVSO_PARAMETERS_END(c) #ifdef QT_NO_XML fatalError(__tr2qs_ctx("XML support not available in the Qt library")); c->returnValue()->setBoolean(false); #else m_szLastError = ""; KviXmlHandler handler(this); QXmlInputSource source; if(pVariantData->isHObject()) { KviKvsObject * pObject; kvs_hobject_t hObject; pVariantData->asHObject(hObject); pObject = KviKvsKernel::instance()->objectController()->lookupObject(hObject); if(!pObject) { c->warning(__tr2qs_ctx("Data parameter is not an object", "objects")); return true; } if(pObject->inheritsClass("memorybuffer")) { source.setData(*((KvsObject_memoryBuffer *)pObject)->pBuffer()); } else { c->warning(__tr2qs_ctx("Data parameter is not a memorybuffer object", "objects")); return true; } } else if(pVariantData->isString()) { QString szString; pVariantData->asString(szString); // We have a problem here.. most kvirc functions already interpret the data // read from files. We should have binary data handling features to get this to work correctly. // The following snippet of code tries to provide a best-effort workaround. QByteArray utf8data = szString.toUtf8(); QByteArray data = utf8data; data.truncate(utf8data.length()); // don't include the null terminator in data source.setData(data); //qDebug("PARSING(%s) LEN(%d)",szString.toUtf8().data(),szString.toUtf8().length()); } else { c->warning(__tr2qs_ctx("Data is not a memorybuffer object or string", "objects")); return true; } QXmlSimpleReader reader; reader.setContentHandler(&handler); reader.setErrorHandler(&handler); c->returnValue()->setBoolean(reader.parse(source)); #endif return true; }