--- /dev/null
+//<script type="text/javascript">
+//Gtk = imports.gi.Gtk;
+GI = imports.gi.GIRepository;
+GLib = imports.gi.GLib;
+xml = imports.libxml;
+//GObject = imports.gi.GObject;
+
+XObject = imports.XObject.XObject;
+console = imports.console.console;
+
+NameSpace = imports.NameSpace.NameSpace;
+Basic = imports.Basic.Basic;
+
+
+
+
+/**
+ * Base types methods/interfaces/structs/unions etc.
+ */
+
+
+
+
+Base = XObject.define(
+ function(ns, name) {
+ // fake should not happen?
+
+
+ if (typeof(name) == 'undefined') {
+ var ar = ns.split('.');
+ ns = ar[0];
+ name = ar[1];
+ }
+ this.ns = ns;
+ this.name = name;
+ this.alias = ns + '.' + name;
+ //console.log("CREATE(Base) " + this.alias);
+ this._loaded = false;
+
+
+ // reset all of these..
+ this.signals = [];
+ this.methods = [];
+ this.constructors = [];
+ this.functions= [];
+
+ this.values = []; // for enum;g;
+ this.constants = [];
+
+ this.properties = [];
+ this.implementInterfaces = []; // obect - which interface it implements.
+ this.implementedBy = []; // interface - which object uses it.
+ this.extendsClasses = []; // what it extends...
+ this.childClasses = []; // what
+ this.desc = NameSpace.doc(this.alias );
+
+
+ var gi = GI.IRepository.get_default();
+ var ver = gi.get_version(ns);
+ var pth = GI.IRepository.get_search_path ();
+ var gir_path = pth[0].replace(/lib\/girepository-1.0/, 'share\/gir-1.0');
+ //console.log(fn);
+ this.gir_file = gir_path + '/'+ ns + '-' + ver + '.gir';
+ this.gir_filename = ns + '-' + ver + '.gir';
+
+
+ },
+ Basic,
+ {
+ titleType: 'Unknown',
+ name : '',
+ ns : '',
+
+ signals : [],
+ methods : [],
+ constructors : [],
+ functions: [],
+
+ values : [], // for enum
+ constants : [],
+
+ properties : [],
+ implementInterfaces : [], // obect - which interface it implements.
+ implementedBy : [], // interface - which object uses it.
+ extendsClasses : [], // what it extends...
+ childClasses : [], // what
+
+
+
+
+ getBI : function() {
+
+ var gi = GI.IRepository.get_default();
+ return gi.find_by_name(this.ns, this.name);
+ },
+ // on, getwhat, simple list (name), variable to add to.
+ genericBuildList : function( onwhat, type, keylist, saveto)
+ {
+
+ //console.log(this.alias +" - ADDING :" + type);
+ //if (this[saveto].length) {
+ // Seed.print( "EROROR = it's alreayd loaded why?");
+ //throw "oops";
+ // }
+ var bb = this.getBI();
+ var _this = this;
+ //console.log("ADD " + type[0].toUpperCase() + type.substring(1));
+ var clname = type[0].toUpperCase() + type.substring(1);
+ var cls = imports[clname][clname];
+ if (!cls) {
+ console.log("COULD NOT FIND Introspect: " + type[0].toUpperCase() + type.substring(1));
+ }
+
+ var plural = type + 's';
+ plural = plural == 'propertys' ? 'properties' : plural;
+
+
+ for(var i =0; i < GI[onwhat + '_info_get_n_' + plural ](bb); i++) {
+ var add= new cls(GI[onwhat + '_info_get_' + type ](bb,i), this, saveto, keylist);
+ //console.log("CLS :" + this.alias + " EL: " + add.name);
+ }
+
+
+ },
+ // loop through and add stuff from extends..
+ genericExtends : function( keylist, saveto)
+ {
+ // do not overlay gobject props or methods etc.
+
+ if (!this.extendsClasses.length) {
+ return;
+ }
+ if (this.extendsClasses[0].alias == 'GObject.Object') {
+ return;
+ }
+
+
+ var _this = this;
+
+ this.extendsClasses[0].load();
+ this.extendsClasses[0][saveto].map(function(prop) {
+ if (keylist.indexOf(prop.name) < 0) {
+ _this[saveto].push(prop);
+ keylist.push(prop.name);
+ }
+ },this);
+
+ },
+ // loop through and add stuff from implements..
+ genericImplements : function( keylist, saveto) {
+
+ var _this = this;
+ this.implementInterfaces.map(function(iface) {
+
+ iface.load();
+
+ iface[saveto].map( function(prop) {
+ if (keylist.indexOf(prop.name) < 0) {
+ _this[saveto].push(prop);
+ keylist.push(prop.name);
+ }
+ },this);
+
+ }, this);
+
+ },
+
+
+
+});
+
+