C# property script modified to support View control remame
[platform/core/uifw/dali-toolkit.git] / plugins / dali-swig / property-wrapper.rb
index 1f3fc62..e548f61 100755 (executable)
@@ -26,13 +26,28 @@ $typeTable =  [
         ["ARRAY",       "Dali.Property.Array",   "",     "Dali.Property.Array temp = new Dali.Property.Array();"],
         ["MAP",         "Dali.Property.Map",     "",     "Dali.Property.Map temp = new Dali.Property.Map();"],
     ]
+
+# Some csharp classes are renamed ( e.g. C++ Control is called View in C#)
+$renameMap = [
+              ["Control", "View"]
+             ]
+
 $daliSwigPath = String.new;
 
+def getCSharpName( cppClassName )
+
+    entry = $renameMap.select{ |a| a.first == cppClassName }
+    if( entry.empty?)
+      return cppClassName
+    end
+    return entry[0][1]
+end
+
 # use the table above to get information for a specific type
 def getCSharpType( type )
 
     entry = $typeTable.select{ |a| a.first == type }
-    if( entry == nil )
+    if( entry.empty? )
       return nil
     end
     return entry[0]
@@ -182,7 +197,11 @@ def writePropertiesToCSharpFile( daliClass )
    # open the CSharp file autogenerated by SWIG
   swigFiles =  $daliSwigPath + "/automatic/csharp/"
 
-  fileName =(swigFiles+daliClass.name) + ".cs"
+  # some C++ classes are renamed for C#
+  className = getCSharpName( daliClass.name )
+
+  fileName =(swigFiles + className ) + ".cs"
+
 
   # it's possible some classes in dali-core aren't being wrapped by swig, so if the swig generated file
   # doesn't exist just return
@@ -212,7 +231,7 @@ def writePropertiesToCSharpFile( daliClass )
   file.write("\n}\n\n}");  # re-insert the closing brackets we over-wrote
   end
 
-  puts("Injected #{daliClass.properties.length} C# Properties into #{daliClass.name}.cs".blueBackground)
+  puts("Injected #{daliClass.properties.length} C# Properties from #{daliClass.name} into #{className}.cs".blueBackground)
 
 end
 
@@ -222,7 +241,7 @@ def writeChildPropertiesToCSharpFile( daliClass )
   swigFiles =  $daliSwigPath + "/automatic/csharp/"
 
   # Add all the child properties to Control
-  fileName = (swigFiles+"Control") + ".cs"
+  fileName = (swigFiles+"View") + ".cs"
 
   if( ! File.exist?(fileName) )
     return
@@ -252,7 +271,7 @@ def writeChildPropertiesToCSharpFile( daliClass )
   file.write("\n}\n\n}");  # re-insert the closing brackets we over-wrote
   end
 
-  puts("Injected #{$childPropertyCount} C# Child Properties into #{"Control"}.cs".blueBackground)
+  puts("Injected #{$childPropertyCount} C# Child Properties into #{"View"}.cs".blueBackground)
 
 end
 
@@ -263,6 +282,7 @@ def writeCSharpData
 
         #puts ( daliClass.name )
 
+
         hasChildProperties = false
 
         for property in daliClass.properties
@@ -279,10 +299,13 @@ def writeCSharpData
             propertyArg =  propertyInfo[2]  # e.g. ref or out
             tempDeclaration = propertyInfo[3] # e.g. bool temp;
 
-            propertyName = "#{daliClass.name}.Property.#{property.enum}"
+            csharpClassName = getCSharpName(daliClass.name);
+
+
+            propertyName = "#{csharpClassName}.Property.#{property.enum}"
 
             if property.childProperty
-              propertyName = "#{daliClass.name}.ChildProperty.#{property.enum}"
+              propertyName = "#{csharpClassName}.ChildProperty.#{property.enum}"
               hasChildProperties = true
             end
 
@@ -308,7 +331,7 @@ def writeCSharpData
         end
         # write normal properties to the class's own csharp file
         writePropertiesToCSharpFile( daliClass )
-        # write child properties to Control.cs
+        # write child properties to View.cs ( on Control has child properties)
         if (hasChildProperties)
           writeChildPropertiesToCSharpFile( daliClass )
         end