changeset 33:cf8a415f3f32

gui package is fully wrapped now. lots of fixes in the generator
author eldar
date Sat, 16 May 2009 17:12:06 +0000
parents a293cd68d56c
children 17cc45b32686
files Makefile build/core.makefile build/core.txt build/gui.makefile build/gui.txt examples/mainwindows/dockwidgets/build generator/cppgenerator.cpp generator/cppimplgenerator.cpp generator/cppimplgenerator.h generator/dgenerator.cpp generator/generator.cpp generator/typesystem_core.xml generator/typesystem_gui-java.java generator/typesystem_gui.xml include/ArrayOpsPrimitive.h include/qtd_core.h mini/test1/build qt/core/QString.d qt/qtd/ArrayOpsPrimitive.d
diffstat 19 files changed, 1149 insertions(+), 833 deletions(-) [+]
line wrap: on
line diff
--- a/Makefile	Fri May 15 18:57:36 2009 +0000
+++ b/Makefile	Sat May 16 17:12:06 2009 +0000
@@ -135,7 +135,7 @@
 	cd generator && qmake && $(MAKE)
 
 dgen:  make_gen
-	cd generator && $(GEN) $(GEN_OPT) --d-target=$(D_TARGET) --output-directory=../ qtjambi_masterinclude.h build_opengl.txt
+	cd generator && $(GEN) $(GEN_OPT) --d-target=$(D_TARGET) --output-directory=../ qtjambi_masterinclude.h build_gui.txt
 ## DGenerator ## end
 
 mkdir:
--- a/build/core.makefile	Fri May 15 18:57:36 2009 +0000
+++ b/build/core.makefile	Sat May 16 17:12:06 2009 +0000
@@ -26,40 +26,47 @@
 ## Classes.
 ## TODO: use list that genareted by dgen.
 core_classes =  \
-	ArrayOps \
-	QChildEvent \
-	QCoreApplication \
-	QEvent \
-	QEventLoop \
-	QObject \
-	QTimerEvent \
-	QTranslator \
-	QPoint \
+    ArrayOps \
+    QChildEvent \
+    QCoreApplication \
+    QEvent \
+    QEventLoop \
+    QObject \
+    QTimerEvent \
+    QTranslator \
+    QPoint \
     QPointF \
     QRect \
     QRectF \
     QByteArray \
-	QLocale \
-	QSize \
-	QSizeF \
-	QDataStream \
+    QLocale \
+    QSize \
+    QSizeF \
+    QDataStream \
     QLine \
     QLineF \
-	QMimeData \
-	QIODevice \
-	QDateTime \
-	QDate \
-	QTime \
-	QVariant \
-	QBitArray \
-	QRegExp \
-	QUrl \
-	QModelIndex \
-	QAbstractItemModel \
-	QAbstractFileEngine \
-	QFile \
-	QDir \
-	QFileInfo \
-	QTextStream \
-	QString \
-	QTimer 
\ No newline at end of file
+    QMimeData \
+    QIODevice \
+    QDateTime \
+    QDate \
+    QTime \
+    QVariant \
+    QBitArray \
+    QRegExp \
+    QUrl \
+    QModelIndex \
+    QAbstractItemModel \
+    QAbstractFileEngine \
+    QFile \
+    QDir \
+    QFileInfo \
+    QTextStream \
+    QString \
+    QTimer \
+    QTextCodec \
+    QTextCodec_ConverterState \
+    QTextEncoder \
+    QTextDecoder \
+    QTimeLine \
+    QAbstractFactory \
+    QAbstractListModel
\ No newline at end of file
--- a/build/core.txt	Fri May 15 18:57:36 2009 +0000
+++ b/build/core.txt	Sat May 16 17:12:06 2009 +0000
@@ -18,30 +18,37 @@
 set (d_generated_files core/Qt)
 ## Classes.
 set (classes 
-	QChildEvent
-	QCoreApplication
-	QEvent
-	QEventLoop
-	QObject
-	QTimerEvent
-	QTranslator
-	QByteArray
-	QLocale
-	QDataStream
-	QMimeData
-	QIODevice
-	QDateTime
-	QDate
-	QTime
-	QBitArray
-	QRegExp
-	QUrl
-	QAbstractItemModel
-	QAbstractFileEngine
-	QFile
-	QDir
-	QFileInfo
-	QTextStream
-	QTimer
+    QChildEvent
+    QCoreApplication
+    QEvent
+    QEventLoop
+    QObject
+    QTimerEvent
+    QTranslator
+    QByteArray
+    QLocale
+    QDataStream
+    QMimeData
+    QIODevice
+    QDateTime
+    QDate
+    QTime
+    QBitArray
+    QRegExp
+    QUrl
+    QAbstractItemModel
+    QAbstractFileEngine
+    QFile
+    QDir
+    QFileInfo
+    QTextStream
+    QTimer
+    QTextCodec
+    QTextCodec_ConverterState
+    QTextEncoder
+    QTextDecoder
+    QTimeLine
+    QAbstractFactory
+    QAbstractListModel
     )
 	
--- a/build/gui.makefile	Fri May 15 18:57:36 2009 +0000
+++ b/build/gui.makefile	Sat May 16 17:12:06 2009 +0000
@@ -16,214 +16,350 @@
 ## Classes.
 ## TODO: use list that generated by dgen.
 gui_classes = \
-    ArrayOps \
-	QPushButton \
-	QFileIconProvider \
-	QPaintDevice \
-	QPicture \
-	QPixmap \
-	QImage \
-	QBitmap \
-	QStyle \
-	QStyleOption \
-	QDesktopWidget \
-	QMenu \
-	QAction \
-	QDropEvent \
-	QInputContext \
-	QWidget \
-	QApplication \
-	QIcon \
-	QIconEngine \
-	QPalette \
-	QSizePolicy \
-	QRegion \
-	QFontMetrics \
-	QCursor \
-	QFont \
-	QClipboard \
-	QSessionManager \
-	QPainterPath  \
-	QPainterPath_Element \
-	QPaintEvent \
-	QTransform \
-	QMatrix \
-	QPainter \
-	QDragLeaveEvent \
-	QPolygon \
-	QInputEvent \
-	QDragEnterEvent \
-	QKeyEvent \
-	QHideEvent \
-	QWheelEvent \
-	QMoveEvent \
-	QActionGroup \
-	QActionEvent \
-	QFocusEvent \
-	QIconEngineV2 \
-	QFontInfo \
-	QStyleHintReturn \
-	QColor \
-	QDragMoveEvent \
-	QStyleOptionMenuItem \
-	QTabletEvent \
-	QShowEvent \
-	QResizeEvent \
-	QBrush \
-	QInputMethodEvent \
-	QContextMenuEvent \
-	QStyleOptionComplex \
-	QMouseEvent \
-	QHelpEvent \
-	QTextFormat \
-	QKeySequence \
-	QCloseEvent \
-	QGradient \
-	QTextItem \
-	QTextOption \
-	QPolygonF \
-	QPen \
-	QTextCharFormat \
-	QTextListFormat \
-	QTextTableFormat \
-	QTextLength \
-	QTextFrameFormat \
-	QTextTableCellFormat \
-	QTextBlockFormat \
-	QTextImageFormat \
-	QFrame \
-	QLabel \
-	QAbstractButton \
-	QMovie \
-	QCheckBox \
-	QRadioButton \
-	QToolButton \
-	QStyleOptionButton \
-	QStyleOptionToolButton \
-	QStyleOptionToolBar \
-	QStyleOptionToolBox \
-	QStyleOptionToolBoxV2 \
-	QStyleOptionSlider \
-	QStyleOptionViewItem \
-	QStyleOptionHeader \
-	QStyleOptionDockWidget \
-	QStyleOptionTab \
-	QButtonGroup \
-	QLCDNumber \
-	QAbstractSlider \
-	QDial \
-	QSlider \
-	QScrollBar \
-	QPaintEngine \
-	QSpacerItem \
-	QLayout \
-	QLayoutItem \
-	QPaintEngineState \
-	QBoxLayout \
-	QHBoxLayout \
-	QVBoxLayout \
-	QFormLayout \
-	QGridLayout \
-	QStackedLayout \
-	QAbstractScrollArea \
-	QAbstractItemDelegate \
-	QAbstractItemView \
-	QTreeView \
-	QTableView \
-	QListView \
-	QHeaderView \
-	QItemSelection \
-	QItemSelectionModel \
-	QItemSelectionRange \
-	QDirModel \
-	QSplitter \
-	QSplitterHandle \
-	QListWidget \
-	QListWidgetItem \
-	QMainWindow \
-	QMenuBar \
-	QToolBar \
-	QMessageBox \
-	QDockWidget \
-	QDialog \
-	QStatusBar \
-	QTabWidget \
-	QTabBar \
-	QImageIOHandler \
-	QImageReader \
-	QTextFrame_iterator \
-	QTextBlock_iterator \
-	QPrinter \
-	QTextLine \
-	QTextEdit \
-	QTextCursor \
-	QTextFrame \
-	QTextObject \
-	QTextBlock \
-	QTextDocument \
-	QPrinterInfo \
-	QTextList \
-	QTextLayout \
-	QTextBlockUserData \
-	QTextDocumentFragment \
-	QTextTable \
-	QAbstractTextDocumentLayout \
-	QTextBlockGroup \
-	QTextObjectInterface \
-	QTextInlineObject \
-	QAbstractTextDocumentLayout_PaintContext \
-	QTextLayout_FormatRange \
-	QTextFragment \
-	QTextTableCell \
-	QPrintEngine \
-	QStyleOptionTabWidgetFrame \
-	QComboBox \
-	QValidator \
-	QCompleter \
-	QLineEdit \
-	QStyleOptionComboBox \
-	QStyleOptionFrame \
-	QFileDialog \
-	QAbstractProxyModel \
-	QGraphicsItem \
-	QGraphicsItemGroup \
-	QGraphicsWidget \
-	QGraphicsLayout \
-	QGraphicsScene \
-	QGraphicsSimpleTextItem \
-	QGraphicsRectItem \
-	QGraphicsPolygonItem \
-	QGraphicsPixmapItem \
-	QGraphicsPathItem \
-	QGraphicsLineItem \
-	QGraphicsEllipseItem \
-	QGraphicsLayoutItem \
-	QAbstractGraphicsShapeItem \
-	QGraphicsTextItem \
-	QGraphicsProxyWidget \
-	QGraphicsSceneEvent \
-	QGraphicsSceneWheelEvent \
-	QGraphicsSceneContextMenuEvent \
-	QGraphicsSceneMouseEvent \
-	QGraphicsSceneResizeEvent \
-	QStyleOptionGraphicsItem \
-	QGraphicsSceneMoveEvent \
-	QGraphicsSceneHoverEvent \
-	QGraphicsSceneDragDropEvent \
-	QGraphicsSceneHelpEvent \
-    QGraphicsView \
-    QTableWidgetSelectionRange \
-    QStandardItem \
-    QUndoStack \
-    QTreeWidgetItem \
-    QTreeWidget \
-    QTextEdit_ExtraSelection \
-    QTableWidgetItem \
-    QTableWidget \
-    QTextOption_Tab \
-    QMdiSubWindow \
-    QInputMethodEvent_Attribute \
-    QMdiArea \
-    QUndoCommand \
-    QStandardItemModel \
-    QDialogButtonBox
\ No newline at end of file
+ArrayOps \
+QAbstractAccessibleFactory \
+QAbstractButton \
+QAbstractGraphicsShapeItem \
+QAbstractIconEngineFactoryV2 \
+QAbstractImageIOHandlerFactory \
+QAbstractInputContextFactory \
+QAbstractItemDelegate \
+QAbstractItemView \
+QAbstractPageSetupDialog \
+QAbstractPictureFormat \
+QAbstractPrintDialog \
+QAbstractProxyModel \
+QAbstractScrollArea \
+QAbstractSlider \
+QAbstractSpinBox \
+QAbstractStyleFactory \
+QAbstractTableModel \
+QAbstractTextCodecFactory \
+QAbstractTextDocumentLayout_PaintContext \
+QAbstractTextDocumentLayout_Selection \
+QAbstractTextDocumentLayout \
+QAccessible2Interface \
+QAccessibleBridge \
+QAccessibleEvent \
+QAccessibleInterfaceEx \
+QAccessibleInterface \
+QAccessibleObjectEx \
+QAccessibleObject \
+QAccessiblePlugin \
+QAccessible \
+QAccessibleWidgetEx \
+QAccessibleWidget \
+QActionEvent \
+QActionGroup \
+QAction \
+QApplication \
+QBitmap \
+QBoxLayout \
+QBrush \
+QButtonGroup \
+QCalendarWidget \
+QCDEStyle \
+QCheckBox \
+QCleanlooksStyle \
+QClipboardEvent \
+QClipboard \
+QCloseEvent \
+QColorDialog \
+QColormap \
+QColor \
+QColumnView \
+QComboBox \
+QCommandLinkButton \
+QCommonStyle \
+QCompleter \
+QConicalGradient \
+QContextMenuEvent \
+QCursor \
+QDataWidgetMapper \
+QDateEdit \
+QDateTimeEdit \
+QDesktopServices \
+QDesktopWidget \
+QDialogButtonBox \
+QDialog \
+QDial \
+QDirModel \
+QDockWidget \
+QDoubleSpinBox \
+QDoubleValidator \
+QDragEnterEvent \
+QDragLeaveEvent \
+QDragMoveEvent \
+QDragResponseEvent \
+QDrag \
+QDropEvent \
+QErrorMessage \
+QFileDialog \
+QFileIconProvider \
+QFileOpenEvent \
+QFileSystemModel \
+QFocusEvent \
+QFocusFrame \
+QFontComboBox \
+QFontDatabase \
+QFontDialog \
+QFontInfo \
+QFontMetricsF \
+QFontMetrics \
+QFont \
+QFormLayout \
+QFrame \
+QGradient \
+QGraphicsEllipseItem \
+QGraphicsGridLayout \
+QGraphicsItemAnimation \
+QGraphicsItemGroup \
+QGraphicsItem \
+QGraphicsLayoutItem \
+QGraphicsLayout \
+QGraphicsLinearLayout \
+QGraphicsLineItem \
+QGraphicsPathItem \
+QGraphicsPixmapItem \
+QGraphicsPolygonItem \
+QGraphicsProxyWidget \
+QGraphicsRectItem \
+QGraphicsSceneContextMenuEvent \
+QGraphicsSceneDragDropEvent \
+QGraphicsSceneEvent \
+QGraphicsSceneHelpEvent \
+QGraphicsSceneHoverEvent \
+QGraphicsSceneMouseEvent \
+QGraphicsSceneMoveEvent \
+QGraphicsSceneResizeEvent \
+QGraphicsScene \
+QGraphicsSceneWheelEvent \
+QGraphicsSimpleTextItem \
+QGraphicsTextItem \
+QGraphicsView \
+QGraphicsWidget \
+QGridLayout \
+QGroupBox \
+QHBoxLayout \
+QHeaderView \
+QHelpEvent \
+QHideEvent \
+QHoverEvent \
+QIconDragEvent \
+QIconEnginePluginV2 \
+QIconEngine \
+QIconEngineV2 \
+QIcon \
+QImageIOHandler \
+QImageIOPlugin \
+QImageReader \
+QImage \
+QImageWriter \
+QInputContextFactory \
+QInputContextPlugin \
+QInputContext \
+QInputDialog \
+QInputEvent \
+QInputMethodEvent_Attribute \
+QInputMethodEvent \
+QIntValidator \
+QItemDelegate \
+QItemEditorCreatorBase \
+QItemEditorFactory \
+QItemSelectionModel \
+QItemSelectionRange \
+QItemSelection \
+QKeyEvent \
+QKeySequence \
+QLabel \
+QLayoutItem \
+QLayout \
+QLCDNumber \
+QLinearGradient \
+QLineEdit \
+QListView \
+QListWidgetItem \
+QListWidget \
+QMainWindow \
+QMatrix \
+QMdiArea \
+QMdiSubWindow \
+QMenuBar \
+QMenu \
+QMessageBox \
+QMotifStyle \
+QMouseEvent \
+QMoveEvent \
+QMovie \
+QPageSetupDialog \
+QPaintDevice \
+QPaintEngine \
+QPaintEngineState \
+QPainterPath_Element \
+QPainterPath \
+QPainterPathStroker \
+QPainter \
+QPaintEvent \
+QPalette \
+QPen \
+QPictureFormatPlugin \
+QPictureIO \
+QPicture \
+QPixmapCache \
+QPixmap \
+QPlainTextDocumentLayout \
+QPlainTextEdit \
+QPlastiqueStyle \
+QPolygonF \
+QPolygon \
+QPrintDialog \
+QPrintEngine \
+QPrinterInfo \
+QPrinter \
+QPrintPreviewDialog \
+QPrintPreviewWidget \
+QProgressBar \
+QProgressDialog \
+QProxyModel \
+QPushButton \
+QRadialGradient \
+QRadioButton \
+QRegExpValidator \
+QRegion \
+QResizeEvent \
+QRubberBand \
+QScrollArea \
+QScrollBar \
+QSessionManager \
+QShortcutEvent \
+QShortcut \
+QShowEvent \
+QSizeGrip \
+QSizePolicy \
+QSlider \
+QSortFilterProxyModel \
+QSound \
+QSpacerItem \
+QSpinBox \
+QSplashScreen \
+QSplitterHandle \
+QSplitter \
+QStackedLayout \
+QStackedWidget \
+QStandardItemModel \
+QStandardItem \
+QStatusBar \
+QStatusTipEvent \
+QStringListModel \
+QStyledItemDelegate \
+QStyleFactory \
+QStyleHintReturnMask \
+QStyleHintReturn \
+QStyleHintReturnVariant \
+QStyleOptionButton \
+QStyleOptionComboBox \
+QStyleOptionComplex \
+QStyleOptionDockWidget \
+QStyleOptionDockWidgetV2 \
+QStyleOptionFocusRect \
+QStyleOptionFrame \
+QStyleOptionFrameV2 \
+QStyleOptionGraphicsItem \
+QStyleOptionGroupBox \
+QStyleOptionHeader \
+QStyleOptionMenuItem \
+QStyleOptionProgressBar \
+QStyleOptionProgressBarV2 \
+QStyleOptionRubberBand \
+QStyleOption \
+QStyleOptionSizeGrip \
+QStyleOptionSlider \
+QStyleOptionSpinBox \
+QStyleOptionTabBarBase \
+QStyleOptionTab \
+QStyleOptionTabV2 \
+QStyleOptionTabWidgetFrame \
+QStyleOptionTitleBar \
+QStyleOptionToolBar \
+QStyleOptionToolBox \
+QStyleOptionToolBoxV2 \
+QStyleOptionToolButton \
+QStyleOptionViewItem \
+QStyleOptionViewItemV2 \
+QStyleOptionViewItemV3 \
+QStyleOptionViewItemV4 \
+QStylePainter \
+QStylePlugin \
+QStyle \
+QSyntaxHighlighter \
+QSystemTrayIcon \
+QTabBar \
+QTabletEvent \
+QTableView \
+QTableWidgetItem \
+QTableWidgetSelectionRange \
+QTableWidget \
+QTabWidget \
+QTextBlockFormat \
+QTextBlockGroup \
+QTextBlock_iterator \
+QTextBlock \
+QTextBlockUserData \
+QTextBrowser \
+QTextCharFormat \
+QTextCodecPlugin \
+QTextCursor \
+QTextDocumentFragment \
+QTextDocument \
+QTextEdit_ExtraSelection \
+QTextEdit \
+QTextFormat \
+QTextFragment \
+QTextFrameFormat \
+QTextFrame_iterator \
+QTextFrame \
+QTextImageFormat \
+QTextInlineObject \
+QTextItem \
+QTextLayout_FormatRange \
+QTextLayout \
+QTextLength \
+QTextLine \
+QTextListFormat \
+QTextList \
+QTextObjectInterface \
+QTextObject \
+QTextOption \
+QTextOption_Tab \
+QTextTableCellFormat \
+QTextTableCell \
+QTextTableFormat \
+QTextTable \
+QTimeEdit \
+QToolBarChangeEvent \
+QToolBar \
+QToolBox \
+QToolButton \
+QToolTip \
+QTransform \
+QTreeView \
+QTreeWidgetItemIterator \
+QTreeWidgetItem \
+QTreeWidget \
+QUndoCommand \
+QUndoGroup \
+QUndoStack \
+QUndoView \
+QValidator \
+QVBoxLayout \
+QWhatsThisClickedEvent \
+QWhatsThis \
+QWheelEvent \
+QWidgetAction \
+QWidgetItem \
+QWidget \
+QWindowsStyle \
+QWindowStateChangeEvent \
+QWizardPage \
+QWizard \
+QWorkspace
\ No newline at end of file
--- a/build/gui.txt	Fri May 15 18:57:36 2009 +0000
+++ b/build/gui.txt	Sat May 16 17:12:06 2009 +0000
@@ -1,213 +1,349 @@
 set(required Core)
 set(classes
-	QPushButton
-	QFileIconProvider
-	QPaintDevice
-	QPicture
-	QPixmap
-	QImage
-	QBitmap
-	QStyle
-	QStyleOption
-	QDesktopWidget
-	QMenu
-	QAction
-	QDropEvent
-	QInputContext
-	QWidget
-	QApplication
-	QIcon
-	QIconEngine
-	QPalette
-	QSizePolicy
-	QRegion
-	QFontMetrics
-	QCursor
-	QFont
-	QClipboard
-	QSessionManager
-	QPainterPath
-	QPainterPath_Element
-	QPaintEvent
-	QTransform
-	QMatrix
-	QPainter
-	QDragLeaveEvent
-	QPolygon
-	QInputEvent
-	QDragEnterEvent
-	QKeyEvent
-	QHideEvent
-	QWheelEvent
-	QMoveEvent
-	QActionGroup
-	QActionEvent
-	QFocusEvent
-	QIconEngineV2
-	QFontInfo
-	QStyleHintReturn
-	QColor
-	QDragMoveEvent
-	QStyleOptionMenuItem
-	QTabletEvent
-	QShowEvent
-	QResizeEvent
-	QBrush
-	QInputMethodEvent
-	QContextMenuEvent
-	QStyleOptionComplex
-	QMouseEvent
-	QHelpEvent
-	QTextFormat
-	QKeySequence
-	QCloseEvent
-	QGradient
-	QTextItem
-	QTextOption
-	QPolygonF
-	QPen
-	QTextCharFormat
-	QTextListFormat
-	QTextTableFormat
-	QTextLength
-	QTextFrameFormat
-	QTextTableCellFormat
-	QTextBlockFormat
-	QTextImageFormat
-	QFrame
-	QLabel
-	QAbstractButton
-	QMovie
-	QCheckBox
-	QRadioButton
-	QToolButton
-	QStyleOptionButton
-	QStyleOptionToolButton
-	QStyleOptionToolBar
-	QStyleOptionToolBox
-	QStyleOptionToolBoxV2
-	QStyleOptionSlider
-	QStyleOptionViewItem
-	QStyleOptionHeader
-	QStyleOptionDockWidget
-	QStyleOptionTab
-	QButtonGroup
-	QLCDNumber
-	QAbstractSlider
-	QDial
-	QSlider
-	QScrollBar
-	QPaintEngine
-	QSpacerItem
-	QLayout
-	QLayoutItem
-	QPaintEngineState
-	QBoxLayout
-	QHBoxLayout
-	QVBoxLayout
-	QFormLayout
-	QGridLayout
-	QStackedLayout
-	QAbstractScrollArea
-	QAbstractItemDelegate
-	QAbstractItemView
-	QTreeView
-	QTableView
-	QListView
-	QHeaderView
-	QItemSelection
-	QItemSelectionModel
-	QItemSelectionRange
-	QDirModel
-	QSplitter
-	QSplitterHandle
-	QListWidget
-	QListWidgetItem
-	QMainWindow
-	QMenuBar
-	QToolBar
-	QMessageBox
-	QDockWidget
-	QDialog
-	QStatusBar
-	QTabWidget
-	QTabBar
-	QImageIOHandler
-	QImageReader
-	QTextFrame_iterator
-	QTextBlock_iterator
-	QPrinter
-	QTextLine
-	QTextEdit
-	QTextCursor
-	QTextFrame
-	QTextObject
-	QTextBlock
-	QTextDocument
-	QPrinterInfo
-	QTextList
-	QTextLayout
-	QTextBlockUserData
-	QTextDocumentFragment
-	QTextTable
-	QAbstractTextDocumentLayout
-	QTextBlockGroup
-	QTextObjectInterface
-	QTextInlineObject
-	QAbstractTextDocumentLayout_PaintContext
-	QTextLayout_FormatRange
-	QTextFragment
-	QTextTableCell
-	QPrintEngine
-	QStyleOptionTabWidgetFrame
-	QComboBox
-	QValidator
-	QCompleter
-	QLineEdit
-	QStyleOptionComboBox
-	QStyleOptionFrame
-	QFileDialog
-	QAbstractProxyModel
-	QGraphicsItem
-	QGraphicsItemGroup
-	QGraphicsWidget
-	QGraphicsLayout
-	QGraphicsScene
-	QGraphicsSimpleTextItem
-	QGraphicsRectItem
-	QGraphicsPolygonItem
-	QGraphicsPixmapItem
-	QGraphicsPathItem
-	QGraphicsLineItem
-	QGraphicsEllipseItem
-	QGraphicsLayoutItem
-	QAbstractGraphicsShapeItem
-	QGraphicsTextItem
-	QGraphicsProxyWidget
-	QGraphicsSceneEvent
-	QGraphicsSceneWheelEvent
-	QGraphicsSceneContextMenuEvent
-	QGraphicsSceneMouseEvent
-	QGraphicsSceneResizeEvent
-	QStyleOptionGraphicsItem
-	QGraphicsSceneMoveEvent
-	QGraphicsSceneHoverEvent
-	QGraphicsSceneDragDropEvent
-	QGraphicsSceneHelpEvent
-	QGraphicsView
-	QTableWidgetSelectionRange
-	QStandardItem
-	QUndoStack
-	QTreeWidgetItem
-	QTreeWidget
-	QTextEdit_ExtraSelection
-	QTableWidgetItem
-	QTableWidget
-	QTextOption_Tab
-	QMdiSubWindow
-	QInputMethodEvent_Attribute
-	QMdiArea
-	QUndoCommand
-	QStandardItemModel
+    QAbstractAccessibleFactory
+    QAbstractButton
+    QAbstractGraphicsShapeItem
+    QAbstractIconEngineFactoryV2
+    QAbstractImageIOHandlerFactory
+    QAbstractInputContextFactory
+    QAbstractItemDelegate
+    QAbstractItemView
+    QAbstractPageSetupDialog
+    QAbstractPictureFormat
+    QAbstractPrintDialog
+    QAbstractProxyModel
+    QAbstractScrollArea
+    QAbstractSlider
+    QAbstractSpinBox
+    QAbstractStyleFactory
+    QAbstractTableModel
+    QAbstractTextCodecFactory
+    QAbstractTextDocumentLayout_PaintContext
+    QAbstractTextDocumentLayout_Selection
+    QAbstractTextDocumentLayout
+    QAccessible2Interface
+    QAccessibleBridge
+    QAccessibleEvent
+    QAccessibleInterfaceEx
+    QAccessibleInterface
+    QAccessibleObjectEx
+    QAccessibleObject
+    QAccessiblePlugin
+    QAccessible
+    QAccessibleWidgetEx
+    QAccessibleWidget
+    QActionEvent
+    QActionGroup
+    QAction
+    QApplication
+    QBitmap
+    QBoxLayout
+    QBrush
+    QButtonGroup
+    QCalendarWidget
+    QCDEStyle
+    QCheckBox
+    QCleanlooksStyle
+    QClipboardEvent
+    QClipboard
+    QCloseEvent
+    QColorDialog
+    QColormap
+    QColor
+    QColumnView
+    QComboBox
+    QCommandLinkButton
+    QCommonStyle
+    QCompleter
+    QConicalGradient
+    QContextMenuEvent
+    QCursor
+    QDataWidgetMapper
+    QDateEdit
+    QDateTimeEdit
+    QDesktopServices
+    QDesktopWidget
     QDialogButtonBox
+    QDialog
+    QDial
+    QDirModel
+    QDockWidget
+    QDoubleSpinBox
+    QDoubleValidator
+    QDragEnterEvent
+    QDragLeaveEvent
+    QDragMoveEvent
+    QDragResponseEvent
+    QDrag
+    QDropEvent
+    QErrorMessage
+    QFileDialog
+    QFileIconProvider
+    QFileOpenEvent
+    QFileSystemModel
+    QFocusEvent
+    QFocusFrame
+    QFontComboBox
+    QFontDatabase
+    QFontDialog
+    QFontInfo
+    QFontMetricsF
+    QFontMetrics
+    QFont
+    QFormLayout
+    QFrame
+    QGradient
+    QGraphicsEllipseItem
+    QGraphicsGridLayout
+    QGraphicsItemAnimation
+    QGraphicsItemGroup
+    QGraphicsItem
+    QGraphicsLayoutItem
+    QGraphicsLayout
+    QGraphicsLinearLayout
+    QGraphicsLineItem
+    QGraphicsPathItem
+    QGraphicsPixmapItem
+    QGraphicsPolygonItem
+    QGraphicsProxyWidget
+    QGraphicsRectItem
+    QGraphicsSceneContextMenuEvent
+    QGraphicsSceneDragDropEvent
+    QGraphicsSceneEvent
+    QGraphicsSceneHelpEvent
+    QGraphicsSceneHoverEvent
+    QGraphicsSceneMouseEvent
+    QGraphicsSceneMoveEvent
+    QGraphicsSceneResizeEvent
+    QGraphicsScene
+    QGraphicsSceneWheelEvent
+    QGraphicsSimpleTextItem
+    QGraphicsTextItem
+    QGraphicsView
+    QGraphicsWidget
+    QGridLayout
+    QGroupBox
+    QHBoxLayout
+    QHeaderView
+    QHelpEvent
+    QHideEvent
+    QHoverEvent
+    QIconDragEvent
+    QIconEnginePluginV2
+    QIconEngine
+    QIconEngineV2
+    QIcon
+    QImageIOHandler
+    QImageIOPlugin
+    QImageReader
+    QImage
+    QImageWriter
+    QInputContextFactory
+    QInputContextPlugin
+    QInputContext
+    QInputDialog
+    QInputEvent
+    QInputMethodEvent_Attribute
+    QInputMethodEvent
+    QIntValidator
+    QItemDelegate
+    QItemEditorCreatorBase
+    QItemEditorFactory
+    QItemSelectionModel
+    QItemSelectionRange
+    QItemSelection
+    QKeyEvent
+    QKeySequence
+    QLabel
+    QLayoutItem
+    QLayout
+    QLCDNumber
+    QLinearGradient
+    QLineEdit
+    QListView
+    QListWidgetItem
+    QListWidget
+    QMainWindow
+    QMatrix
+    QMdiArea
+    QMdiSubWindow
+    QMenuBar
+    QMenu
+    QMessageBox
+    QMotifStyle
+    QMouseEvent
+    QMoveEvent
+    QMovie
+    QPageSetupDialog
+    QPaintDevice
+    QPaintEngine
+    QPaintEngineState
+    QPainterPath_Element
+    QPainterPath
+    QPainterPathStroker
+    QPainter
+    QPaintEvent
+    QPalette
+    QPen
+    QPictureFormatPlugin
+    QPictureIO
+    QPicture
+    QPixmapCache
+    QPixmap
+    QPlainTextDocumentLayout
+    QPlainTextEdit
+    QPlastiqueStyle
+    QPolygonF
+    QPolygon
+    QPrintDialog
+    QPrintEngine
+    QPrinterInfo
+    QPrinter
+    QPrintPreviewDialog
+    QPrintPreviewWidget
+    QProgressBar
+    QProgressDialog
+    QProxyModel
+    QPushButton
+    QRadialGradient
+    QRadioButton
+    QRegExpValidator
+    QRegion
+    QResizeEvent
+    QRubberBand
+    QScrollArea
+    QScrollBar
+    QSessionManager
+    QShortcutEvent
+    QShortcut
+    QShowEvent
+    QSizeGrip
+    QSizePolicy
+    QSlider
+    QSortFilterProxyModel
+    QSound
+    QSpacerItem
+    QSpinBox
+    QSplashScreen
+    QSplitterHandle
+    QSplitter
+    QStackedLayout
+    QStackedWidget
+    QStandardItemModel
+    QStandardItem
+    QStatusBar
+    QStatusTipEvent
+    QStringListModel
+    QStyledItemDelegate
+    QStyleFactory
+    QStyleHintReturnMask
+    QStyleHintReturn
+    QStyleHintReturnVariant
+    QStyleOptionButton
+    QStyleOptionComboBox
+    QStyleOptionComplex
+    QStyleOptionDockWidget
+    QStyleOptionDockWidgetV2
+    QStyleOptionFocusRect
+    QStyleOptionFrame
+    QStyleOptionFrameV2
+    QStyleOptionGraphicsItem
+    QStyleOptionGroupBox
+    QStyleOptionHeader
+    QStyleOptionMenuItem
+    QStyleOptionProgressBar
+    QStyleOptionProgressBarV2
+    QStyleOptionRubberBand
+    QStyleOption
+    QStyleOptionSizeGrip
+    QStyleOptionSlider
+    QStyleOptionSpinBox
+    QStyleOptionTabBarBase
+    QStyleOptionTab
+    QStyleOptionTabV2
+    QStyleOptionTabWidgetFrame
+    QStyleOptionTitleBar
+    QStyleOptionToolBar
+    QStyleOptionToolBox
+    QStyleOptionToolBoxV2
+    QStyleOptionToolButton
+    QStyleOptionViewItem
+    QStyleOptionViewItemV2
+    QStyleOptionViewItemV3
+    QStyleOptionViewItemV4
+    QStylePainter
+    QStylePlugin
+    QStyle
+    QSyntaxHighlighter
+    QSystemTrayIcon
+    QTabBar
+    QTabletEvent
+    QTableView
+    QTableWidgetItem
+    QTableWidgetSelectionRange
+    QTableWidget
+    QTabWidget
+    QTextBlockFormat
+    QTextBlockGroup
+    QTextBlock_iterator
+    QTextBlock
+    QTextBlockUserData
+    QTextBrowser
+    QTextCharFormat
+    QTextCodecPlugin
+    QTextCursor
+    QTextDocumentFragment
+    QTextDocument
+    QTextEdit_ExtraSelection
+    QTextEdit
+    QTextFormat
+    QTextFragment
+    QTextFrameFormat
+    QTextFrame_iterator
+    QTextFrame
+    QTextImageFormat
+    QTextInlineObject
+    QTextItem
+    QTextLayout_FormatRange
+    QTextLayout
+    QTextLength
+    QTextLine
+    QTextListFormat
+    QTextList
+    QTextObjectInterface
+    QTextObject
+    QTextOption
+    QTextOption_Tab
+    QTextTableCellFormat
+    QTextTableCell
+    QTextTableFormat
+    QTextTable
+    QTimeEdit
+    QToolBarChangeEvent
+    QToolBar
+    QToolBox
+    QToolButton
+    QToolTip
+    QTransform
+    QTreeView
+    QTreeWidgetItemIterator
+    QTreeWidgetItem
+    QTreeWidget
+    QUndoCommand
+    QUndoGroup
+    QUndoStack
+    QUndoView
+    QValidator
+    QVBoxLayout
+    QWhatsThisClickedEvent
+    QWhatsThis
+    QWheelEvent
+    QWidgetAction
+    QWidgetItem
+    QWidget
+    QWindowsStyle
+    QWindowStateChangeEvent
+    QWizardPage
+    QWizard
+    QWorkspace
 )
--- a/examples/mainwindows/dockwidgets/build	Fri May 15 18:57:36 2009 +0000
+++ b/examples/mainwindows/dockwidgets/build	Sat May 16 17:12:06 2009 +0000
@@ -1,4 +1,4 @@
 #! /bin/bash
 #rcc mainwindow.qrc -o mainwindow_rcc.cpp
 #g++ -c -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I/usr/X11R6/include mainwindow_rcc.cpp
-dmd main.d mainwindow.d -I../../../ -L-L../../../lib -L-lqtdgui -L-lqtdcore -L-lQtCore -L-lQtGui
+dmd main.d mainwindow.d -I../../../ -I../../../qt/d1 -L-L../../../lib -L-lqtdgui -L-lqtdcore -L-lQtCore -L-lQtGui
--- a/generator/cppgenerator.cpp	Fri May 15 18:57:36 2009 +0000
+++ b/generator/cppgenerator.cpp	Sat May 16 17:12:06 2009 +0000
@@ -123,7 +123,7 @@
     // values because wrapper actually contains pointers
     if ((options & ForcePointer) && actual_indirections == 0
         && !type->isPrimitive() && !type->typeEntry()->isStructInD()
-        && type->name() != "QModelIndex")
+        && type->name() != "QModelIndex" && !type->isEnum())
         actual_indirections = 1;
 
     s << QString(actual_indirections, '*');
--- a/generator/cppimplgenerator.cpp	Fri May 15 18:57:36 2009 +0000
+++ b/generator/cppimplgenerator.cpp	Sat May 16 17:12:06 2009 +0000
@@ -496,10 +496,23 @@
         if (!interfaces.isEmpty()) {
             for (int i=0; i<interfaces.size(); ++i) {
                 AbstractMetaClass *iface = interfaces.at(i);
-                s << "extern \"C\" DLL_PUBLIC " << iface->qualifiedCppName() << "* qtd_" << java_class->name() << "_cast_to_" << iface->qualifiedCppName()
-                  << "(" << java_class->name() << " *ptr)" << endl << "{" << endl;
+
+                // in case of renamed class
+                InterfaceTypeEntry *ite = static_cast<InterfaceTypeEntry*>(iface->typeEntry());
+                QString real_name = ite->origin()->qualifiedCppName();
+
+
+
+                /*const TypeEntry* te = TypeDatabase::instance()->findType();
+                if(te)
+                    real_name = te->qualifiedCppName();
+                else
+                    real_name = iface->qualifiedCppName();*/
+
+                s << "extern \"C\" DLL_PUBLIC " << real_name << "* qtd_" << java_class->name() << "_cast_to_" << iface->qualifiedCppName()
+                  << "(" << java_class->qualifiedCppName() << " *ptr)" << endl << "{" << endl;
                 Indentation indent(INDENT);
-                s << INDENT << "return dynamic_cast<"<< iface->qualifiedCppName()<< "*>(ptr);" << endl;
+                s << INDENT << "return dynamic_cast<" << real_name << "*>(ptr);" << endl;
                 s << "}" << endl << endl;
             }
         }
@@ -1915,11 +1928,10 @@
 
             if (nativeArgCount > 0)
                 s << "," << endl << " ";
-            // if has QString argument we have to pass char* and str.length to QString constructor
-            if (argument->type()->isTargetLangString()
-                || (argument->type()->typeEntry() && argument->type()->typeEntry()->qualifiedCppName() == "QString")) {
-                s << QString("char* %1, uint %1_size").arg(arg_name);
-            } else if (d_type->isContainer()) {
+            // if QString argument we have to pass DArrat
+            if ((te && te->qualifiedCppName() == "QString") || d_type->isTargetLangString())
+                s << "string " << arg_name;
+            else if (d_type->isContainer()) {
                 const ContainerTypeEntry *cte =
                         static_cast<const ContainerTypeEntry *>(te);
                 if(isLinearContainer(cte))
@@ -2109,11 +2121,8 @@
             } else {
                 writeFunctionCall(s, qt_object_name, java_function, function_prefix, option,
                                   extra_param);
-/* qtd
-                s << INDENT << "QTJAMBI_DEBUG_TRACE(\"(native) -> leaving: "
-                  << java_function_signature << "\");" << endl;
-                  */
             }
+            writeRefArguments(s, java_function);
         }
     }
     if(!java_function->argumentReplaced(0).isEmpty()) {
@@ -2124,6 +2133,18 @@
     s << endl << endl;
 }
 
+void CppImplGenerator::writeRefArguments(QTextStream &s, const AbstractMetaFunction *java_function)
+{
+    AbstractMetaArgumentList arguments = java_function->arguments();
+    foreach (const AbstractMetaArgument *argument, arguments) {
+        AbstractMetaType *d_type = argument->type();
+        const TypeEntry *te = d_type->typeEntry();
+        if ((te && d_type->isNativePointer() && te->name() == "QString"))
+            s << QString("    _d_toUtf8(__qt_%1.utf16(), __qt_%1.size(), &%1);").arg(argument->indexedName()) << endl;
+    }
+}
+
+
 void CppImplGenerator::writeAssignment(QTextStream &s, const QString &destName, const QString &srcName,
                                        const AbstractMetaType *java_type)
 {
@@ -2196,7 +2217,7 @@
             s << qt_return_value << ";" << endl;
 
             writeQtToJava(s, getter->type(), tmp_name, java_return_value, 0, -1, EnumAsInts);
-            if (getter->type()->isTargetLangString())
+            if (getter->type()->isTargetLangString() || getter->type()->name() == "QModelIndex")
                 ;
             else if(getter->type()->typeEntry()->isStructInD())
                 s << INDENT << "return " << tmp_name << ";" << endl;
@@ -2250,9 +2271,11 @@
                 dest = "__qt_object->";
 
             QString src;
-            if (!argument->type()->isPrimitive() && !argument->type()->typeEntry()->isStructInD())
+            if (!argument->type()->isPrimitive() && !argument->type()->typeEntry()->isStructInD()) {
                 src = "__qt_" + argument->indexedName();
-            else
+            } else if (argument->type()->name() == "QModelIndex") {
+                src = "qtd_to_QModelIndex(" + argument->indexedName() + ")";
+            } else
                 src = argument->indexedName();
 
             if (setter->wasPublic())
@@ -2689,7 +2712,7 @@
         // empty
     } else if (java_type->typeEntry() && java_type->typeEntry()->qualifiedCppName() == "QString") {
         s << INDENT << "QString " << qt_name
-          << " = " << "QString::fromUtf8(" << java_name << ", " << java_name << "_size);" << endl;
+          << " = " << QString("QString::fromUtf8((const char *)%1.ptr, %1.length);").arg(java_name) << endl;
     } else if (java_type->isJObjectWrapper()) {
         s << INDENT << "JObjectWrapper " << qt_name
           << " = qtjambi_to_jobjectwrapper(__jni_env, " << java_name << ");" << endl;
@@ -2700,16 +2723,18 @@
         AbstractMetaType *elementType = java_type->arrayElementType();
 
         // ### Don't assert on wrong array lengths
-        s << INDENT << "Q_ASSERT(__jni_env->GetArrayLength((jarray) " << java_name << ") == " << java_type->arrayElementCount() << ");" << endl;
+//        s << INDENT << "Q_ASSERT(__jni_env->GetArrayLength((jarray) " << java_name << ") == " << java_type->arrayElementCount() << ");" << endl;
         s << INDENT;
         writeTypeInfo(s, elementType);
-        s << " " << qt_name << "[" << java_type->arrayElementCount() << "];" << endl;
-
+        s << " *" << qt_name << " = (";
+        writeTypeInfo(s, elementType);
+        s << "*) " << java_name << ";" << endl;
+/*
         s << INDENT << "__jni_env->" << getXxxArrayRegion(elementType) << "( (" << translateType(java_type, options)
           << ")" << java_name << ", 0, " << java_type->arrayElementCount() << ", "
           << "(" << translateType(elementType, options) << " *" << ")"
           << qt_name << ");" << endl;
-
+*/
     } else if (java_type->isArray()) {
         AbstractMetaType *elementType = java_type->arrayElementType();
 
@@ -2751,7 +2776,7 @@
         }
 
         if ((options & EnumAsInts) == 0 && (java_type->isTargetLangEnum() || java_type->isTargetLangFlags())) {
-            s << "qtjambi_to_enumerator(__jni_env, " << java_name << ");" << endl;
+            s << java_name << ";" << endl;
 
         } else if (options & BoxedPrimitive) {
             const PrimitiveTypeEntry *pentry = TypeDatabase::instance()->findTargetLangPrimitiveType("int");
@@ -2961,7 +2986,7 @@
                 << qt_name << ";" << endl; // do nothing
     } else if (java_type->isArray() && java_type->arrayElementType()->isPrimitive()) {
         AbstractMetaType *elementType = java_type->arrayElementType();
-
+/* qtd
         s << INDENT << translateType(java_type, option) << " " << java_name << " = __jni_env->" << newXxxArray(elementType)
           << "(" << java_type->arrayElementCount() << ");" << endl;
 
@@ -2970,7 +2995,8 @@
           << ", 0, " << java_type->arrayElementCount() << ", "
           << "(" << translateType(elementType, option) << " *" << ")"
           << qt_name << ");" << endl;
-
+*/
+        s << INDENT << translateType(java_type, option) << " " << java_name << " = " << qt_name << ";" <<endl;
     } else if (java_type->isArray()) {
         AbstractMetaType *elementType = java_type->arrayElementType();
 
@@ -3363,12 +3389,11 @@
             {
                 Indentation indent(INDENT);
                 if(targ->isTargetLangString())
-                    s << INDENT << "char* __d_element;" << endl
-                      << INDENT << "size_t __d_element_size;" << endl
-                      << INDENT << "qtd_get_string_from_array(" << java_name << ", i, &__d_element, &__d_element_size);" << endl;
+                    s << INDENT << "string __d_element;" << endl
+                      << INDENT << "qtd_get_string_from_array(" << java_name << ", i, &__d_element);" << endl;
                 else {
                     s << INDENT;
-                    writeTypeInfo(s, targ, Option(VirtualDispatch | ForcePointer));
+                    writeTypeInfo(s, targ, Option(VirtualDispatch | ForcePointer | EnumAsInts));
                     QString cast_string = "";
                     const TypeEntry* centry = targ->typeEntry();
                     if (centry->isComplex() && (centry->isObject() || centry->isValue() || centry->isInterface()))
@@ -3619,27 +3644,28 @@
         || java_type->isTargetLangString()
         || java_type->isVariant()
         || java_type->isJObjectWrapper()
-        || java_type->isTargetLangChar()
-        || java_type->isArray()) {
+        || java_type->isTargetLangChar()) {
         return d_name;
+    } else if (java_type->isArray()) {
+        return java_type->arrayElementType()->name() + "*";
     } else if (java_type->isIntegerEnum() || java_type->isIntegerFlags()
-               || ((option & EnumAsInts) && (java_type->isEnum() || java_type->isFlags()))) {
-         return "int";
-     } else if (java_type->isReference()) {
-         if (java_type->typeEntry()->isValue())
-             return "void*";
-         else
-             return d_name + " "+ QString(java_type->actualIndirections(), '*');
-     } else if (java_type->isNativePointer()) {
-         if (java_type->typeEntry()->isValue())
-             return "void*";
-         else if (java_type->typeEntry()->isEnum() && d_export)
-             return "int" + QString(java_type->indirections(), '*');
-         else
-             return d_name + QString(java_type->indirections(), '*');
-     } else {
-         return d_name + QString(java_type->indirections(), '*');
-     }
+        || ((option & EnumAsInts) && (java_type->isEnum() || java_type->isFlags()))) {
+        return "int";
+    } else if (java_type->isReference()) {
+        if (java_type->typeEntry()->isValue())
+            return "void*";
+        else
+            return d_name + " "+ QString(java_type->actualIndirections(), '*');
+    } else if (java_type->isNativePointer()) {
+        if (java_type->typeEntry()->isValue())
+            return "void*";
+        else if (java_type->typeEntry()->isEnum() && d_export)
+            return "int" + QString(java_type->indirections(), '*');
+        else
+            return d_name + QString(java_type->indirections(), '*');
+    } else {
+        return d_name + QString(java_type->indirections(), '*');
+    }
  }
 
 void CppImplGenerator::writeExtraIncludes(QTextStream &s, const AbstractMetaClass *java_class)
--- a/generator/cppimplgenerator.h	Fri May 15 18:57:36 2009 +0000
+++ b/generator/cppimplgenerator.h	Sat May 16 17:12:06 2009 +0000
@@ -211,7 +211,7 @@
     void writeSignalsHandling(QTextStream &s, const AbstractMetaClass *java_class);
     void writeSignalHandler(QTextStream &s, const AbstractMetaClass *java_class, AbstractMetaFunction *signal);
     static void writeInitCallbacks(QTextStream &s, const AbstractMetaClass *java_class);
-
+    void writeRefArguments(QTextStream &s, const AbstractMetaFunction *java_function);
 
 private:
     void writeDefaultConstructedValues_helper(QSet<QString> &values,
--- a/generator/dgenerator.cpp	Fri May 15 18:57:36 2009 +0000
+++ b/generator/dgenerator.cpp	Sat May 16 17:12:06 2009 +0000
@@ -71,7 +71,8 @@
                   << "QLatin1String" << "unsigned long long" << "signed int"
                   << "signed short" << "Array" << "GLuint" << "GLenum" << "GLint"
                   << "unsigned long" << "ulong" << "long" << "QByteRef"
-                  << "QStringList" << "QList" << "QVector" << "QPair";
+                  << "QStringList" << "QList" << "QVector" << "QPair"
+                  << "QSet";
 }
 
 QString DGenerator::fileNameForClass(const AbstractMetaClass *d_class) const
@@ -125,7 +126,9 @@
 
     if (!d_type) {
         s = "void";
-    } else if (d_type->typeEntry() && d_type->typeEntry()->qualifiedCppName() == "QString") {
+    } else if (d_type->typeEntry()->qualifiedCppName() == "QChar")
+        s = "wchar" + QString(d_type->actualIndirections(), '*');
+    else if (d_type->typeEntry() && d_type->typeEntry()->qualifiedCppName() == "QString") {
         s = "string";
     } else if (d_type->isArray()) {
         s = translateType(d_type->arrayElementType(), context) + "[]";
@@ -455,10 +458,11 @@
     CppImplGenerator::writeFinalFunctionArguments(s, d_function, true); // qtd
 
     // Make sure people don't call the private functions
+    // qtd remember name QNoImplementationException
     if (d_function->isEmptyFunction()) {
         s << endl
           << INDENT << "{" << endl
-          << INDENT << "// qtd2    throw new qt.QNoImplementationException();" << endl
+          << INDENT << "    throw new Exception(\"No Implementation Exception\");" << endl
           << INDENT << "}" << endl << endl;
     } else {
         s << ";" << endl;
@@ -658,14 +662,14 @@
 //    bool needs_return_variable = has_return_type
 //        && (owner != TypeSystem::InvalidOwnership || referenceCounts.size() > 0 || has_code_injections_at_the_end);
 
-    if(d_function->type()) { // qtd
-        if (d_function->type()->isTargetLangString())
+    if(return_type) { // qtd
+        if (return_type->isTargetLangString())
             s << INDENT << "string res;" << endl;
 
-        if(d_function->type()->name() == "QModelIndex")
+        if(return_type->name() == "QModelIndex")
             s << INDENT << "QModelIndex res;" << endl;
 
-        if(d_function->type()->isContainer())
+        if(return_type->isContainer())
             s << INDENT << this->translateType(d_function->type(), d_function->ownerClass(), NoOption) << " res;" << endl;
     }
 
@@ -686,14 +690,16 @@
             s << " __qt_return_value = ";
         }*/ else if (d_function->isConstructor()) { // qtd
             s << "void* __qt_return_value = ";
-        } else if (d_function->type() && d_function->type()->isValue()  && !d_function->type()->typeEntry()->isStructInD()) {
+        } else if (return_type && return_type->isValue()  && !return_type->typeEntry()->isStructInD()) {
             s << "void* __qt_return_value = ";
-        } else if (d_function->type() && d_function->type()->isVariant())
+        } else if (return_type && return_type->isVariant()) {
             s << "void* __qt_return_value = ";
-        else if ( d_function->type() && ( d_function->type()->isObject() ||
-                   (d_function->type()->isNativePointer() && d_function->type()->typeEntry()->isValue()) ||
-                    d_function->type()->typeEntry()->isInterface()) ) {
+        } else if (return_type && ( return_type->isObject() ||
+                  (return_type->isNativePointer() && return_type->typeEntry()->isValue()) ||
+                   return_type->typeEntry()->isInterface()) ) {
             s << "void* __qt_return_value = ";
+        } else if (return_type && return_type->isArray()) {
+            s << return_type->arrayElementType()->name() + "* __qt_return_value = ";
         } else {
             s << "return ";
         }
@@ -788,13 +794,17 @@
                 s << arg_name << " is null ? null : " << arg_name << ".__ptr_" << te->designatedInterface()->name();
             else if (modified_type == "string" /* && type->fullName() == "char" */) {
                 s << "toStringz(" << arg_name << ")";
-            } else if(type->isContainer()) {
+            } else if (type->isArray())
+                s << arg_name << ".ptr";
+            else if(type->isContainer()) {
                 const ContainerTypeEntry *cte =
                         static_cast<const ContainerTypeEntry *>(te);
                 if(isLinearContainer(cte))
                     s << QString("%1.ptr, %1.length").arg(arg_name);
-            } else if (type->isTargetLangString() || (te && te->qualifiedCppName() == "QString"))
-                s << QString("%1.ptr, %1.length").arg(arg_name);
+            } else if (type->typeEntry()->qualifiedCppName() == "QChar")
+                s << arg_name;
+            else if (type->isTargetLangString() || (te && te->qualifiedCppName() == "QString"))
+                s << arg_name;
             else if (type->isTargetLangEnum() || type->isTargetLangFlags()) {
                 s << arg_name;
 // qtd                s << arg->argumentName() << ".value()";
@@ -841,7 +851,7 @@
     s << ";" << endl;
 
     // return value marschalling
-    if(d_function->type()) {
+    if(return_type) {
         if ( ( has_return_type && d_function->argumentReplaced(0).isEmpty() )/* || d_function->isConstructor()*/) // qtd
             if(d_function->type()->isQObject()) {
 
@@ -862,27 +872,27 @@
         }
 
 
-        if (d_function->type()->isValue() && !d_function->type()->typeEntry()->isStructInD())
+        if (return_type->isValue() && !return_type->typeEntry()->isStructInD())
             s << INDENT << "return new " << d_function->type()->name() << "(__qt_return_value, false);" << endl;
 
-        if (d_function->type()->isVariant())
+        if (return_type->isVariant())
             s << INDENT << "return new QVariant(__qt_return_value, false);" << endl;
 
-        if (d_function->type()->isNativePointer() && d_function->type()->typeEntry()->isValue())
-            s << INDENT << "return new " << d_function->type()->name() << "(__qt_return_value, true);" << endl;
-
-        if (d_function->type()->isObject()) {
+        if (return_type->isNativePointer() && return_type->typeEntry()->isValue())
+            s << INDENT << "return new " << return_type->name() << "(__qt_return_value, true);" << endl;
+
+        if (return_type->isObject()) {
             if(d_function->storeResult())
                 s << INDENT << QString("__m_%1.nativeId = __qt_return_value;").arg(d_function->name()) << endl
                         << INDENT << QString("return __m_%1;").arg(d_function->name()) << endl;
             else {
-                QString type_name = d_function->type()->name();
+                QString type_name = return_type->name();
                 const ComplexTypeEntry *ctype = static_cast<const ComplexTypeEntry *>(d_function->type()->typeEntry());
                 if(ctype->isAbstract())
                     type_name = type_name + "_ConcreteWrapper";
 
                 QString return_type_name = d_function->type()->name();
-                if(d_function->type()->typeEntry()->designatedInterface())
+                if(return_type->typeEntry()->designatedInterface())
                     return_type_name = d_function->type()->typeEntry()->designatedInterface()->name();
 
                 AbstractMetaClass *classForTypeEntry = NULL;
@@ -899,7 +909,7 @@
                 // if class has virtual functions then it has classname_entity function so
                 // we can look for D Object pointer. otherwise create new wrapper
                 if (classForTypeEntry != NULL && classForTypeEntry->hasVirtualFunctions()) {
-                    s << INDENT << "void* d_obj = __" << d_function->type()->name() << "_entity(__qt_return_value);" << endl
+                    s << INDENT << "void* d_obj = __" << return_type->name() << "_entity(__qt_return_value);" << endl
                             << INDENT << "if (d_obj !is null) {" << endl
                             << INDENT << "    auto d_obj_ref = cast (Object) d_obj;" << endl
                             << INDENT << "    return cast(" << return_type_name << ") d_obj_ref;" << endl
@@ -916,6 +926,10 @@
             }
             s << endl;
         }
+
+        if (return_type->isArray()) {
+            s << INDENT << "return __qt_return_value[0 .. " << return_type->arrayElementCount() << "];" << endl;
+        }
     }
     writeInjectedCode(s, d_function, CodeSnip::End);
 /* qtd2
@@ -1044,12 +1058,14 @@
         Indentation indent(INDENT);
         switch (refCount.action) {
         case ReferenceCount::Add:
+            s << INDENT << refCountVariableName << " ~= cast(Object) " << argumentName << ";" << endl;
+            break;
         case ReferenceCount::AddAll:
             s << INDENT << refCountVariableName << " ~= " << argumentName << ";" << endl;
             break;
         case ReferenceCount::Remove:
             s << INDENT << "remove(" << refCountVariableName
-              << ", " << argumentName << ");" << endl;
+              << ", cast(Object) " << argumentName << ");" << endl;
             break;
         case ReferenceCount::Set:
             {
@@ -1532,7 +1548,8 @@
     else if (type->isEnum()) {
         const EnumTypeEntry *te = static_cast<const EnumTypeEntry *>(type);
         TypeEntry *ownerTe = TypeDatabase::instance()->findType(te->qualifier());
-        typeEntriesEnums << ownerTe;
+        if(ownerTe)
+            typeEntriesEnums << ownerTe;
         return NULL;
 //        return ownerTe;
     } else if (type->isFlags()) {
@@ -1661,7 +1678,7 @@
     if(d_class->baseClass() && d_class->baseClass()->typeEntry() == typeEntry)
         visibility = "public";*/
     QString visibility = "public";
-    s << QString("%1 import ").arg(visibility) << typeEntry->javaPackage() << "." << typeEntry->name() << ";" << endl;
+    s << QString("%1 import ").arg(visibility) << typeEntry->javaPackage() << "." << typeEntry->targetLangName() << ";" << endl;
 }
 
 void DGenerator::writeRequiredImports(QTextStream &s, const AbstractMetaClass *d_class)
@@ -2096,11 +2113,11 @@
                 s << "protected"; // friendly
             }
 
+            } // qtd2
+
             if (isStatic)
                 s << "static ";
 
-            } // qtd2
-
             if (actions != ReferenceCount::Set && actions != ReferenceCount::Ignore) {
                 s << "Object[] " << variableName << ";" << endl;
 /*
@@ -2801,11 +2818,14 @@
                 if(type->isEnum())
                     s << INDENT << "auto " << arg_name << "_enum = cast("
                                 << type->typeEntry()->qualifiedTargetLangName() << ") " << arg_name << ";";
+                else if (type->typeEntry()->qualifiedCppName() == "QChar")
+                    s << INDENT << "auto " << arg_name << "_d_ref = cast(wchar" << QString(type->actualIndirections(), '*')
+                                << ") " << arg_name << ";";
                 else if (type->isTargetLangString())
                     s << INDENT << "string " << arg_name << "_d_ref = toString("
                                 << arg_name << "[0.." << arg_name << "_size]);";
                 else if (type->typeEntry()->isValue() && type->isNativePointer() && type->typeEntry()->name() == "QString") {
-                    s << INDENT << "scope " << arg_name << "_d_qstr = new QString(" << arg_name << ", true);" << endl
+                    s << INDENT << "auto " << arg_name << "_d_qstr = QString(" << arg_name << ", true);" << endl
                       << INDENT << "string " << arg_name << "_d_ref = " << arg_name << "_d_qstr.toNativeString();";
                 } else if(type->isVariant())
                     s << INDENT << "scope " << arg_name << "_d_ref = new QVariant(" << arg_name << ", true);";
--- a/generator/generator.cpp	Fri May 15 18:57:36 2009 +0000
+++ b/generator/generator.cpp	Sat May 16 17:12:06 2009 +0000
@@ -161,7 +161,8 @@
         if (c_entry->type() == ContainerTypeEntry::MapContainer ||
             c_entry->type() == ContainerTypeEntry::MultiMapContainer ||
             c_entry->type() == ContainerTypeEntry::MapContainer ||
-            c_entry->type() == ContainerTypeEntry::MultiHashContainer)
+            c_entry->type() == ContainerTypeEntry::MultiHashContainer ||
+            c_entry->type() == ContainerTypeEntry::SetContainer)
             return true;
 
         QList<AbstractMetaType *> args = d_type->instantiations();
--- a/generator/typesystem_core.xml	Fri May 15 18:57:36 2009 +0000
+++ b/generator/typesystem_core.xml	Sat May 16 17:12:06 2009 +0000
@@ -4,17 +4,13 @@
     qt.Utilities.loadQtLibrary("QtCore");
     </inject-code>
 <template name="core.return_string_instead_of_char*">
-        public final String %FUNCTION_NAME() {
-            QNativePointer np = %FUNCTION_NAME_private();
-            String returned = "";
-            int i=0;
-            while (np.byteAt(i) != 0) returned += (char) np.byteAt(i++);
-            return returned;
+        public final string %FUNCTION_NAME() {
+            return fromStringz(%FUNCTION_NAME_private());
         }
     </template>
 <template name="core.call_with_string_instead_of_char*">
-        public final void %FUNCTION_NAME(String %ARG_NAME) {
-            %FUNCTION_NAME(QNativePointer.createCharPointer(%ARG_NAME));
+        public final void %FUNCTION_NAME(string %ARG_NAME) {
+            %FUNCTION_NAME(%ARG_NAME is null? null : toStringz(%ARG_NAME));
         }
     </template>
 <template name="core.private_function_return_self">
@@ -2012,7 +2008,7 @@
         </inject-code>
 
         <modify-function signature="convertFromUnicode(const QChar*,int,QTextCodec::ConverterState*)const">
-            <modify-argument index="3" invalidate-after-use="yes"/>
+<!--            <modify-argument index="3" invalidate-after-use="yes"/>
             <modify-argument index="1">
                 <replace-type modified-type="string"/>
                 <conversion-rule class="shell">
@@ -2041,9 +2037,9 @@
                         <replace from="%JAVATYPE" to="Char"/>
                     </insert-template>
                 </conversion-rule>
-            </modify-argument>
+            </modify-argument> -->
         </modify-function>
-
+<!--
         <modify-function signature="convertToUnicode(const char*,int,QTextCodec::ConverterState*)const">
             <modify-argument index="3" invalidate-after-use="yes"/>
             <modify-argument index="1">
@@ -2074,7 +2070,7 @@
                 </conversion-rule>
             </modify-argument>
         </modify-function>
-
+-->
         <modify-function signature="codecForName(const char*)  ">
             <access modifier="private"/>
         </modify-function>
--- a/generator/typesystem_gui-java.java	Fri May 15 18:57:36 2009 +0000
+++ b/generator/typesystem_gui-java.java	Sat May 16 17:12:06 2009 +0000
@@ -223,27 +223,22 @@
 }// class
 
 class QTreeWidgetItemIterator___ extends QTreeWidgetItemIterator {
-    @QtBlockedSlot
-    public final void next(int i) {
-        operator_add_assign(i);
+    public final QTreeWidgetItemIterator opAddAssign(int i) {
+        return operator_add_assign(i);
     }
 
-    @QtBlockedSlot
-    public final void previous(int i) {
-        operator_subtract_assign(i);
+    public final QTreeWidgetItemIterator opSubAssign(int i) {
+        return operator_subtract_assign(i);
     }
 
-    @QtBlockedSlot
-    public final void next() {
-        operator_increment();
+    public final QTreeWidgetItemIterator next() {
+        return operator_increment();
     }
 
-    @QtBlockedSlot
-    public final void previous() {
-        operator_decrement();
+    public final QTreeWidgetItemIterator previous() {
+        return operator_decrement();
     }
 
-    @QtBlockedSlot
     public final QTreeWidgetItem current() {
         return operator_multiply();
     }
@@ -593,7 +588,7 @@
 }// class
 
 class QDesktopServices___ extends QDesktopServices {
-
+/*
     private static java.util.Hashtable<String, InternalUrlHandler> __rcUrlHandlers = new java.util.Hashtable<String, InternalUrlHandler>();
 
     public static interface UrlHandler {
@@ -623,17 +618,13 @@
             __rcUrlHandlers.put(scheme, receiver);
         setUrlHandler(scheme, receiver, QNativePointer.createCharPointer("handleUrl"));
     }
-
+*/
 }// class
 
 class QWizardPage___ extends QWizardPage {
 
-    protected final void registerField(String name, QWidget widget) {
-        registerField(name, widget, (qt.QNativePointer) null, (qt.QNativePointer) null);
-    }
-
-    protected final void registerField(String name, QWidget widget, String property) {
-        registerField(name, widget, QNativePointer.createCharPointer(property), null);
+    protected final void registerField(string name, QWidget widget, string property = null) {
+        registerField(name, widget, property is null ? null : toStringz(property), null);
     }
 
     /**
@@ -675,7 +666,7 @@
      * @see qt.gui.QWizardPage#field
      * @see qt.gui.QWizardPage#setField
      */
-    protected final void registerField(String name, QWidget widget, String property, String changedSignal) {
+/*    protected final void registerField(String name, QWidget widget, String property, String changedSignal) {
         String signalSignature = qt.internal.MetaObjectTools.cppSignalSignature(widget, changedSignal);
         if (signalSignature.length() == 0)
             throw new QNoSuchSignalException("Signal '" + changedSignal
@@ -683,7 +674,7 @@
         registerField(name, widget, qt.QNativePointer.createCharPointer(property), qt.QNativePointer
                 .createCharPointer(qt.internal.QtJambiInternal.SignalPrefix + signalSignature));
     }
-
+*/
 }// class
 
 class QFontDialog___ extends QFontDialog {
@@ -733,11 +724,7 @@
 
 class QShortcut___ extends QShortcut {
 
-    public QShortcut(QKeySequence key, QWidget parent) {
-        this(key, parent, null, null, qt.core.Qt.ShortcutContext.WindowShortcut);
-    }
-
-    public QShortcut(QKeySequence key, QWidget parent, qt.core.Qt.ShortcutContext context) {
+    public this(QKeySequence key, QWidget parent, Qt.ShortcutContext context = Qt.WindowShortcut) {
         this(key, parent, null, null, context);
     }
 
@@ -891,14 +878,14 @@
     public static string getOpenFileName(QWidget _parent, string caption = null, string dir = null, string filter = null) {
         string res;
         string _selectedFilter = "";
-        qtd_QFileDialog_getOpenFileName_QWidget_string_string_string_nativepointerstring_Options(&res, _parent is null ? null : _parent.nativeId, caption.ptr, caption.length, dir.ptr, dir.length, filter.ptr, filter.length, _selectedFilter.ptr, _selectedFilter.length, 0);
+        qtd_QFileDialog_getOpenFileName_QWidget_string_string_string_nativepointerstring_Options(&res, _parent is null ? null : _parent.nativeId, caption, dir, filter, _selectedFilter, 0);
         return res;
     }
     
     public static string getSaveFileName(QWidget _parent, string caption = null, string dir = null, string filter = null) {
         string res;
         string _selectedFilter = "";
-        qtd_QFileDialog_getSaveFileName_QWidget_string_string_string_nativepointerstring_Options(&res, _parent is null ? null : _parent.nativeId, caption.ptr, caption.length, dir.ptr, dir.length, filter.ptr, filter.length, _selectedFilter.ptr, _selectedFilter.length, 0);
+        qtd_QFileDialog_getSaveFileName_QWidget_string_string_string_nativepointerstring_Options(&res, _parent is null ? null : _parent.nativeId, caption, dir, filter, _selectedFilter, 0);
         return res;
     }
     
@@ -1718,3 +1705,25 @@
     }*/
 
 }// class
+
+class QInputDialog___ extends QInputDialog {
+    private static double getDouble(QWidget _parent, string title, string label, double value = 0, double minValue = -2147483647, double maxValue = 2147483647, int decimals = 1, ref bool ok = false, int flags = 0) {
+        return qtd_QInputDialog_getDouble_private_QWidget_string_string_double_double_double_int_nativepointerbool_WindowFlags(_parent is null ? null : _parent.nativeId, title, label, value, minValue, maxValue, decimals, &ok, flags);
+    }
+
+    private static int getInt(QWidget _parent, string title, string label, int value = 0, int minValue = -2147483647, int maxValue = 2147483647, int step = 1, ref bool ok = false, int flags = 0) {
+        return qtd_QInputDialog_getInt_private_QWidget_string_string_int_int_int_int_nativepointerbool_WindowFlags(_parent is null ? null : _parent.nativeId, title, label, value, minValue, maxValue, step, &ok, flags);
+    }
+
+    private static string getItem(QWidget _parent, string title, string label, string[] items, int current = 0, bool editable = true, ref bool ok = false, int flags = 0) {
+        string res;
+        qtd_QInputDialog_getItem_private_QWidget_string_string_List_int_bool_nativepointerbool_WindowFlags(&res, _parent is null ? null : _parent.nativeId, title, label, items.ptr, items.length, current, editable, &ok, flags);
+        return res;
+    }
+
+    private static string getText(QWidget _parent, string title, string label, QLineEdit_EchoMode echo = QLineEdit_EchoMode.Normal, string text = null, ref bool ok = false, int flags = 0) {
+        string res;
+        qtd_QInputDialog_getText_private_QWidget_string_string_EchoMode_string_nativepointerbool_WindowFlags(&res, _parent is null ? null : _parent.nativeId, title, label, echo, text, &ok, flags);
+        return res;
+    }
+}// class
--- a/generator/typesystem_gui.xml	Fri May 15 18:57:36 2009 +0000
+++ b/generator/typesystem_gui.xml	Sat May 16 17:12:06 2009 +0000
@@ -2,7 +2,81 @@
 <typesystem package="qt.gui" default-superclass="QtDObject">
 <inject-code>
         qt.Utilities.loadQtLibrary("QtGui");
+</inject-code>
+
+<template name="gui.class_from_variant_java">
+    public this(QVariant arg__1) {
+        void* __qt_return_value = qtd_%CLASS_NAME_%CLASS_NAME_QVariant(cast(void*) this, arg__1 is null ? null : arg__1.nativeId);
+        super(__qt_return_value);
+    }
+</template>
+
+<template name="gui.class_from_variant_java_free">
+private extern (C) void* qtd_%CLASS_NAME_%CLASS_NAME_QVariant(void *d_ptr,
+ void* arg__1);
+</template>
+
+<template name="gui.class_from_variant_native">
+// %CLASS_NAME from QVariant
+extern "C" DLL_PUBLIC void* qtd_%CLASS_NAME_%CLASS_NAME_QVariant
+(void *d_ptr,
+ void* arg__1)
+{
+    const QVariant&amp;  __qt_arg__1 = (const QVariant&amp; ) *(QVariant *)arg__1;
+    %CLASS_NAME __qt_casted = qvariant_cast&lt;%CLASS_NAME&gt;(__qt_arg__1);
+    %CLASS_NAME *__qt_this = new %CLASS_NAME((const %CLASS_NAME&amp; )__qt_casted);
+    return (void *) __qt_this;
+}
+</template>
+
+<template name="gui.class_from_variant_native_shell">
+// %CLASS_NAME from QVariant
+extern "C" DLL_PUBLIC void* qtd_%CLASS_NAME_%CLASS_NAME_QVariant
+(void *d_ptr,
+ void* arg__1)
+{
+    const QVariant&amp;  __qt_arg__1 = (const QVariant&amp; ) *(QVariant *)arg__1;
+    %CLASS_NAME __qt_casted = qvariant_cast&lt;%CLASS_NAME&gt;(__qt_arg__1);
+    %CLASS_NAME_QtDShell *__qt_this = new %CLASS_NAME_QtDShell(d_ptr, (const %CLASS_NAME&amp; )__qt_casted);
+    return (void *) __qt_this;
+}
+</template>
+<!-- without shell
+    <inject-code class="java">
+        <insert-template name="gui.class_from_variant_java">
+            <replace from="%CLASS_NAME" to=""/>
+        </insert-template>
+    </inject-code>   
+    <inject-code class="java-free">
+        <insert-template name="gui.class_from_variant_java_free">
+            <replace from="%CLASS_NAME" to=""/>
+        </insert-template>
     </inject-code>
+    <inject-code class="native">
+        <insert-template name="gui.class_from_variant_native">
+            <replace from="%CLASS_NAME" to=""/>
+        </insert-template>
+    </inject-code>
+    
+  with shell
+    <inject-code class="java">
+        <insert-template name="gui.class_from_variant_java">
+            <replace from="%CLASS_NAME" to=""/>
+        </insert-template>
+    </inject-code>   
+    <inject-code class="java-free">
+        <insert-template name="gui.class_from_variant_java_free">
+            <replace from="%CLASS_NAME" to=""/>
+        </insert-template>
+    </inject-code>
+    <inject-code class="native">
+        <insert-template name="gui.class_from_variant_native_shell">
+            <replace from="%CLASS_NAME" to=""/>
+        </insert-template>
+    </inject-code>
+-->
+
+        
 <template name="gui.getter_returning_nativepointer">
         public final %RETURN_TYPE %FUNCTION_NAME() {
             QNativePointer np = %FUNCTION_NAME_private();
@@ -147,7 +221,9 @@
 
   <rejection class="*" field-name="d_ptr"/>
   <rejection class="*" field-name="d"/>
-
+  
+  <rejection class="QAccessibleTableInterface"/>
+  
   <rejection class="QWindowsCEStyle"/>
   <rejection class="QWindowsMobileStyle"/>
   <rejection class="QAbstractUndoItem"/>
@@ -1189,6 +1265,24 @@
     </value-type>
 
   <value-type name="QIcon" delete-in-main-thread="yes">
+
+    <inject-code class="java">
+        <insert-template name="gui.class_from_variant_java">
+            <replace from="%CLASS_NAME" to="QIcon"/>
+        </insert-template>
+
+    </inject-code>   
+    <inject-code class="java-free">
+        <insert-template name="gui.class_from_variant_java_free">
+            <replace from="%CLASS_NAME" to="QIcon"/>
+        </insert-template>
+    </inject-code>
+    <inject-code class="native">
+        <insert-template name="gui.class_from_variant_native">
+            <replace from="%CLASS_NAME" to="QIcon"/>
+        </insert-template>
+    </inject-code>
+
     <modify-function signature="operator=(QIcon)" remove="all"/>
     <modify-function signature="serialNumber()const" remove="all"/> <!--### Obsolete in 4.3-->
     <modify-function signature="QIcon(QIconEngineV2 *)">
@@ -1288,26 +1382,19 @@
         </extra-includes>
         
     <inject-code class="java">
-    public this(QVariant arg__1) {
-        void* __qt_return_value = qtd_QPixmap_QPixmap_QPixmap(cast(void*) this, arg__1 is null ? null : arg__1.nativeId);
-        super(__qt_return_value);
-    }
-    </inject-code>
+        <insert-template name="gui.class_from_variant_java">
+            <replace from="%CLASS_NAME" to="QPixmap"/>
+        </insert-template>
+    </inject-code>   
     <inject-code class="java-free">
-private extern (C) void* qtd_QPixmap_QPixmap_QVariant(void *d_ptr,
- void* arg__1);
+        <insert-template name="gui.class_from_variant_java_free">
+            <replace from="%CLASS_NAME" to="QPixmap"/>
+        </insert-template>
     </inject-code>
     <inject-code class="native">
-// QPixmap from QVariant
-extern "C" DLL_PUBLIC void* qtd_QPixmap_QPixmap_QVariant
-(void *d_ptr,
- void* arg__1)
-{
-    const QVariant&amp;  __qt_arg__1 = (const QVariant&amp; ) *(QVariant *)arg__1;
-    QPixmap __qt_casted = qvariant_cast&lt;QPixmap&gt;(__qt_arg__1);
-    QPixmap_QtDShell *__qt_this = new QPixmap_QtDShell(d_ptr, (const QPixmap&amp; )__qt_casted);
-    return (void *) __qt_this;
-}
+        <insert-template name="gui.class_from_variant_native_shell">
+            <replace from="%CLASS_NAME" to="QPixmap"/>
+        </insert-template>
     </inject-code>
 
         <modify-function signature="save(QIODevice *, const char *, int) const">
@@ -1894,13 +1981,14 @@
         </inject-code>
     </value-type>
 
-  <value-type name="QFontMetricsF" delete-in-main-thread="yes" expense-cost="1" expense-limit="1000">
-    <custom-constructor>
+  <value-type name="QFontMetricsF" delete-in-main-thread="yes"> <!-- expense-cost="1" expense-limit="1000"> -->
+<!--    <custom-constructor>
         return new QFontMetricsF(*copy);
     </custom-constructor>
     <custom-destructor>
         delete copy;
     </custom-destructor>
+    -->
     <modify-function signature="operator!=(const QFontMetricsF &amp;)">
         <remove/>
     </modify-function>
@@ -2399,7 +2487,7 @@
     </modify-function>
   </object-type>
   <object-type name="QAccessible2Interface"/>
-  <object-type name="QAccessibleTableInterface">
+<!--  <object-type name="QAccessibleTableInterface">
     <modify-function signature="qAccessibleTableCastHelper()" remove="all"/>
   
         <inject-code>
@@ -2605,7 +2693,8 @@
             </conversion-rule>
         </modify-argument>
         </modify-function>
-    </object-type>
+
+    </object-type>         -->
 
   <object-type name="QAccessibleInterface">
     <modify-function signature="indexOfChild(const QAccessibleInterface*)const">
@@ -2614,7 +2703,10 @@
     <modify-function signature="relationTo(int,const QAccessibleInterface*,int)const">
         <modify-argument invalidate-after-use="yes" index="2"/>
     </modify-function>
-  
+    
+<!--    <modify-function signature="navigate(QAccessible::RelationFlag,int,QAccessibleInterface**)const" remove="all"/> --><!-- TODO -->
+
+<!--  
         <inject-code>
             <import-file name="typesystem_gui-java.java" quote-after-line="class QAccessibleInterface___" quote-before-line="}// class"/>
         </inject-code>
@@ -2673,6 +2765,7 @@
                 </conversion-rule>
             </modify-argument>
         </modify-function>
+        -->
     </object-type>
   <object-type name="QAccessibleInterfaceEx"/>
   <object-type name="QAccessibleObject"/>
@@ -2766,6 +2859,7 @@
 
     <modify-function signature="setExtension(QWidget*)" remove="all"/>
     <modify-function signature="exec()" access="non-final"/>
+    <modify-function signature="open()" virtual-slot="yes" />
     <modify-function signature="extension()const" remove="all"/> <!--### Obsolete in 4.3-->
     <modify-function signature="orientation()const" remove="all"/> <!--### Obsolete in 4.3-->
     <modify-function signature="setOrientation(Qt::Orientation)" remove="all"/> <!--### Obsolete in 4.3-->
@@ -2834,23 +2928,25 @@
 
     </object-type>
   <object-type name="QFocusFrame">
-    <modify-function signature="initStyleOption(QStyleOption*)const">
+<!--    <modify-function signature="initStyleOption(QStyleOption*)const">
         <access modifier="private"/>
-    </modify-function>
+    </modify-function> -->
     <modify-function signature="setWidget(QWidget*)">
         <modify-argument index="1">
             <reference-count action="set" variable-name="__rcWidget"/>
         </modify-argument>
     </modify-function>
-    <inject-code>
+<!--    <inject-code>
         <insert-template name="gui.init_style_option">
             <replace from="%TYPE" to="QStyleOption"/>
         </insert-template>
-    </inject-code>
+    </inject-code> -->
   </object-type>
   <object-type name="QFontComboBox"/>
   <object-type name="QFontDialog">
-        <inject-code>
+      <modify-function signature="open(QObject *, const char *)" remove="all"/> <!-- # TODO -->
+
+<!--        <inject-code>
             <import-file name="typesystem_gui-java.java" quote-after-line="class QFontDialog___" quote-before-line="}// class"/>
         </inject-code>
 
@@ -2912,6 +3008,7 @@
                 <replace from="%FONT_CALL_ARGUMENT" to="initial"/>
             </insert-template>
         </inject-code>
+        -->
     </object-type>
   <object-type name="QGraphicsEllipseItem" delete-in-main-thread="yes">
   	<modify-function signature="setExtension(QGraphicsItem::Extension,QVariant)" remove="all"/>
@@ -3542,16 +3639,14 @@
     </modify-function>
 
   
-        <extra-includes>
-            <include file-name="qt.QNativePointer" location="java"/>
-        </extra-includes>
         <inject-code>
-        public QPictureIO(qt.core.QIODevice ioDevice, String format) {
-            this(ioDevice, QNativePointer.createCharPointer(format));
+
+        public this(QIODevice ioDevice, string format) {
+            this(ioDevice, toStringz(format));
         }
-
-        public QPictureIO(String fileName, String format) {
-            this(fileName, QNativePointer.createCharPointer(format));
+        
+        public this(string fileName, string format) {
+            this(fileName, toStringz(format));
         }
 
             <insert-template name="core.return_string_instead_of_char*">
@@ -3575,7 +3670,7 @@
     <modify-function signature="find(QString)">
         <remove/>
     </modify-function>
-
+<!--
     <modify-function signature="find(QString,QPixmap&amp;)">
         <access modifier="private"/>
     </modify-function>
@@ -3583,17 +3678,24 @@
         <inject-code>
             <import-file name="typesystem_gui-java.java" quote-after-line="class QPixmapCache___" quote-before-line="}// class"/>
         </inject-code>
-
+-->
     </object-type>
   <object-type name="QPlastiqueStyle">
     <modify-function signature="standardPixmap(QStyle::StandardPixmap, const QStyleOption*, const QWidget*)const" remove="all"/> <!--### Obsolete in 4.3-->
     <modify-function signature="standardIconImplementation(QStyle::StandardPixmap, const QStyleOption *, const QWidget *)const" virtual-slot="yes"/>
     <modify-function signature="layoutSpacingImplementation(QSizePolicy::ControlType, QSizePolicy::ControlType, Qt::Orientation, const QStyleOption *, const QWidget *) const" virtual-slot="yes"/>
   </object-type>
-  <object-type name="QPrintDialog"/>
+  <object-type name="QPrintDialog">
+      <modify-function signature="accepted(QPrinter *)">
+          <rename to="accepted_printer"/>
+      </modify-function>
+      <modify-function signature="accepted()" remove="all"/>
+      <modify-function signature="open(QObject *, const char *)" remove="all"/> <!-- # TODO -->
+
+  </object-type>
   <object-type name="QPrintEngine"/>
   <object-type name="QProgressBar">
-    <modify-function signature="initStyleOption(QStyleOptionProgressBar*)const">
+<!--    <modify-function signature="initStyleOption(QStyleOptionProgressBar*)const">
         <access modifier="private"/>
     </modify-function>
   
@@ -3601,7 +3703,7 @@
             <insert-template name="gui.init_style_option">
                 <replace from="%TYPE" to="QStyleOptionProgressBar"/>
             </insert-template>
-        </inject-code>
+        </inject-code> -->
     </object-type>
   <object-type name="QPushButton">
 <!--    <modify-function signature="initStyleOption(QStyleOptionButton*)const">
@@ -4414,9 +4516,11 @@
     </object-type>
 
   <object-type name="QColorDialog">
+    <modify-function signature="open(QObject *, const char *)" remove="all"/> <!-- # TODO -->
+
     <modify-function signature="getColor(const QColor &amp;, QWidget *)">
       <modify-argument index="1">
-        <replace-default-expression with="QColor.white"/>
+        <replace-default-expression with="QColor.White"/>
       </modify-argument>
     </modify-function>
     <modify-function signature="getRgba(uint,bool*,QWidget*)">
@@ -4731,172 +4835,35 @@
   </object-type>
 
   <object-type name="QInputDialog">
+    <modify-function signature="open(QObject *, const char *)" remove="all"/> <!-- # TODO -->
+
     <modify-function signature="getDouble(QWidget *, const QString &amp;, const QString &amp;, double, double, double, int, bool *, QFlags&lt;Qt::WindowType&gt;)">
-        <rename to="getDouble_internal"/>
+        <rename to="getDouble_private"/>
         <access modifier="private"/>
-        <modify-argument index="4">
-            <remove-default-expression/>
-        </modify-argument>
-        <modify-argument index="5">
-            <remove-default-expression/>
-        </modify-argument>
-        <modify-argument index="6">
-            <remove-default-expression/>
-        </modify-argument>
-        <modify-argument index="7">
-            <remove-default-expression/>
-        </modify-argument>
-        <modify-argument index="8">
-            <remove-default-expression/>
-        </modify-argument>
-        <modify-argument index="9">
-            <remove-default-expression/>
-        </modify-argument>
     </modify-function>
 
     <modify-function signature="getInteger(QWidget *, const QString &amp;, const QString &amp;, int, int, int, int, bool *, QFlags&lt;Qt::WindowType&gt;)">
-        <rename to="getInteger_internal"/>
+        <remove/>
+    </modify-function>
+
+    <modify-function signature="getInt(QWidget*,QString,QString,int,int,int,int,bool*,QFlags&lt;Qt::WindowType&gt;)">
+        <rename to="getInt_private" />
+        <access modifier="private" />
+    </modify-function>
+
+    <modify-function signature="getItem(QWidget *, const QString &amp;, const QString &amp;, const QStringList&lt;QString&gt; &amp;, int, bool, bool *, QFlags&lt;Qt::WindowType&gt;)">
+        <rename to="getItem_private"/>
         <access modifier="private"/>
-        <modify-argument index="4">
-            <remove-default-expression/>
-        </modify-argument>
-        <modify-argument index="5">
-            <remove-default-expression/>
-        </modify-argument>
-        <modify-argument index="6">
-            <remove-default-expression/>
-        </modify-argument>
-        <modify-argument index="7">
-            <remove-default-expression/>
-        </modify-argument>
-        <modify-argument index="8">
-            <remove-default-expression/>
-        </modify-argument>
-        <modify-argument index="9">
-            <remove-default-expression/>
-        </modify-argument>
-    </modify-function>
-
-    <modify-function signature="getItem(QWidget *, const QString &amp;, const QString &amp;, const QStringList&lt;QString&gt; &amp;, int, bool, bool *, QFlags&lt;Qt::WindowType&gt;)">
-        <rename to="getItem_internal"/>
+    </modify-function>
+
+    <modify-function signature="getText(QWidget *, const QString &amp;, const QString &amp;, QLineEdit::EchoMode, const QString &amp;, bool *, QFlags&lt;Qt::WindowType&gt;)">
+        <rename to="getText_private"/>
         <access modifier="private"/>
-        <modify-argument index="4">
-            <remove-default-expression/>
-        </modify-argument>
-        <modify-argument index="5">
-            <remove-default-expression/>
-        </modify-argument>
-        <modify-argument index="6">
-            <remove-default-expression/>
-        </modify-argument>
-        <modify-argument index="7">
-            <remove-default-expression/>
-        </modify-argument>
-        <modify-argument index="8">
-            <remove-default-expression/>
-        </modify-argument>
-    </modify-function>
-
-    <modify-function signature="getText(QWidget *, const QString &amp;, const QString &amp;, QLineEdit::EchoMode, const QString &amp;, bool *, QFlags&lt;Qt::WindowType&gt;)">
-        <rename to="getText_internal"/>
-        <access modifier="private"/>
-        <modify-argument index="4">
-            <remove-default-expression/>
-        </modify-argument>
-        <modify-argument index="5">
-            <remove-default-expression/>
-        </modify-argument>
-        <modify-argument index="6">
-            <remove-default-expression/>
-        </modify-argument>
-        <modify-argument index="7">
-            <remove-default-expression/>
-        </modify-argument>
-    </modify-function>
-  
-        <inject-code>
-        <insert-template name="gui.inputDialog_get_input">
-            <replace from="%RETURN_TYPE" to="Double"/>
-            <replace from="%EXTRA" to="double value, double minValue, double maxValue, int decimals"/>
-            <replace from="%FUNCTION_NAME" to="getDouble"/>
-            <replace from="%CALL" to="value, minValue, maxValue, decimals"/>
-        </insert-template>
-
-        public static Double getDouble(qt.gui.QWidget parent, java.lang.String title, java.lang.String label, double value, double minValue, double maxValue) {
-            return getDouble(parent, title, label, value, minValue, maxValue, 1);
-        }
-
-        public static Double getDouble(qt.gui.QWidget parent, java.lang.String title, java.lang.String label, double value, double minValue) {
-            return getDouble(parent, title, label, value, minValue, (double)2147483647);
-        }
-
-
-        public static Double getDouble(qt.gui.QWidget parent, java.lang.String title, java.lang.String label, double value) {
-            return getDouble(parent, title, label, value, (double)-2147483647);
-        }
-
-        public static Double getDouble(qt.gui.QWidget parent, java.lang.String title, java.lang.String label) {
-            return getDouble(parent, title, label, 0.0);
-        }
-        </inject-code>
-
-        <inject-code>
-            <insert-template name="gui.inputDialog_get_input">
-                <replace from="%RETURN_TYPE" to="Integer"/>
-                <replace from="%EXTRA" to="int value, int minValue, int maxValue, int step"/>
-                <replace from="%FUNCTION_NAME" to="getInteger"/>
-                <replace from="%CALL" to="value, minValue, maxValue, step"/>
-            </insert-template>
-
-        public static Integer getInteger(qt.gui.QWidget parent, java.lang.String title, java.lang.String label, int value, int minValue, int maxValue) {
-            return getInteger(parent, title, label, value, minValue, maxValue, 1);
-        }
-
-        public static Integer getInteger(qt.gui.QWidget parent, java.lang.String title, java.lang.String label, int value, int minValue) {
-            return getInteger(parent, title, label, value, minValue, (int)2147483647);
-        }
-
-        public static Integer getInteger(qt.gui.QWidget parent, java.lang.String title, java.lang.String label, int value) {
-            return getInteger(parent, title, label, value, (int)-2147483647);
-        }
-
-        public static Integer getInteger(qt.gui.QWidget parent, java.lang.String title, java.lang.String label) {
-            return getInteger(parent, title, label, 0);
-        }
-        </inject-code>
-
-        <inject-code>
-            <insert-template name="gui.inputDialog_get_input">
-                <replace from="%RETURN_TYPE" to="String"/>
-                <replace from="%EXTRA" to="java.util.List&lt;java.lang.String&gt; list, int current, boolean editable"/>
-                <replace from="%FUNCTION_NAME" to="getItem"/>
-                <replace from="%CALL" to="list, current, editable"/>
-            </insert-template>
-
-        public static java.lang.String getItem(qt.gui.QWidget parent, java.lang.String title, java.lang.String label, java.util.List&lt;java.lang.String&gt; list, int current) {
-            return getItem(parent, title, label, list, current, true);
-        }
-
-        public static java.lang.String getItem(qt.gui.QWidget parent, java.lang.String title, java.lang.String label, java.util.List&lt;java.lang.String&gt; list) {
-            return getItem(parent, title, label, list, 0);
-        }
-        </inject-code>
-        <inject-code>
-            <insert-template name="gui.inputDialog_get_input">
-                <replace from="%RETURN_TYPE" to="String"/>
-                <replace from="%EXTRA" to="qt.gui.QLineEdit.EchoMode echo, java.lang.String text"/>
-                <replace from="%FUNCTION_NAME" to="getText"/>
-                <replace from="%CALL" to="echo, text"/>
-            </insert-template>
-
-        public static java.lang.String getText(qt.gui.QWidget parent, java.lang.String title, java.lang.String label, qt.gui.QLineEdit.EchoMode echo) {
-            return getText(parent, title, label, echo, "");
-        }
-
-        public static java.lang.String getText(qt.gui.QWidget parent, java.lang.String title, java.lang.String label) {
-            return getText(parent, title, label, qt.gui.QLineEdit.EchoMode.Normal);
-        }
-        </inject-code>
+    </modify-function>
+
+    <inject-code>
+        <import-file name="typesystem_gui-java.java" quote-after-line="class QInputDialog___" quote-before-line="}// class"/>
+    </inject-code>
     </object-type>
 
 
@@ -5854,7 +5821,7 @@
             <no-null-pointer/>
         </modify-argument>
     </modify-function>
-  
+<!--  
         <inject-code>
             <insert-template name="gui.init_style_option">
                 <replace from="%TYPE" to="QStyleOptionSpinBox"/>
@@ -5924,7 +5891,7 @@
                     QValidator::State %out = (QValidator::State) qtjambi_to_enumerator(__jni_env, %in);
                 </conversion-rule>
             </modify-argument>
-        </modify-function>
+        </modify-function>-->
     </object-type>
 
   <object-type name="QTextFrame" delete-in-main-thread="yes">
@@ -6020,6 +5987,8 @@
   </object-type>
 
   <object-type name="QPageSetupDialog">
+      <modify-function signature="open(QObject *, const char *)" remove="all"/> <!-- # TODO -->
+
   </object-type>
 
   <object-type name="QTabWidget">
@@ -6082,21 +6051,12 @@
   </object-type>
 
   <object-type name="QDateTimeEdit">
-    <modify-function signature="initStyleOption(QStyleOptionSpinBox*)const" access="private" rename="initDateTimeEditStyleOption"/>
     <modify-function signature="setCalendarWidget(QCalendarWidget*)">
         <modify-argument index="1">
             <!-- Safe to ignore because widget is reparented -->
             <reference-count action="ignore"/>
         </modify-argument>
     </modify-function>
-
-  
-        <inject-code>
-            <insert-template name="gui.init_style_option">
-                <replace from="%TYPE" to="QStyleOptionSpinBox"/>
-                <replace from="initStyleOption" to="initDateTimeEditStyleOption"/>
-            </insert-template>
-        </inject-code>
     </object-type>
 
   <object-type name="QSortFilterProxyModel">
@@ -6118,7 +6078,7 @@
   
         <modify-function signature="match(QModelIndex, int, QVariant, int, QFlags&lt;Qt::MatchFlag&gt;) const">
             <modify-argument index="5">
-                <replace-default-expression with="Qt.MatchFlag.MatchStartsWith, Qt.MatchFlag.MatchWrap"/>
+                <replace-default-expression with="Qt.MatchFlag.MatchStartsWith | Qt.MatchFlag.MatchWrap"/>
             </modify-argument>
         </modify-function>
     </object-type>
@@ -6152,6 +6112,8 @@
   </object-type>
 
   <object-type name="QProgressDialog">
+        <modify-function signature="open(QObject *, const char *)" remove="all"/> <!-- # TODO -->
+
     <modify-function signature="setBar(QProgressBar*)">
         <modify-argument index="1">
             <define-ownership class="java" owner="c++"/>
@@ -6567,9 +6529,9 @@
   </object-type>
 
   <object-type name="QRubberBand">
-    <modify-function signature="initStyleOption(QStyleOptionRubberBand*)const">
+<!--    <modify-function signature="initStyleOption(QStyleOptionRubberBand*)const">
         <access modifier="private"/>
-    </modify-function>
+    </modify-function>-->
     <modify-function signature="move(int,int)" rename="moveRubberBand"/>
     <modify-function signature="move(const QPoint &amp;)" rename="moveRubberBand"/>
     <modify-function signature="resize(int,int)" rename="resizeRubberBand"/>
@@ -6577,11 +6539,11 @@
     <modify-function signature="setGeometry(int,int,int,int)" rename="setRubberBandGeometry"/>
     <modify-function signature="setGeometry(const QRect &amp;)" rename="setRubberBandGeometry"/>
   
-        <inject-code>
+<!--        <inject-code>
             <insert-template name="gui.init_style_option">
                 <replace from="%TYPE" to="QStyleOptionRubberBand"/>
             </insert-template>
-        </inject-code>
+        </inject-code> -->
     </object-type>
 
   <object-type name="QTextLayout">
@@ -6699,7 +6661,7 @@
     </object-type>
 
   <object-type name="QGroupBox">
-    <modify-function signature="initStyleOption(QStyleOptionGroupBox*)const">
+<!--    <modify-function signature="initStyleOption(QStyleOptionGroupBox*)const">
         <access modifier="private"/>
     </modify-function>
   
@@ -6707,7 +6669,7 @@
             <insert-template name="gui.init_style_option">
                 <replace from="%TYPE" to="QStyleOptionGroupBox"/>
             </insert-template>
-        </inject-code>
+        </inject-code>-->
     </object-type>
 
   <object-type name="QStackedWidget">
@@ -6775,7 +6737,7 @@
   <object-type name="QSplashScreen">
     <modify-function signature="showMessage(const QString &amp;, int, const QColor &amp;)">
       <modify-argument index="3">
-        <replace-default-expression with="QColor.black"/>
+        <replace-default-expression with="QColor.Black"/>
       </modify-argument>
     </modify-function>
     <modify-function signature="repaint()" remove="all"/>
@@ -7184,6 +7146,8 @@
     </object-type>
 
   <object-type name="QAbstractTableModel">
+<!--  <modify-function signature="parent(const QModelIndex &amp;)const" remove="all"/>
+  <modify-function signature="hasChildren(const QModelIndex &amp;)const" remove="all"/> -->
     <extra-includes>
         <include file-name="QStringList" location="global"/>
         <include file-name="QSize" location="global"/>
@@ -7962,7 +7926,9 @@
         </modify-argument>
     </modify-function>
   </object-type>
-  <object-type name="QPrintPreviewDialog"/>
+  <object-type name="QPrintPreviewDialog">
+        <modify-function signature="open(QObject *, const char *)" remove="all"/> <!-- # TODO -->
+  </object-type>
   <object-type name="QPrintPreviewWidget"/>
   <object-type name="QStyledItemDelegate">
     <modify-function signature="setItemEditorFactory(QItemEditorFactory*)">
@@ -7980,7 +7946,7 @@
             <reference-count action="ignore"/>
         </modify-argument>
     </modify-function>
-  
+<!--  
         <modify-function signature="initStyleOption(QStyleOptionViewItem*,QModelIndex)const">
             <modify-argument index="1">
                 <conversion-rule class="shell">
@@ -7992,6 +7958,7 @@
                 <replace-type modified-type="qt.gui.QStyleOptionViewItem"/>
             </modify-argument>
         </modify-function>
+        -->
     </object-type>
 
   <interface-type name="QAccessibleFactoryInterface" java-name="QAbstractAccessibleFactory"/>
@@ -8001,9 +7968,9 @@
   <interface-type name="QStyleFactoryInterface" java-name="QAbstractStyleFactory"/>
   <interface-type name="QTextCodecFactoryInterface" java-name="QAbstractTextCodecFactory"/>
   <interface-type name="QPictureFormatInterface" java-name="QAbstractPictureFormat">
-        <modify-function signature="loadPicture(QString,QString,QPicture*)">
+<!--        <modify-function signature="loadPicture(QString,QString,QPicture*)">
             <modify-argument index="3">
-                <replace-type modified-type="qt.gui.QPicture"/>
+                <replace-type modified-type="QPicture"/>
                 <conversion-rule class="shell">
                     jobject %out = qtjambi_from_object(__jni_env, %in, "QPicture", "com/trolltech/qt/gui/", false);
                     jobject __tmp = %out;
@@ -8024,7 +7991,7 @@
                     jboolean %out = (jboolean) %in;
                 </conversion-rule>
             </modify-argument>
-        </modify-function>
+        </modify-function>-->
     </interface-type>
 
   <object-type name="QIconEnginePluginV2"/>
--- a/include/ArrayOpsPrimitive.h	Fri May 15 18:57:36 2009 +0000
+++ b/include/ArrayOpsPrimitive.h	Sat May 16 17:12:06 2009 +0000
@@ -33,7 +33,7 @@
 QTD_EXPORT(void, qtd_allocate_string_array, (void* arr, size_t len))
 QTD_EXPORT(void, qtd_assign_string_array_element, (void* arr, size_t pos, void* elem))
 QTD_EXPORT(void*, qtd_string_from_array, (void* arr, size_t pos))
-QTD_EXPORT(void, qtd_get_string_from_array, (void* arr, size_t pos, char** elem, size_t* elem_size))
+QTD_EXPORT(void, qtd_get_string_from_array, (void* arr, size_t pos, string* elem))
 
 #ifdef CPP_SHARED
 
--- a/include/qtd_core.h	Fri May 15 18:57:36 2009 +0000
+++ b/include/qtd_core.h	Sat May 16 17:12:06 2009 +0000
@@ -46,6 +46,9 @@
     void* ptr;
 };
 
+#define string DArray
+#define Array DArray
+
 #ifdef CPP_SHARED
 typedef void (*pfunc_abstr)();
 #endif
--- a/mini/test1/build	Fri May 15 18:57:36 2009 +0000
+++ b/mini/test1/build	Sat May 16 17:12:06 2009 +0000
@@ -1,3 +1,3 @@
 #! /bin/bash
 
-dmd main.d -L-L../../lib -L-lqtdcore -I../../ -L-lQtCore
+dmd main.d -L-L../../lib -L-lqtdcore -I../../ -I../../qt/d1 -L-lQtCore
\ No newline at end of file
--- a/qt/core/QString.d	Fri May 15 18:57:36 2009 +0000
+++ b/qt/core/QString.d	Sat May 16 17:12:06 2009 +0000
@@ -9,8 +9,14 @@
     import std.utf : toString = toUTF8;
 }
 
-class QString
+struct QString
 {
+    public static QString opCall(void* ptr, bool proxy) {
+        QString str;
+        str.native_id = ptr;
+        return str;
+    }
+    
     private void* native_id;
     
     public static final char[] toNativeString(void* qstring) {
@@ -23,10 +29,6 @@
         return toNativeString(native_id);
     }
     
-    public this(void* ptr, bool proxy) {
-        native_id = ptr;
-    }
-    
     public void assign(char[] text) {
         __qtd_QString_operatorAssign(native_id, text.ptr, text.length);
     }
--- a/qt/qtd/ArrayOpsPrimitive.d	Fri May 15 18:57:36 2009 +0000
+++ b/qt/qtd/ArrayOpsPrimitive.d	Sat May 16 17:12:06 2009 +0000
@@ -75,12 +75,18 @@
 {
     return &((*arr)[pos]);
 }
-
+/*
 private extern(C) void qtd_get_string_from_array(string* arr, size_t pos, char** elem, size_t* elem_size)
 {
     *elem = arr[pos].ptr;
     *elem_size = arr[pos].length;
 }
+*/
+
+private extern(C) void qtd_get_string_from_array(string* arr, size_t pos, string* elem)
+{
+    *elem = arr[pos];
+}
 
 version(Windows)
 {