diff --git a/frame.js b/frame.js index 37659b1b..5075dc26 100644 --- a/frame.js +++ b/frame.js @@ -376,16 +376,16 @@ Volcanos("onappend", { _init: function(can, meta, list, cb, target, field) { met }]) return ui.item.Meta = item, ui.item }, - tree: function(can, target, msg, cb) { + tree: function(can, msg, target, cb) { var list = {}; msg.Table(function(value) { can.core.List(value.path.split("/"), function(item, index, array) { var last = array.slice(0, index).join("/") var name = array.slice(0, index+1).join("/") - list[name] || (list[name] = can.page.Append(can, list[last]||target, [{text: [item, "div", "item"], style: {"margin-left": "10px"}, onclick: function(event) { - var hide = list[name].style.display=="none" + list[name] || (list[name] = can.page.Append(can, list[last]||target, [{view: ["item", "div", item+(index==array.length-1?"":"/")], onclick: function(event) { + var hide = list[name].style.display == "none" can.page.Modify(can, list[name], {style: {display: hide? "": "none"}}) - !hide && typeof cb == "function" && cb(event, value) - }}, {view: "list", style: {"margin-left": "10px", display: "none"}}]).last) + index == array.length - 1 && typeof cb == "function" && cb(event, value) + }}, {view: "list", style: {display: "none"}}]).last) }) }) }, diff --git a/index.css b/index.css index 3cb06529..b6cbf93a 100644 --- a/index.css +++ b/index.css @@ -119,12 +119,16 @@ fieldset>div.output>div.project { float:left; /* position:fixed; */ } -fieldset>div.output>div.project>div.item { +fieldset>div.output>div.project div.item { + margin-left:10px; clear:both; } -fieldset>div.output>div.project>div.item:hover { +fieldset>div.output>div.project div.item:hover { border:solid 1px red; } +fieldset>div.output>div.project div.list { + margin-left:10px; +} fieldset>div.output>pre.profile { float:right; } diff --git a/plugin/local/code/inner.css b/plugin/local/code/inner.css index eaa5dc8c..5a5cc56e 100644 --- a/plugin/local/code/inner.css +++ b/plugin/local/code/inner.css @@ -25,13 +25,12 @@ fieldset.editor>div.output>div.project { max-width:120px; color:white; } -fieldset.editor>div.output>div.project div.item0 { -} -fieldset.editor>div.output>div.project div.list0 { -} fieldset.editor>div.output>div.project div.item { cursor:pointer; } +fieldset.editor>div.output>div.project div.item:hover { + border:solid 2px red; +} fieldset.editor>div.output>div.profile { position:absolute; right:0; width:80px; overflow:auto; diff --git a/plugin/local/code/inner.js b/plugin/local/code/inner.js index 0e7df3da..c09e44e2 100644 --- a/plugin/local/code/inner.js +++ b/plugin/local/code/inner.js @@ -8,7 +8,7 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, list, cb, {view: "profile"}, {view: "holdon", list: [ - {view: "preview"}, {view: "content", style: {"max-width": can.Conf("width")-260+"px"}}, + {view: "preview"}, {view: "content", style: {"max-width": can.Conf("width")-280+"px"}}, ]}, {view: ["editor", "textarea"], onkeydown: function(event) { @@ -90,29 +90,12 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, list, cb, can.onaction.selectLine(can, line||1) }, true) }, - project: function(can, path) { can.Option({path: path}), can.ui.project.innerHTML = "" - can.run({}, ["action", "project", path+"/"], function(res) { - can.onappend.tree(can, can.ui.project, res, function(event, value) { - value.path.indexOf(can.Option("path")) == 0 && (value.path = value.path.slice(can.Option("path").length+1)) - value.path.endsWith("/")? can.onimport.project(can, can.base.Path(can.Option("path"), value.path)): - can.onimport.tabview(can, can.Option("path"), value.path) + project: function(can, path) { can.Option({path: path}) + can.run({}, [path+"/"], function(msg) { can.ui.project.innerHTML = "" + can.onappend.tree(can, msg, can.ui.project, function(event, value) { + can.onimport.tabview(can, can.Option("path"), value.path) }) }, true) - return - can.run({}, ["action", "project", path+"/"], function(res) { res.Table(function(value) { - value.path = value.path.slice(can.Option("path").length+1) - - var title = can.core.List(["time", "size"], function(item) { return item + ": " + value[item] }).join("\n") - can.page.Append(can, can.ui.project, [{text: [value.path, "div", "item"], title: title, - onclick: function(event) { - value.path.endsWith("/")? can.onimport.project(can, can.base.Path(can.Option("path"), value.path)): - can.onimport.tabview(can, can.Option("path"), value.path) - }, - ondblclick: function(event) { - can.onkeymap._remote(event, can, "运行", ["action", "运行", path, value.path]) - }, - }]) - }) }, true) }, }, ["/plugin/local/code/inner.css"]) Volcanos("onsyntax", {help: "语法高亮", list: ["keyword", "prefix", "line"], _init: function(can, msg) { can._msg = msg @@ -183,6 +166,63 @@ Volcanos("onsyntax", {help: "语法高亮", list: ["keyword", "prefix", "line"], "endif": "keyword", }, }, + c: {link: "h"}, + h: { + split: { + space: " ", + operator: "{[(.:,;!|<>)]}", + }, + prefix: { + "//": "comment", + "/*": "comment", + "*": "comment", + }, + keyword: { + "#include": "keyword", + "#define": "keyword", + "#ifndef": "keyword", + "#ifdef": "keyword", + "#else": "keyword", + "#endif": "keyword", + + "typedef": "keyword", + + "if": "keyword", + "else": "keyword", + "for": "keyword", + "while": "keyword", + "do": "keyword", + "range": "keyword", + "break": "keyword", + "continue": "keyword", + "switch": "keyword", + "case": "keyword", + "default": "keyword", + + "return": "keyword", + + "union": "datatype", + "struct": "datatype", + "extern": "datatype", + "unsigned": "datatype", + "static": "datatype", + "double": "datatype", + "const": "datatype", + "void": "datatype", + "long": "datatype", + "char": "datatype", + "int": "datatype", + + "sizeof": "function", + "assert": "function", + "zmalloc": "function", + + "NULL": "string", + "0": "string", + "1": "string", + "-1": "string", + }, + }, sh: { prefix: {"#": "comment"}, suffix: {"\x7B": "comment"}, @@ -217,13 +257,6 @@ Volcanos("onsyntax", {help: "语法高亮", list: ["keyword", "prefix", "line"], "go": "function", }, }, - vim: { - prefix: {"\"": "comment"}, - keyword: { - highlight: "keyword", - syntax: "keyword", - }, - }, shy: { prefix: {"#": "comment"}, profile: true, @@ -232,6 +265,13 @@ Volcanos("onsyntax", {help: "语法高亮", list: ["keyword", "prefix", "line"], "label": "keyword", }, }, + vim: { + prefix: {"\"": "comment"}, + keyword: { + highlight: "keyword", + syntax: "keyword", + }, + }, mod: { prefix: {"#": "comment"}, keyword: { @@ -363,63 +403,7 @@ Volcanos("onsyntax", {help: "语法高亮", list: ["keyword", "prefix", "line"], return array[index-2]=="can"&&array[index-1]=="."&&(libs[value]||libs[value.text])? {keyword: "function", text: value.text||value}: value }, }, - h: { - split: { - space: " ", - operator: "{[(.:,;!|<>)]}", - }, - prefix: { - "//": "comment", - "/*": "comment", - "*": "comment", - }, - keyword: { - "#include": "keyword", - "#define": "keyword", - "#ifndef": "keyword", - "#ifdef": "keyword", - "#else": "keyword", - "#endif": "keyword", - - "typedef": "keyword", - - "if": "keyword", - "else": "keyword", - "for": "keyword", - "while": "keyword", - "do": "keyword", - "range": "keyword", - "break": "keyword", - "continue": "keyword", - "switch": "keyword", - "case": "keyword", - "default": "keyword", - - "return": "keyword", - - "union": "datatype", - "struct": "datatype", - "extern": "datatype", - "unsigned": "datatype", - "static": "datatype", - "double": "datatype", - "const": "datatype", - "void": "datatype", - "long": "datatype", - "char": "datatype", - "int": "datatype", - - "sizeof": "function", - "assert": "function", - "zmalloc": "function", - - "NULL": "string", - "0": "string", - "1": "string", - "-1": "string", - }, - }, - c: {link: "h"}, + json: {link: "js"}, man3: { split: { }, @@ -441,14 +425,6 @@ Volcanos("onsyntax", {help: "语法高亮", list: ["keyword", "prefix", "line"], man1: {link: "man3"}, man8: {link: "man3"}, - png: { - display: true, - show: function(can) { - can.page.Append(can, can.ui.display, can.core.List(can._msg.result, function(line) { - return {img: "/share/local/"+line, height: 400} - })) - } - }, url: { line: function(can, line) { return {button: [line, function(event) { @@ -467,6 +443,14 @@ Volcanos("onsyntax", {help: "语法高亮", list: ["keyword", "prefix", "line"], })) } }, + png: { + display: true, + show: function(can) { + can.page.Append(can, can.ui.display, can.core.List(can._msg.result, function(line) { + return {img: "/share/local/"+line, height: 400} + })) + } + }, jpg: { display: true, show: function(can) {