// Minimum Qt interface for hello world %module qt %{ #include #include %} %include typemaps.i class QObject {}; class QPaintDevice {}; class QWidget : public QObject, public QPaintDevice { public: void show(); }; class QButton : public QWidget {}; class QPushButton : public QButton { public: QPushButton( const char *text, QWidget *parent=0, const char *name=0 ); void resize( int w, int h ); }; class QApplication : public QObject { public: %addmethods { #ifdef SWIGRUBY QApplication(VALUE vargv) { if (TYPE(vargv) != T_ARRAY) rb_raise(rb_eArgError, "Array expected"); int argc = RARRAY(vargv)->len; char **argv = new char*[argc]; for (int i = 0; i < argc; i++) { VALUE v = RARRAY(vargv)->ptr[i]; if (TYPE(v) != T_STRING) rb_raise(rb_eArgError, "Array of String expected"); argv[i] = new char[RSTRING(v)->len + 1]; strcpy(argv[i], RSTRING(v)->ptr); } return new QApplication(argc, argv); } #endif } void setMainWidget( QWidget * ); int exec(); };