resources/RooUsage.txt
[app.Builder.js] / src / Palete / Gir.vala
index 28ef7fb..0b60527 100644 (file)
@@ -48,9 +48,85 @@ namespace Palete {
                        return pr.doctxt != null ? pr.doctxt : "";
 
                }
-               public void loadOverrides(bool force = false)
+               /**
+                * since constructors from the API from gir or vala do not map
+                * correctly to properties, we have an Gir.overides file in resources
+                * that changes the ctor's for some elements.
+                * 
+                */
+                
+               public static void checkParamOverride(GirObject c)
+               {
+                       
+                       print("checkParamOverride :check %s\n", c.name);
+                       var parset = c.gparent;
+                       if (parset == null || parset.nodetype != "Paramset") {
+                               print("skip parent not Paramset\n");
+                               return;
+                       }
+                       var method = parset.gparent;
+                       // we can do this for pack methods..
+                       if (method == null) {
+                               print("skip parent.parent is null\n");
+                               return;
+                       }
+                       var cls = method.gparent;
+                       if (cls == null || cls.nodetype != "Class") {
+                               //print("skip parent.parent.parent not Class\n");
+                               return;
+                       }
+
+                        
+                       
+                       c.name =  fetchOverride( cls.name, method.name, c.name);
+               }
+               public static bool overrides_loaded = false;
+               public static Gee.HashMap<string,string> overrides;
+       
+               public static string fetchOverride(  string cls, string method, string param)
+               {
+                       // overrides should be in a file Gir.overides
+                       // in that "Gtk.Label.new.str" : "label"
+                       loadOverrides();
+                       var key = "%s.%s.%s".printf(cls,method,param);
+                        //print("Chekcing for key %s\n", key);
+                       if (!overrides.has_key(key)) {
+                               return param;
+                       }
+                       return overrides.get(key);
+
+
+               }
+                
+               public static void loadOverrides(bool force = false)
                {
-                       // BC..
+                       if (overrides_loaded && ! force) {
+                               return;
+                       }
+               
+                       var pa = new Json.Parser();
+                       pa.load_from_file(BuilderApplication.configDirectory() + "/resources/Gir.overides");
+                       var node = pa.get_root();
+                   
+                       if (node.get_node_type () != Json.NodeType.OBJECT) {
+                               throw new GirError.INVALID_FORMAT ("Error loading gir.overides : Unexpected element type %s", node.type_name ());
+                       }
+                       overrides = new Gee.HashMap<string,string>();
+               
+               
+                       var obj = node.get_object ();
+               
+               
+                       obj.foreach_member((o , key, value) => {
+                               //print(key+"\n");
+                               var v = obj.get_string_member(key);
+                               overrides.set(key, v);
+                       });
+       
+                       overrides_loaded = true;
+
+               
+
                }
                
                /**
@@ -93,6 +169,7 @@ namespace Palete {
                        }
                        */
                        if (ret != null && !ret.is_overlaid) {
+                               ret.is_overlaid = true;
                                var iter = ret.classes.map_iterator();
                                while(iter.next()) {
                                        iter.get_value().overlayParent();
@@ -102,7 +179,7 @@ namespace Palete {
                                while(iter.next()) {
                                        iter.get_value().overlayCtorProperties();
                                }       
-                               ret.is_overlaid = true;
+                               
                                
                        }