+using Gtk;
namespace Palete
{
public string name;
- public Gee.ArrayList<Usage> map;
+ public Gee.ArrayList<Usage> map;
- public Gee.HashMap<string,GirObject> classes; // used in roo..
+ public Gee.HashMap<string,GirObject> classes; // used in roo..
public Palete()
{
- // nothing?
- this.map = null;
- this.classes = null;
+ // nothing?
+ this.map = null;
+ this.classes = null;
}
- public string[] getChildList(string in_rval)
+ public string[] getChildList(string in_rval)
{
- if (this.map == null) {
- this.load();
- }
- // empty == *top
-
- var rval = in_rval == "" ? "*top" : in_rval;
-
- // should be a bit more than this..
- // -> it should look for all elements that inherit
- string[] ret = {};
- var rt = new Gee.ArrayList<string>();
- for (var i = 0; i < this.map.size; i++) {
- var m = this.map.get(i);
-
- if (!m.leftHas(rval)) {
- continue;
+ if (this.map == null) {
+ this.load();
}
- print("found LEFT, adding right\n");
-
- for(var ii =0; ii < m.right.size; ii++) {
- var l = m.right.get(ii);
+ // empty == *top
+
+ var rval = in_rval == "" ? "*top" : in_rval;
- if (rt.index_of(l) > -1) {
- continue;
- }
- //print("ADD " + string.joinv(", ", ret) + "\n");
- ret += l;
- rt.add(l);
- }
-
-
- }
- print ("drop list for %s is:\n%s\n", rval, string.joinv("\n", ret));
- //console.log("DROP LIST:");
- //console.dump(ret);
- return ret;
-
+ // should be a bit more than this..
+ // -> it should look for all elements that inherit
+ string[] ret = {};
+ var rt = new Gee.ArrayList<string>();
+ for (var i = 0; i < this.map.size; i++) {
+ var m = this.map.get(i);
+
+ if (!m.leftHas(rval)) {
+ continue;
+ }
+ print("found LEFT, adding right\n");
+
+ for(var ii =0; ii < m.right.size; ii++) {
+ var l = m.right.get(ii);
+
+ if (rt.index_of(l) > -1) {
+ continue;
+ }
+ //print("ADD " + string.joinv(", ", ret) + "\n");
+ ret += l;
+ rt.add(l);
+ }
+
+
+ }
+ print ("drop list for %s is:\n%s\n", rval, string.joinv("\n", ret));
+ //console.log("DROP LIST:");
+ //console.dump(ret);
+ return ret;
+
}
public string[] getDropList(string rval)
{
- if (this.map == null) {
- this.load();
- }
-
-
- // should be a bit more than this..
- // -> it should look for all elements that inherit
- string[] ret = {};
- var rt = new Gee.ArrayList<string>();
- for (var i = 0; i < this.map.size; i++) {
- var m = this.map.get(i);
-
- if (m.right.index_of(rval) < 0) {
- continue;
+ if (this.map == null) {
+ this.load();
}
- //print("found RIGHT, adding left\n");
-
- for(var ii =0; ii < m.left.size; ii++) {
- var l = m.left.get(ii);
+
+
+ // should be a bit more than this..
+ // -> it should look for all elements that inherit
+ string[] ret = {};
+ var rt = new Gee.ArrayList<string>();
+ for (var i = 0; i < this.map.size; i++) {
+ var m = this.map.get(i);
+
+ if (m.right.index_of(rval) < 0) {
+ continue;
+ }
+ //print("found RIGHT, adding left\n");
+
+ for(var ii =0; ii < m.left.size; ii++) {
+ var l = m.left.get(ii);
+
+ if (rt.index_of(l) > -1) {
+ continue;
+ }
+ //print("ADD " + string.joinv(", ", ret) + "\n");
+ ret += l;
+ rt.add(l);
+ }
+
- if (rt.index_of(l) > -1) {
- continue;
- }
- //print("ADD " + string.joinv(", ", ret) + "\n");
- ret += l;
- rt.add(l);
- }
-
-
- }
- print ("drop list for %s is:\n%s\n", rval, string.joinv("\n", ret));
- //console.log("DROP LIST:");
- //console.dump(ret);
- return ret;
+ }
+ print ("drop list for %s is:\n%s\n", rval, string.joinv("\n", ret));
+ //console.log("DROP LIST:");
+ //console.dump(ret);
+ return ret;
}
public JsRender.Node? loadTemplate(string path)
{
- var pa = new Json.Parser();
- pa.load_from_file(path);
- var node = pa.get_root();
+ var pa = new Json.Parser();
+ pa.load_from_file(path);
+ var node = pa.get_root();
- if (node.get_node_type () != Json.NodeType.OBJECT) {
- return null;
- }
- var obj = node.get_object ();
+ if (node.get_node_type () != Json.NodeType.OBJECT) {
+ return null;
+ }
+ var obj = node.get_object ();
- var ret = new JsRender.Node();
+ var ret = new JsRender.Node();
- ret.loadFromJson(obj, 1);
- ret.ref(); // not sure if needed -- but we had a case where ret became uninitialized?
+ ret.loadFromJson(obj, 1);
+ ret.ref(); // not sure if needed -- but we had a case where ret became uninitialized?
- return ret;
- }
+ return ret;
+ }
- public void loadUsageFile (string fname) {
+ public void loadUsageFile (string fname) {
- print("Palete Load called\n");
- string raw;
- if (!FileUtils.test (fname, FileTest.EXISTS)) {
- throw new Error.MISSING_FILE(fname + " not found");
- }
+ print("Palete Load called\n");
+ string raw;
+ if (!FileUtils.test (fname, FileTest.EXISTS)) {
+ throw new Error.MISSING_FILE(fname + " not found");
+ }
- FileUtils.get_contents(fname, out raw);
- // print(data);
- var data = raw.split("\n");
- var state = 0;
- var cfg = new Gee.ArrayList<Usage>();
- var left = new Gee.ArrayList<string>();
- var right = new Gee.ArrayList<string>();
+ FileUtils.get_contents(fname, out raw);
+ // print(data);
+ var data = raw.split("\n");
+ var state = 0;
+ var cfg = new Gee.ArrayList<Usage>();
+ var left = new Gee.ArrayList<string>();
+ var right = new Gee.ArrayList<string>();
- for (var i = 0; i < data.length; i++) {
- var d = data[i].strip();
- //print("READ " + d + "\n");
- if (
- d.length < 1
- ||
- Regex.match_simple ("^\\s+$", d)
- ||
- Regex.match_simple ("^\\s*/", d)
- ){
- continue;
- }
+ for (var i = 0; i < data.length; i++) {
+ var d = data[i].strip();
+ //print("READ " + d + "\n");
+ if (
+ d.length < 1
+ ||
+ Regex.match_simple ("^\\s+$", d)
+ ||
+ Regex.match_simple ("^\\s*/", d)
+ ){
+ continue;
+ }
- if (Regex.match_simple ("^left:", d)) {
- state = 1;
- if (left.size > 0 ){
- cfg.add(new Usage( left, right));
- }
- left = new Gee.ArrayList<string>();
- right = new Gee.ArrayList<string>();
- continue;
- }
- if (Regex.match_simple ("^right:", d)) {
- state = 2;
- continue;
- }
- if (state == 1) {
- //print("add left: " + d + "\n");
- left.add(d);
- continue;
- }
- //print("add Right: " + d + "\n");
- right.add(d);
- //Seed.quit();
-
- }
- if (left.size > 0 ){
- cfg.add(new Usage( left, right));
- }
- this.map = cfg;
+ if (Regex.match_simple ("^left:", d)) {
+ state = 1;
+ if (left.size > 0 ){
+ cfg.add(new Usage( left, right));
+ }
+ left = new Gee.ArrayList<string>();
+ right = new Gee.ArrayList<string>();
+ continue;
+ }
+ if (Regex.match_simple ("^right:", d)) {
+ state = 2;
+ continue;
+ }
+ if (state == 1) {
+ //print("add left: " + d + "\n");
+ left.add(d);
+ continue;
+ }
+ //print("add Right: " + d + "\n");
+ right.add(d);
+ //Seed.quit();
+
+ }
+ if (left.size > 0 ){
+ cfg.add(new Usage( left, right));
+ }
+ this.map = cfg;
- }
+ }
-
-
- public async Gee.HashMap<int,string> validateVala(
- string code,
+
+ public void validateVala(
+ WindowState state,
+ string code,
string property,
string ptype,
JsRender.JsRender file,
JsRender.Node node
- )
- {
+ )
+ {
- print("validate code (%s) %s\n", file.language, code);
- var ret = new Gee.HashMap<int,string>();
+ print("validate code (%s) %s\n", file.language, code);
+
-
- if (file.language != "vala" ) { // not sure if we need to validate property
- return ret;
- }
- var vs = new ValaSource(file);
- //var cd = new JSCore.ClassDefinitionEmpty();
- ret = yield vs.checkFileWithNodePropChange(
- node,
- property,
- ptype,
- code
- );
- return ret;
-
- }
- public Gee.HashMap<int,string> validateJavascript(
- string code,
- string property,
- string ptype,
- JsRender.JsRender file,
- JsRender.Node node
- )
- {
+
+ if (file.language != "vala" ) { // not sure if we need to validate property
+ return;
+ }
+ // file.project , file.path, file.build_module, ""
+
+
+
+ //var cd = new JSCore.ClassDefinitionEmpty();
+ state.valasource.checkFileWithNodePropChange(
+ file,
+ node,
+ property,
+ ptype,
+ code
+ );
+
- print("validate code (%s) %s\n", file.language, code);
- var ret = new Gee.HashMap<int,string>();
+ }
+
+
+
+
+ public Gee.HashMap<int,string> validateJavascript(
+ string code,
+ string property,
+ string ptype,
+ JsRender.JsRender file,
+ JsRender.Node? node
+ )
+ {
+
+ print("validate code (%s) ptype=%s property=%s\n", file.language, ptype, property);
+ var ret = new Gee.HashMap<int,string>();
- if (file.language != "js") {
- return ret;
- }
- if (ptype != "listener" && property[0] == '|') {
- return ret;
- }
+ if (file.language != "js") {
+ return ret;
+ }
+ if (ptype != "listener" && property.length > 0 && property[0] == '|') {
+ return ret;
+ }
- //var cd = new JSCore.ClassDefinitionEmpty();
- //print("TESTING CODE %s\n", code);
- string errmsg;
- var line = Javascript.singleton().validate(
- "var __aaa___ = " + code, out errmsg);
-
- if (line < 0) {
- print("no errors\n");
+ //var cd = new JSCore.ClassDefinitionEmpty();
+ //print("TESTING CODE %s\n", code);
+ string errmsg;
+ var testcode = ptype == "file" ? code : "var __aaa___ = " + code;
+ var line = Javascript.singleton().validate(
+ testcode, out errmsg);
+
+ if (line < 0) {
+ print("no errors\n");
+ return ret;
+ }
+ ret.set(line, errmsg);
+ print("got errors\n");
return ret;
- }
- ret.set(line, errmsg);
- print("got errors\n");
- return ret;
-
-
+
+ }
+
+ public abstract void fillPack(JsRender.Node node,JsRender.Node parent);
+ public abstract void load();
+ public abstract Gee.HashMap<string,GirObject> getPropertiesFor(string ename, string type);
+ public abstract GirObject? getClass(string ename);
+
+ public abstract bool typeOptions(string fqn, string key, string type, out string[] opts);
+ public abstract List<SourceCompletionItem> suggestComplete(
+ JsRender.JsRender file,
+ JsRender.Node? node,
+ string proptype,
+ string key,
+ string complete_string
+ );
}
-
-
- public abstract void fillPack(JsRender.Node node,JsRender.Node parent);
- public abstract void load();
- public abstract Gee.HashMap<string,GirObject> getPropertiesFor(string ename, string type);
- public abstract GirObject? getClass(string ename);
- }
}