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