diff --git a/frame.js b/frame.js index 966b09a8..99006c80 100644 --- a/frame.js +++ b/frame.js @@ -27,6 +27,15 @@ Volcanos("onengine", {help: "解析引擎", list: [], _init: function(can, meta, }) }, + listen: shy("", {}, [], function(can, name, cb) { + arguments.callee.meta[name] = (arguments.callee.meta[name]||[]).concat(cb) + }), + trigger: function(can, msg, name) { + can.core.List(can.onengine.listen.meta[name], function(cb) { + can.core.CallFunc(cb, {"msg": msg}) + }) + }, + search: function(event, can, msg, pane, cmds, cb) { var sub, mod = can, fun = can, key = ""; can.core.List(cmds[1].split("."), function(value) { fun && (sub = mod, mod = fun, fun = mod[value], key = value) @@ -96,6 +105,7 @@ Volcanos("onengine", {help: "解析引擎", list: [], _init: function(can, meta, "studio": {name: "研发 studio", action: [ {name: "route", help: "路由器", index: "web.route"}, {name: "tmux", help: "命令行", index: "web.code.tmux.session"}, + {name: "inner", help: "编辑器", index: "web.code.inner", args: ["src/", "main.go"]}, {name: "vimer", help: "编辑器", index: "web.code.vimer", args: ["src/", "main.go"]}, {name: "repos", help: "代码库", index: "web.code.git.status"}, {name: "total", help: "统计量", index: "web.code.git.total"}, diff --git a/lib/core.js b/lib/core.js index 7be259de..7c5bd457 100644 --- a/lib/core.js +++ b/lib/core.js @@ -74,10 +74,10 @@ Volcanos("core", {help: "核心模块", var ls = func.toString(); ls = ls.split(")")[0], ls = ls.split("(")[1] - var echo = false - var list = []; this.List(ls.split(","), function(item) { - list.push(args[item.trim()]||args) - if (item == "cb") { echo = true} + var msg = args["msg"], echo = false + var list = []; this.List(ls.split(","), function(item) { item = item.trim() + list.push(args[item]||msg&&msg.Option(item)||args) + if (item == "cb") { echo = true } }) var res = typeof func == "function" && func.apply(mod||this, list) diff --git a/pane/Action.js b/pane/Action.js index 5d995d27..bce8c5b0 100644 --- a/pane/Action.js +++ b/pane/Action.js @@ -55,13 +55,16 @@ Volcanos("onengine", {help: "解析引擎", list: [], }, }) Volcanos("onaction", {help: "交互操作", list: [], _init: function(can, msg, list, cb, target) { - can.page.Cache(can.Conf(RIVER)+"."+can.Conf(STORM), can._output, can._output.scrollTop+1) - var river = can.Conf(RIVER, msg.Option(RIVER)), storm = can.Conf(STORM, msg.Option(STORM)) - var position = can.Conf(ACTION, msg.Option(ACTION, can.page.Cache(river+"."+storm, can._output)||"")) - if (position) { can._output.scrollTo(0, position-1); return } + can.onengine.listen(can, "storm.select", function(msg, river, storm) { + can.page.Cache(can.Conf(RIVER)+"."+can.Conf(STORM), can._output, can._output.scrollTop+1) + can.Conf(RIVER, river), can.Conf(STORM, storm) - can.run({}, [river, storm], function(msg) { - can.onimport._init(can, msg, list, cb, can._output) + var position = can.page.Cache(river+"."+storm, can._output) + if (position) { can._output.scrollTo(0, position-1); return } + + can.run({}, [river, storm], function(msg) { + can.onimport._init(can, msg, list, cb, can._output) + }) }) }, }) diff --git a/pane/Header.js b/pane/Header.js index 1f4e5983..9c33a85f 100644 --- a/pane/Header.js +++ b/pane/Header.js @@ -90,8 +90,12 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, }) }) }, - time: function(can, target) { target.innerHTML = can.base.Time(null, "%w %H:%M:%S") - can._topic || can.user.Search(can, TOPIC) || can.user.Search(can, POD) || can.user.topic(can, can.base.isNight()? "black": "white") + topic: function(can, topic) { + can.user.topic(can, topic || can._topic || can.user.Search(can, TOPIC) || can.user.Search(can, POD) || (can.base.isNight()? "black": "white")) + }, + time: function(can, target) { + can.onimport.topic(can) + target.innerHTML = can.base.Time(null, "%w %H:%M:%S") }, }) Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, msg, list, cb, target) { @@ -99,13 +103,15 @@ Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, msg, can.onimport._init(can, msg, list, function(msg) { typeof cb == "function" && cb(msg) can.run({}, ["search", "River.onaction._init"]) + can.run({}, ["search", "Action.onaction._init"]) can.run({}, ["search", "Footer.onaction._init"]) }, can._output) }) } - can.user.topic(can, can.user.Search(can, TOPIC) || (can.user.Search(can, POD)||can.base.isNight() ? "black": "white")) + can.onimport.topic(can) can.user.isLocalFile? init(): can.run({}, ["check"], function(msg) { msg.Result()? init(): can.user.login(can, init) }) }, + title: function(event, can) { var args = {}; can.core.List([POD, TOPIC, TITLE], function(key) { var value = can.user.Search(can, key); value && (args[key] = value) diff --git a/pane/River.js b/pane/River.js index 418e4869..b252196c 100644 --- a/pane/River.js +++ b/pane/River.js @@ -64,7 +64,7 @@ Volcanos("onaction", {help: "控件交互", list: [], _init: function(can, msg, }, action: function(event, can, river, storm) { var msg = can.request(event, {river: can.Conf(RIVER, river), storm: can.Conf(STORM, storm)}) - can.run(event, ["search", "Action.onaction._init"]) + can.onengine.trigger(can, msg, "storm.select") can.page.Select(can, can._output, "div.item.select", function(item) { can.page.ClassList.del(can, item, "select")