def __init__(self, argv): print('QCA args', argv) args = Args(3) argn = ffi.new('int[1]', [len(argv)]) args[1].s_voidp = argn self._cargn = argn self._args = [arg.encode('ascii') for arg in argv] self._cargs = [ffi.new('char[]', arg) for arg in self._args] self._cargv = ffi.new('char *[]', self._cargs) args[2].s_voidp = self._cargv self.__cval__ = self.__classdef__.call(self.__classdef__.name, None, [argn, self._cargv], {}) type(self)._instance = self
def _create_ctype(self, name, elem, stack, is_const, classid=0): ctype = ffi.new('Type*') self._nam = charp(name) ctype.name = self._nam ctype.classId = classid ctype.flags = getattr(smokec, elem) ctype.flags |= getattr(smokec, 'tf_'+stack) ctype.flags |= smokec.tf_const if is_const else 0 return ctype
def main(): qapp_cls = qtgui.find_class('QApplication') print(qapp_cls.name, qapp_cls) qapp_ctor = qapp_cls.find_method('QApplication$?') print(qapp_ctor.name, qapp_ctor) print(qapp_ctor._class.name) args = Args(3) argn = ffi.new('int[1]', [2]) args[1].s_voidp = argn argv = ffi.new('char[]', b'hello_smoke_app') argc = ffi.new('char*[]', [argv, argv]) args[2].s_voidp = argc qapp = qapp_ctor.call(None, argn, argc) qwidget_cls = qtgui.find_class('QWidget') qwidget_ctor = qwidget_cls.find_method('QWidget') qwidget = qwidget_ctor.call(None) qwidget_cls.find_method('show').call(qwidget) qapp_cls.find_method('exec').call(qapp)
print(smoke.smokec.Smoke_numMethodNames(qtgui.smoke.csmoke)) print(smoke.smokec.Smoke_numMethods(qtgui.smoke.csmoke)) print(smoke.smokec.Smoke_numMethodMaps(qtgui.smoke.csmoke)) print(qtgui.find_class('QWidget').find_munged_names(mn)) qapp_cls = qtgui.find_class('QApplication') print(qapp_cls.name, qapp_cls) qapp_ctor = qapp_cls.find_method('QApplication$?') for meth in qapp_cls.iter_methods(): print(meth, meth._index, meth._smoke.smoke) print(qapp_ctor.name, qapp_ctor, qapp_ctor._index) print(qapp_ctor._class.name) args = Args(3) argn = ffi.new('int[1]', [2]) args[1].s_voidp = argn argv = ffi.new('char[]', b'hello_smoke_app') argc = ffi.new('char*[]', [argv, argv]) args[2].s_voidp = argc qapp = qapp_ctor.call(None, argn, argc) qcapp = qtgui.find_class('QCoreApplication') qcinst = qcapp.find_method('instance').call(inst=None) print(qcapp, qcinst, qcapp.find_method('objectName')) print(qcapp.find_method('objectName').call(inst=qcinst)) m = qapp_cls.find_method('objectName') print(m) print(m.cls, m.cls.bases, m.cls.is_external) print(m.call(inst=qapp))