Mercurial > projects > qtd
changeset 339:4e31cbd9e20c
fix enumeration problems. requires patched dmd
author | Eldar Insafutdinov |
---|---|
date | Sun, 09 May 2010 00:52:49 +0100 |
parents | e65f08f6262b |
children | 9fc85d7280ba |
files | examples/desktop/systray/window.d examples/dialogs/standarddialogs/dialog.d qt/d2/qt/Signal.d qt/qtd/MOC.d qt/qtd/Meta.d qt/qtd/MetaMarshall.d |
diffstat | 6 files changed, 73 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/examples/desktop/systray/window.d Sat Mar 27 18:53:42 2010 +0000 +++ b/examples/desktop/systray/window.d Sun May 09 00:52:49 2010 +0100 @@ -233,13 +233,13 @@ void createActions() { minimizeAction = new QAction(tr("Mi&nimize"), this); - connect(minimizeAction, "activated", this, "hide"); + connect(minimizeAction, "triggered", this, "hide"); maximizeAction = new QAction(tr("Ma&ximize"), this); - connect(maximizeAction, "activated", this, "showMaximized"); + connect(maximizeAction, "triggered", this, "showMaximized"); restoreAction = new QAction(tr("&Restore"), this); - connect(restoreAction, "activated", this, "showNormal"); + connect(restoreAction, "triggered", this, "showNormal"); quitAction = new QAction(tr("&Quit"), this); connect(quitAction, "triggered", qApp(), "quit");
--- a/examples/dialogs/standarddialogs/dialog.d Sat Mar 27 18:53:42 2010 +0000 +++ b/examples/dialogs/standarddialogs/dialog.d Sun May 09 00:52:49 2010 +0100 @@ -236,7 +236,7 @@ { bool ok; string text = QInputDialog.getText(this, tr("QInputgetText()"), - tr("User name:"), QLineEdit_EchoMode.Normal, + tr("User name:"), QLineEdit.EchoMode.Normal, QDir.home().dirName(), ok); if (ok && text.length) textLabel.setText(text); @@ -264,9 +264,9 @@ void slot_setExistingDirectory() { - int options = QFileDialog_Option.DontResolveSymlinks | QFileDialog_Option.ShowDirsOnly; + int options = QFileDialog.Option.DontResolveSymlinks | QFileDialog.Option.ShowDirsOnly; if (!native.isChecked()) - options |= QFileDialog_Option.DontUseNativeDialog; + options |= QFileDialog.Option.DontUseNativeDialog; string directory = QFileDialog.getExistingDirectory(this, tr("QFilegetExistingDirectory()"), directoryLabel.text(), @@ -279,7 +279,7 @@ { int options; if (!native.isChecked()) - options |= QFileDialog_Option.DontUseNativeDialog; + options |= QFileDialog.Option.DontUseNativeDialog; string selectedFilter; string fileName = QFileDialog.getOpenFileName(this, tr("QFilegetOpenFileName()"), @@ -295,7 +295,7 @@ { int options; if (!native.isChecked()) - options |= QFileDialog_Option.DontUseNativeDialog; + options |= QFileDialog.Option.DontUseNativeDialog; string selectedFilter; auto files = QFileDialog.getOpenFileNames( this, tr("QFilegetOpenFileNames()"), @@ -313,7 +313,7 @@ { int options; if (!native.isChecked()) - options |= QFileDialog_Option.DontUseNativeDialog; + options |= QFileDialog.Option.DontUseNativeDialog; string selectedFilter; string fileName = QFileDialog.getSaveFileName(this, tr("QFilegetSaveFileName()"),
--- a/qt/d2/qt/Signal.d Sat Mar 27 18:53:42 2010 +0000 +++ b/qt/d2/qt/Signal.d Sun May 09 00:52:49 2010 +0100 @@ -293,4 +293,4 @@ template toMetaEntries(Methods...) { alias TupleWrapper!(toMetaEntriesImpl!(0, Methods).result) toMetaEntries; -} \ No newline at end of file +}
--- a/qt/qtd/MOC.d Sat Mar 27 18:53:42 2010 +0000 +++ b/qt/qtd/MOC.d Sun May 09 00:52:49 2010 +0100 @@ -423,7 +423,7 @@ { if (i > 0) ret ~= ", "; - ret ~= Args[i].stringof; + ret ~= fullDName!(Args[i]); } return ret; }
--- a/qt/qtd/Meta.d Sat Mar 27 18:53:42 2010 +0000 +++ b/qt/qtd/Meta.d Sun May 09 00:52:49 2010 +0100 @@ -2,6 +2,7 @@ import std.traits; import std.typetuple; +import std.string; // Various compile time utilities @@ -80,4 +81,33 @@ template isFnOrDg(Dg) { enum isFnOrDg = isFn!(Dg) || isDg!(Dg); -} \ No newline at end of file +} + +uint isModule(string str) +{ + return startsWith(str, "module "); +} + +template qualifiedCppName(T) +{ + static if(!isModule(__traits(parent, T).stringof)) + enum qualifiedCppName = qualifiedCppName!(__traits(parent, T)) ~ "::" ~ T.stringof; + else + enum qualifiedCppName = T.stringof; +} + +template qualifiedDName(T) +{ + static if (!isModule(__traits(parent, T).stringof)) + enum qualifiedDName = qualifiedDName!(__traits(parent, T)) ~ "." ~ T.stringof; + else + enum qualifiedDName = T.stringof; +} + +template fullDName(T) +{ + static if (is(T == enum)) + enum fullDName = qualifiedDName!T; + else + enum fullDName = T.stringof; +}
--- a/qt/qtd/MetaMarshall.d Sat Mar 27 18:53:42 2010 +0000 +++ b/qt/qtd/MetaMarshall.d Sun May 09 00:52:49 2010 +0100 @@ -19,6 +19,16 @@ enum isValueType = is(T.__isValueType); } +template isQtType(T) +{ + mixin ("enum isQtType = is(T.__isQtType_" ~ T.stringof ~ ");"); +} +/* +template isQtType(T) +{ + enum isQtType = isQObjectType!(T) || isObjectType!(T) || isValueType!(T) || is(T.__isQtType); +} +*/ template isNativeType(T) // type that doesn't require conversion i.e. is the same in C++ and D { enum isNativeType = isNumeric!T || is(T == bool) || is(T == struct); @@ -34,6 +44,23 @@ enum isQList = ctfeStartsWith(Unqual!(T).stringof, "QList!"); } +// returns full name of enum: +// for Qt enum it is in the form of QPaintDevice::PaintDeviceMetric +// for pure D enums it is Foo.Bar +template enumFullName(T) +{ + static if(!isModule(__traits(parent, T).stringof)) + { + static if(isQtType!(__traits(parent, T))) + enum enumFullName = qualifiedCppName!T; + else + enum enumFullName = qualifiedDName!T; + } + else + enum enumFullName = qualifiedDName!T; + +} + // converts an argumnent from C++ to D in qt_metacall string metaCallArgument(T)(string ptr) { @@ -45,6 +72,8 @@ return "*(cast(" ~ T.stringof ~ "*)" ~ ptr ~ ")"; else static if (isStringType!T) return "QStringUtil.toNativeString(" ~ ptr ~ ")"; + else static if (is(T == enum)) + return "*(cast(" ~ qualifiedDName!T ~ "*)" ~ ptr ~ ")"; else return "*(cast(" ~ T.stringof ~ "*)" ~ ptr ~ ")"; //res = T.stringof; @@ -67,6 +96,8 @@ else return "QList<" ~ qtDeclArg!(templateParam!T)() ~ ">"; } + else static if (is(T == enum)) + return enumFullName!T; else static if (isNativeType!T) return Unqual!T.stringof; else