mirror of
https://shylinux.com/x/volcanos
synced 2025-04-26 01:04:06 +08:00
opt vimer.js
This commit is contained in:
parent
7692d4069f
commit
0d60be84d0
46
frame.js
46
frame.js
@ -16,7 +16,7 @@ Volcanos("onengine", {help: "搜索引擎", list: [], _init: function(can, meta,
|
|||||||
}, target)
|
}, target)
|
||||||
}, function() { can.misc.Log(can.user.title(), ice.RUN, can)
|
}, function() { can.misc.Log(can.user.title(), ice.RUN, can)
|
||||||
can.require([can.volcano], null, function(can, name, sub) { can[name] = sub })
|
can.require([can.volcano], null, function(can, name, sub) { can[name] = sub })
|
||||||
can.onlayout.topic(can), can.onmotion._init(can, target), can.onkeypop._init(can)
|
can.onlayout.topic(can), can.onmotion._init(can, target), can.onkeymap._init(can)
|
||||||
can.ondaemon._init(can), can.onengine.signal(can, chat.ONMAIN, can.request())
|
can.ondaemon._init(can), can.onengine.signal(can, chat.ONMAIN, can.request())
|
||||||
can.base.isFunc(cb) && cb()
|
can.base.isFunc(cb) && cb()
|
||||||
}), can.onmotion.float.auto(can, document.body)
|
}), can.onmotion.float.auto(can, document.body)
|
||||||
@ -448,9 +448,9 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
|||||||
can.onengine.signal(can, "keymap.focus", can.request({}, {cb: function(event) {
|
can.onengine.signal(can, "keymap.focus", can.request({}, {cb: function(event) {
|
||||||
if (event.target.tagName == "INPUT") { return }
|
if (event.target.tagName == "INPUT") { return }
|
||||||
if (event.key == lang.ESCAPE) { ui.close(); return }
|
if (event.key == lang.ESCAPE) { ui.close(); return }
|
||||||
if (event.key == ice.SP) { input.focus(), can.onkeypop.prevent(event) }
|
if (event.key == ice.SP) { input.focus(), can.onkeymap.prevent(event) }
|
||||||
}}))
|
}}))
|
||||||
}, onkeydown: function(event) { can.onkeypop.input(event, can)
|
}, onkeydown: function(event) { can.onkeymap.input(event, can)
|
||||||
if (event.key != lang.ENTER) { return }
|
if (event.key != lang.ENTER) { return }
|
||||||
event.target.setSelectionRange(0, -1)
|
event.target.setSelectionRange(0, -1)
|
||||||
|
|
||||||
@ -681,7 +681,7 @@ Volcanos("onmotion", {help: "动态特效", list: [], _init: function(can, targe
|
|||||||
event.target.value == back || cb(event, event.target.value, back)
|
event.target.value == back || cb(event, event.target.value, back)
|
||||||
break
|
break
|
||||||
case lang.ESCAPE: target.innerHTML = back; break
|
case lang.ESCAPE: target.innerHTML = back; break
|
||||||
default: can.onkeypop.input(event, can)
|
default: can.onkeymap.input(event, can)
|
||||||
}
|
}
|
||||||
}, _init: function(target) {
|
}, _init: function(target) {
|
||||||
item && can.onappend.figure(can, item, target), target.value = text
|
item && can.onappend.figure(can, item, target), target.value = text
|
||||||
@ -700,7 +700,7 @@ Volcanos("onmotion", {help: "动态特效", list: [], _init: function(can, targe
|
|||||||
}
|
}
|
||||||
break
|
break
|
||||||
case lang.ESCAPE: target.innerHTML = back; break
|
case lang.ESCAPE: target.innerHTML = back; break
|
||||||
default: can.onkeypop.input(event, can)
|
default: can.onkeymap.input(event, can)
|
||||||
}
|
}
|
||||||
}, _init: function(target) {
|
}, _init: function(target) {
|
||||||
item && can.onappend.figure(can, item, target)
|
item && can.onappend.figure(can, item, target)
|
||||||
@ -736,7 +736,7 @@ Volcanos("onmotion", {help: "动态特效", list: [], _init: function(can, targe
|
|||||||
can.page.Modify(can, target, {style: {left: layout.left, top: layout.top}})
|
can.page.Modify(can, target, {style: {left: layout.left, top: layout.top}})
|
||||||
}
|
}
|
||||||
can.base.isFunc(cb) && cb(target)
|
can.base.isFunc(cb) && cb(target)
|
||||||
can.onkeypop.prevent(event)
|
can.onkeymap.prevent(event)
|
||||||
}
|
}
|
||||||
can.base.isFunc(cb) && cb(target)
|
can.base.isFunc(cb) && cb(target)
|
||||||
},
|
},
|
||||||
@ -775,12 +775,12 @@ Volcanos("onmotion", {help: "动态特效", list: [], _init: function(can, targe
|
|||||||
case "n":
|
case "n":
|
||||||
var total = select(target._index)
|
var total = select(target._index)
|
||||||
select(target._index = ((target._index)+1) % total)
|
select(target._index = ((target._index)+1) % total)
|
||||||
can.onkeypop.prevent(event)
|
can.onkeymap.prevent(event)
|
||||||
break
|
break
|
||||||
case "p":
|
case "p":
|
||||||
var total = select(target._index)
|
var total = select(target._index)
|
||||||
select(target._index = (target._index-1) < 0? total-1: (target._index-1))
|
select(target._index = (target._index-1) < 0? total-1: (target._index-1))
|
||||||
can.onkeypop.prevent(event)
|
can.onkeymap.prevent(event)
|
||||||
break
|
break
|
||||||
default: target._index = 0
|
default: target._index = 0
|
||||||
}
|
}
|
||||||
@ -825,7 +825,7 @@ Volcanos("onmotion", {help: "动态特效", list: [], _init: function(can, targe
|
|||||||
can.Status(kit.Dict(mdb.TOTAL, total, mdb.INDEX, target._index))
|
can.Status(kit.Dict(mdb.TOTAL, total, mdb.INDEX, target._index))
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
Volcanos("onkeypop", {help: "键盘交互", list: [], _focus: [], _init: function(can, target) {
|
Volcanos("onkeymap", {help: "键盘交互", list: [], _focus: [], _init: function(can, target) {
|
||||||
document.body.onkeydown = function(event) { var msg = can.request(event)
|
document.body.onkeydown = function(event) { var msg = can.request(event)
|
||||||
msg.Option("model", "normal"); if (event.target.tagName == "SELECT" || event.target.tagName == "INPUT" || event.target.tagName == "TEXTAREA") {
|
msg.Option("model", "normal"); if (event.target.tagName == "SELECT" || event.target.tagName == "INPUT" || event.target.tagName == "TEXTAREA") {
|
||||||
msg.Option("model", event.ctrlKey? "insert_ctrl": "insert")
|
msg.Option("model", event.ctrlKey? "insert_ctrl": "insert")
|
||||||
@ -835,16 +835,16 @@ Volcanos("onkeypop", {help: "键盘交互", list: [], _focus: [], _init: functio
|
|||||||
if (msg.Option(ice.MSG_HANDLE) == ice.TRUE) { return }
|
if (msg.Option(ice.MSG_HANDLE) == ice.TRUE) { return }
|
||||||
can.onengine.signal(can, "onkeydown", msg)
|
can.onengine.signal(can, "onkeydown", msg)
|
||||||
if (msg.Option(ice.MSG_HANDLE) == ice.TRUE) { return }
|
if (msg.Option(ice.MSG_HANDLE) == ice.TRUE) { return }
|
||||||
can._keylist = can.onkeypop._parse(event, can, msg.Option("model"), can._keylist||[], can._output)
|
can._keylist = can.onkeymap._parse(event, can, msg.Option("model"), can._keylist||[], can._output)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
_build: function(can) {
|
_build: function(can) {
|
||||||
can.core.Item(can.onkeypop._mode, function(item, value) { var engine = {}
|
can.core.Item(can.onkeymap._mode, function(item, value) { var engine = {}
|
||||||
can.core.Item(value, function(key, cb) { var map = engine
|
can.core.Item(value, function(key, cb) { var map = engine
|
||||||
for (var i = key.length-1; i > -1; i--) {
|
for (var i = key.length-1; i > -1; i--) {
|
||||||
map = map[key[i]] = i == 0? cb: (map[key[i]]||{})
|
map = map[key[i]] = i == 0? cb: (map[key[i]]||{})
|
||||||
}
|
}
|
||||||
}), can.onkeypop._engine[item] = engine
|
}), can.onkeymap._engine[item] = engine
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
_parse: function(event, can, mode, list, target) { list = list||[], list.push(event.key)
|
_parse: function(event, can, mode, list, target) { list = list||[], list.push(event.key)
|
||||||
@ -854,15 +854,15 @@ Volcanos("onkeypop", {help: "键盘交互", list: [], _focus: [], _init: functio
|
|||||||
|
|
||||||
function repeat(cb, count) { list = []
|
function repeat(cb, count) { list = []
|
||||||
for (var i = 1; i <= count; i++) { if (cb(event, can, target, count)) { break } }
|
for (var i = 1; i <= count; i++) { if (cb(event, can, target, count)) { break } }
|
||||||
// can.onkeypop.prevent(event)
|
// can.onkeymap.prevent(event)
|
||||||
}
|
}
|
||||||
|
|
||||||
var map = can.onkeypop._mode[mode]
|
var map = can.onkeymap._mode[mode]
|
||||||
var cb = map && map[event.key.toLowerCase()]; if (can.base.isFunc(cb) && event.key.length > 1) {
|
var cb = map && map[event.key.toLowerCase()]; if (can.base.isFunc(cb) && event.key.length > 1) {
|
||||||
repeat(cb, count); return list
|
repeat(cb, count); return list
|
||||||
}
|
}
|
||||||
|
|
||||||
var map = can.onkeypop._engine[mode]||{}; for (var i = list.length-1; i > pre-1; i--) {
|
var map = can.onkeymap._engine[mode]||{}; for (var i = list.length-1; i > pre-1; i--) {
|
||||||
var cb = map[list[i]]||{}; switch (typeof cb) {
|
var cb = map[list[i]]||{}; switch (typeof cb) {
|
||||||
case lang.FUNCTION: repeat(cb, count); return list
|
case lang.FUNCTION: repeat(cb, count); return list
|
||||||
case lang.OBJECT: map = cb; continue
|
case lang.OBJECT: map = cb; continue
|
||||||
@ -878,7 +878,7 @@ Volcanos("onkeypop", {help: "键盘交互", list: [], _focus: [], _init: functio
|
|||||||
target.blur()
|
target.blur()
|
||||||
},
|
},
|
||||||
jk: function(event, can, target) {
|
jk: function(event, can, target) {
|
||||||
can.onkeypop.DelText(target, target.selectionStart-1, target.selectionStart)
|
can.onkeymap.DelText(target, target.selectionStart-1, target.selectionStart)
|
||||||
target.blur()
|
target.blur()
|
||||||
},
|
},
|
||||||
enter: function(event, can, target) {
|
enter: function(event, can, target) {
|
||||||
@ -916,16 +916,16 @@ Volcanos("onkeypop", {help: "键盘交互", list: [], _focus: [], _init: functio
|
|||||||
},
|
},
|
||||||
|
|
||||||
u: function(event, can, target) {
|
u: function(event, can, target) {
|
||||||
can.onkeypop.DelText(target, 0, target.selectionEnd)
|
can.onkeymap.DelText(target, 0, target.selectionEnd)
|
||||||
},
|
},
|
||||||
k: function(event, can, target) {
|
k: function(event, can, target) {
|
||||||
can.onkeypop.DelText(target, target.selectionStart)
|
can.onkeymap.DelText(target, target.selectionStart)
|
||||||
},
|
},
|
||||||
h: function(event, can, target) {
|
h: function(event, can, target) {
|
||||||
can.onkeypop.DelText(target, target.selectionStart-1, target.selectionStart)
|
can.onkeymap.DelText(target, target.selectionStart-1, target.selectionStart)
|
||||||
},
|
},
|
||||||
d: function(event, can, target) {
|
d: function(event, can, target) {
|
||||||
can.onkeypop.DelText(target, 0, target.selectionStart)
|
can.onkeymap.DelText(target, 0, target.selectionStart)
|
||||||
},
|
},
|
||||||
w: function(event, can, target) {
|
w: function(event, can, target) {
|
||||||
var start = target.selectionStart-2
|
var start = target.selectionStart-2
|
||||||
@ -938,14 +938,14 @@ Volcanos("onkeypop", {help: "键盘交互", list: [], _focus: [], _init: functio
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
can.onkeypop.DelText(target, i+1, end-i)
|
can.onkeymap.DelText(target, i+1, end-i)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}, _engine: {},
|
}, _engine: {},
|
||||||
|
|
||||||
input: function(event, can) { var target = event.target
|
input: function(event, can) { var target = event.target
|
||||||
target._keys = can.onkeypop._parse(event, can, event.ctrlKey? "insert_ctrl": mdb.INSERT, target._keys||[], target)
|
target._keys = can.onkeymap._parse(event, can, event.ctrlKey? "insert_ctrl": mdb.INSERT, target._keys||[], target)
|
||||||
if (target._keys.length == 0 && target.tagName == "INPUT") { can.onkeypop.prevent(event) }
|
if (target._keys.length == 0 && target.tagName == "INPUT") { can.onkeymap.prevent(event) }
|
||||||
},
|
},
|
||||||
DelText: function(target, start, count) {
|
DelText: function(target, start, count) {
|
||||||
target.value = target.value.substring(0, start)+target.value.substring(start+(count||target.value.length), target.value.length)
|
target.value = target.value.substring(0, start)+target.value.substring(start+(count||target.value.length), target.value.length)
|
||||||
|
@ -114,7 +114,7 @@ Volcanos("page", {help: "用户界面", ClassList: {
|
|||||||
type = html.BUTTON, name = name||list[0]
|
type = html.BUTTON, name = name||list[0]
|
||||||
data.innerText = can.user.trans(can, list[0]), data.onclick = function(event) {
|
data.innerText = can.user.trans(can, list[0]), data.onclick = function(event) {
|
||||||
can.base.isFunction(list[1]) && list[1](event, name)
|
can.base.isFunction(list[1]) && list[1](event, name)
|
||||||
can.onkeypop.prevent(event)
|
can.onkeymap.prevent(event)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -190,7 +190,7 @@ Volcanos("user", {help: "用户操作", agent: {
|
|||||||
var input = can.page.Append(can, event.target.parentNode, [{type: html.TEXTAREA, value: text}]).first
|
var input = can.page.Append(can, event.target.parentNode, [{type: html.TEXTAREA, value: text}]).first
|
||||||
can.onmotion.focus(can, input), document.execCommand("Copy")
|
can.onmotion.focus(can, input), document.execCommand("Copy")
|
||||||
can.page.Remove(can, input), can.user.toastSuccess(can)
|
can.page.Remove(can, input), can.user.toastSuccess(can)
|
||||||
can.onkeypop.prevent(event)
|
can.onkeymap.prevent(event)
|
||||||
},
|
},
|
||||||
carte: function(event, can, meta, list, cb, parent) {
|
carte: function(event, can, meta, list, cb, parent) {
|
||||||
meta = meta||can.ondetail||can.onaction||{}, list = list&&list.length > 0? list: meta.list||[]; if (list.length == 0) { return }
|
meta = meta||can.ondetail||can.onaction||{}, list = list&&list.length > 0? list: meta.list||[]; if (list.length == 0) { return }
|
||||||
@ -214,9 +214,9 @@ Volcanos("user", {help: "用户操作", agent: {
|
|||||||
var carte = {_target: ui._target, _parent: parent}
|
var carte = {_target: ui._target, _parent: parent}
|
||||||
null && can.onmotion.float.add(can, chat.CARTE, carte)
|
null && can.onmotion.float.add(can, chat.CARTE, carte)
|
||||||
ui._target.onmouseover = function(event) {
|
ui._target.onmouseover = function(event) {
|
||||||
can.onkeypop.prevent(event)
|
can.onkeymap.prevent(event)
|
||||||
}
|
}
|
||||||
return can.onkeypop.prevent(event), carte
|
return can.onkeymap.prevent(event), carte
|
||||||
},
|
},
|
||||||
carteRight: function(event, can, meta, list, cb, parent) {
|
carteRight: function(event, can, meta, list, cb, parent) {
|
||||||
var carte = can.user.carte(event, can, meta, list, cb, parent)
|
var carte = can.user.carte(event, can, meta, list, cb, parent)
|
||||||
|
@ -49,7 +49,7 @@ Volcanos({name: "chat", panels: [
|
|||||||
}},
|
}},
|
||||||
project: {name: "研发群", storm: {
|
project: {name: "研发群", storm: {
|
||||||
studio: {name: "研发 studio", list: [
|
studio: {name: "研发 studio", list: [
|
||||||
{name: "vimer", help: "编辑器", index: "web.code.inner", args: ["src/", "main.go"], _action: ["autogen", "compile", "binpack"]},
|
{name: "vimer", help: "编辑器", index: "web.code.vimer", args: ["src/", "main.go"], _action: ["autogen", "compile", "binpack"]},
|
||||||
{name: "repos", help: "代码库", index: "web.code.git.status"},
|
{name: "repos", help: "代码库", index: "web.code.git.status"},
|
||||||
{name: "plan", help: "任务表", index: "web.team.plan"},
|
{name: "plan", help: "任务表", index: "web.team.plan"},
|
||||||
{name: "ctx", help: "上下文", index: "web.wiki.word", args: ["src/main.shy"]},
|
{name: "ctx", help: "上下文", index: "web.wiki.word", args: ["src/main.shy"]},
|
||||||
|
@ -9,7 +9,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg)
|
|||||||
can.onappend.plugin(can, item, function(sub, meta, skip) {
|
can.onappend.plugin(can, item, function(sub, meta, skip) {
|
||||||
can.onimport._plugin(can, river, storm, sub, meta), skip || next()
|
can.onimport._plugin(can, river, storm, sub, meta), skip || next()
|
||||||
})
|
})
|
||||||
}, function() { can.onimport._menu(can, msg), can.onkeypop._init(can)
|
}, function() { can.onimport._menu(can, msg), can.onkeymap._init(can)
|
||||||
can.onaction.layout(can, can.misc.SearchOrConf(can, chat.LAYOUT))
|
can.onaction.layout(can, can.misc.SearchOrConf(can, chat.LAYOUT))
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
@ -153,9 +153,9 @@ Volcanos("onaction", {help: "交互操作", list: [], _init: function(can, cb, t
|
|||||||
can.onlayout._init(can)
|
can.onlayout._init(can)
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
Volcanos("onkeypop", {help: "键盘交互", list: [], _focus: [], _init: function(can, target) {
|
Volcanos("onkeymap", {help: "键盘交互", list: [], _focus: [], _init: function(can, target) {
|
||||||
can.onkeypop._build(can), can.onengine.listen(can, "onkeydown", function(msg, model) {
|
can.onkeymap._build(can), can.onengine.listen(can, "onkeydown", function(msg, model) {
|
||||||
can._keylist = can.onkeypop._parse(msg._event, can, model, can._keylist||[], can._output)
|
can._keylist = can.onkeymap._parse(msg._event, can, model, can._keylist||[], can._output)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
_mode: {
|
_mode: {
|
||||||
|
@ -29,7 +29,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
},
|
},
|
||||||
_cli: function(can, msg, target) {
|
_cli: function(can, msg, target) {
|
||||||
can.onappend.input(can, {type: html.TEXT, name: "cmd", onkeydown: function(event) {
|
can.onappend.input(can, {type: html.TEXT, name: "cmd", onkeydown: function(event) {
|
||||||
can.onkeypop.input(event, can); if (event.key != lang.ENTER) { return }
|
can.onkeymap.input(event, can); if (event.key != lang.ENTER) { return }
|
||||||
switch (event.target.value) {
|
switch (event.target.value) {
|
||||||
case cli.CLEAR: can.cli && can.cli.close(); break
|
case cli.CLEAR: can.cli && can.cli.close(); break
|
||||||
case cli.CLOSE: can.cli && can.cli.close(); break
|
case cli.CLOSE: can.cli && can.cli.close(); break
|
||||||
|
@ -62,7 +62,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
},
|
},
|
||||||
_search: function(can, msg, target) {
|
_search: function(can, msg, target) {
|
||||||
var ui = can.onappend.input(can, {type: html.TEXT, name: mdb.SEARCH, onkeydown: function(event) {
|
var ui = can.onappend.input(can, {type: html.TEXT, name: mdb.SEARCH, onkeydown: function(event) {
|
||||||
can.onkeypop.input(event, can); switch (event.key) {
|
can.onkeymap.input(event, can); switch (event.key) {
|
||||||
case lang.ENTER: can.onengine.signal(can, "onopensearch", can.request(event, {type: "*", word: event.target.value}))
|
case lang.ENTER: can.onengine.signal(can, "onopensearch", can.request(event, {type: "*", word: event.target.value}))
|
||||||
}
|
}
|
||||||
}}, "", target, "title search").parentNode
|
}}, "", target, "title search").parentNode
|
||||||
|
@ -49,10 +49,10 @@ Volcanos("onaction", {help: "交互操作", list: [cli.CLEAR, cli.CLOSE, cli.DON
|
|||||||
onlogin: function(can, msg) {
|
onlogin: function(can, msg) {
|
||||||
can.onappend._action(can, can.Conf(html.ACTION)||can.onaction.list)
|
can.onappend._action(can, can.Conf(html.ACTION)||can.onaction.list)
|
||||||
can.ui = can.page.Append(can, can._output, [
|
can.ui = can.page.Append(can, can._output, [
|
||||||
{input: ["word", function(event) { can.onkeypop.input(event, can)
|
{input: ["word", function(event) { can.onkeymap.input(event, can)
|
||||||
if (event.key == lang.ESCAPE) { can.onmotion.hide(can) }
|
if (event.key == lang.ESCAPE) { can.onmotion.hide(can) }
|
||||||
|
|
||||||
if (event.key == lang.ENTER) { can.onkeypop.prevent(event)
|
if (event.key == lang.ENTER) { can.onkeymap.prevent(event)
|
||||||
if (event.shiftKey) { var first = can.page.Select(can, can.ui.content, html.TR)[1]
|
if (event.shiftKey) { var first = can.page.Select(can, can.ui.content, html.TR)[1]
|
||||||
return can.onaction[can.type == "*"? chat.PLUGIN: html.SELECT](event, can, first.dataset.index)
|
return can.onaction[can.type == "*"? chat.PLUGIN: html.SELECT](event, can, first.dataset.index)
|
||||||
}
|
}
|
||||||
|
@ -20,18 +20,18 @@ Volcanos("onaction", {help: "控件交互", list: [], _init: function(can, meta,
|
|||||||
onchange: function(event, can) {
|
onchange: function(event, can) {
|
||||||
if (can.Conf(mdb.TYPE) == html.SELECT) { can.run(event) }
|
if (can.Conf(mdb.TYPE) == html.SELECT) { can.run(event) }
|
||||||
},
|
},
|
||||||
onkeydown: function(event, can) { can.onkeypop.input(event, can, event.target)
|
onkeydown: function(event, can) { can.onkeymap.input(event, can, event.target)
|
||||||
if (can.Conf(mdb.TYPE) == html.TEXTAREA) { if (!event.ctrlKey) { return } }
|
if (can.Conf(mdb.TYPE) == html.TEXTAREA) { if (!event.ctrlKey) { return } }
|
||||||
if (event.key == lang.ENTER) {
|
if (event.key == lang.ENTER) {
|
||||||
can.run(event), can.onmotion.focus(can, event.target)
|
can.run(event), can.onmotion.focus(can, event.target)
|
||||||
can.onkeypop.prevent(event)
|
can.onkeymap.prevent(event)
|
||||||
} if (!event.ctrlKey) { return }
|
} if (!event.ctrlKey) { return }
|
||||||
|
|
||||||
switch (event.key) {
|
switch (event.key) {
|
||||||
case "b": can.CloneInput(); break
|
case "b": can.CloneInput(); break
|
||||||
case "m": can.CloneField(); break
|
case "m": can.CloneField(); break
|
||||||
default: return
|
default: return
|
||||||
} can.onkeypop.prevent(event)
|
} can.onkeymap.prevent(event)
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@ Volcanos("onfigure", {help: "控件详情", list: [], key: {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (event.ctrlKey && ["n", "p"].indexOf(event.key) > -1) {
|
if (event.ctrlKey && ["n", "p"].indexOf(event.key) > -1) {
|
||||||
return can.onkeypop.prevent(event)
|
return can.onkeymap.prevent(event)
|
||||||
}
|
}
|
||||||
switch (event.key) { case lang.ESCAPE: event.target.blur(); return }
|
switch (event.key) { case lang.ESCAPE: event.target.blur(); return }
|
||||||
can.base.isFunc(last) && last(event, can)
|
can.base.isFunc(last) && last(event, can)
|
||||||
|
@ -15,28 +15,23 @@ fieldset.inner>div.action div.tabs.select {
|
|||||||
fieldset.inner>div.output {
|
fieldset.inner>div.output {
|
||||||
color:white;
|
color:white;
|
||||||
}
|
}
|
||||||
fieldset.inner table.layout div.toggle.project {
|
fieldset.inner>div.output>table.layout div.toggle.project {
|
||||||
min-width:15px; font-size:24px;
|
min-width:15px; font-size:24px;
|
||||||
}
|
}
|
||||||
fieldset.inner table.layout div.toggle.profile {
|
fieldset.inner>div.output>table.layout div.toggle.profile {
|
||||||
min-width:15px; font-size:24px;
|
min-width:15px; font-size:24px;
|
||||||
}
|
}
|
||||||
fieldset.inner table.layout div.toggle.display {
|
fieldset.inner>div.output>table.layout div.toggle.display {
|
||||||
height:15px; font-size:24px;
|
height:15px; font-size:24px;
|
||||||
margin-top:-17px;
|
margin-top:-17px;
|
||||||
}
|
}
|
||||||
fieldset.inner div.output div.toggle {
|
|
||||||
/* display:none; */
|
|
||||||
}
|
|
||||||
fieldset.inner>div.output div.project {
|
fieldset.inner>div.output div.project {
|
||||||
font-size:14px; font-family:monospace;
|
font-size:14px; font-family:monospace;
|
||||||
max-width:180px; overflow:auto;
|
max-width:180px; overflow:auto;
|
||||||
}
|
}
|
||||||
fieldset.inner>div.output>table.layout div.content {
|
fieldset.inner>div.output div.content {
|
||||||
position:relative;
|
position:relative;
|
||||||
padding-right:25px;
|
padding-right:25px;
|
||||||
}
|
|
||||||
fieldset.inner>div.output div.content {
|
|
||||||
font-size:16px; font-family:monospace;
|
font-size:16px; font-family:monospace;
|
||||||
overflow:auto;
|
overflow:auto;
|
||||||
color:white;
|
color:white;
|
||||||
@ -82,9 +77,6 @@ fieldset.inner>div.output div.content td.text span.constant {
|
|||||||
fieldset.inner>div.output div.content td.text span.string {
|
fieldset.inner>div.output div.content td.text span.string {
|
||||||
color:magenta;
|
color:magenta;
|
||||||
}
|
}
|
||||||
fieldset.inner>div.output div.display {
|
|
||||||
/* display:none; */
|
|
||||||
}
|
|
||||||
fieldset.inner>div.output div.display>div.action>div.item {
|
fieldset.inner>div.output div.display>div.action>div.item {
|
||||||
float:left;
|
float:left;
|
||||||
}
|
}
|
||||||
@ -107,7 +99,6 @@ fieldset.inner div.output fieldset.toolkit {
|
|||||||
}
|
}
|
||||||
fieldset.inner>div.output fieldset.toolkit>div.output>fieldset {
|
fieldset.inner>div.output fieldset.toolkit>div.output>fieldset {
|
||||||
display:none; margin:0;padding:0;
|
display:none; margin:0;padding:0;
|
||||||
/* float:right; */
|
|
||||||
}
|
}
|
||||||
fieldset.inner>div.output fieldset.toolkit>div.output>fieldset.select {
|
fieldset.inner>div.output fieldset.toolkit>div.output>fieldset.select {
|
||||||
display:block;
|
display:block;
|
||||||
|
@ -56,9 +56,9 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, cb, target
|
|||||||
plug: can.core.Split(msg.OptionOrSearch("plug")).reverse(),
|
plug: can.core.Split(msg.OptionOrSearch("plug")).reverse(),
|
||||||
tabs: can.core.Split(msg.OptionOrSearch("tabs")),
|
tabs: can.core.Split(msg.OptionOrSearch("tabs")),
|
||||||
}) }) },
|
}) }) },
|
||||||
_keydown: function(can) { can.onkeypop._build(can)
|
_keydown: function(can) { can.onkeymap._build(can)
|
||||||
can.user.mod.isCmd && can.onengine.listen(can, chat.ONKEYDOWN, function(event) {
|
can.user.mod.isCmd && can.onengine.listen(can, chat.ONKEYDOWN, function(event) {
|
||||||
can._key_list = can.onkeypop._parse(event, can, "normal", can._key_list, can.ui.content)
|
can._key_list = can.onkeymap._parse(event, can, "command", can._key_list, can.ui.content)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -72,6 +72,7 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, cb, target
|
|||||||
}, true)
|
}, true)
|
||||||
},
|
},
|
||||||
tabview: function(can, path, file, line, cb) { var key = path+ice.DF+file
|
tabview: function(can, path, file, line, cb) { var key = path+ice.DF+file
|
||||||
|
can.onkeymap._command(can)
|
||||||
if (can.tabview[key]) { can.user.mod.isCmd && can.user.title(path+file)
|
if (can.tabview[key]) { can.user.mod.isCmd && can.user.title(path+file)
|
||||||
can._msg && can._msg.Option(nfs.LINE, can.Option(nfs.LINE)), can._msg = can.tabview[key]
|
can._msg && can._msg.Option(nfs.LINE, can.Option(nfs.LINE)), can._msg = can.tabview[key]
|
||||||
can.Option({path: path, file: file, line: line||can._msg.Option(nfs.LINE)||1})
|
can.Option({path: path, file: file, line: line||can._msg.Option(nfs.LINE)||1})
|
||||||
@ -142,6 +143,7 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, cb, target
|
|||||||
can.page.styleHeight(can, can.ui.content, (can.ui.project.offsetHeight||height)-can.ui.display.offsetHeight)
|
can.page.styleHeight(can, can.ui.content, (can.ui.project.offsetHeight||height)-can.ui.display.offsetHeight)
|
||||||
}
|
}
|
||||||
can.page.styleWidth(can, can.ui.content, width-can.ui.project.offsetWidth-can.ui.profile.offsetWidth-25)
|
can.page.styleWidth(can, can.ui.content, width-can.ui.project.offsetWidth-can.ui.profile.offsetWidth-25)
|
||||||
|
|
||||||
if (can.page.ClassList.has(can, can._fields, "full")) {
|
if (can.page.ClassList.has(can, can._fields, "full")) {
|
||||||
can.page.styleHeight(can, can.ui.profile_output, can.ui.content.offsetHeight)
|
can.page.styleHeight(can, can.ui.profile_output, can.ui.content.offsetHeight)
|
||||||
} else {
|
} else {
|
||||||
@ -163,22 +165,20 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, cb, target
|
|||||||
}, [""])
|
}, [""])
|
||||||
Volcanos("onsyntax", {help: "语法高亮", list: ["keyword", "prefix", "line"], _init: function(can, msg, cb) {
|
Volcanos("onsyntax", {help: "语法高亮", list: ["keyword", "prefix", "line"], _init: function(can, msg, cb) {
|
||||||
if (can.onmotion.cache(can, function(cache_data) {
|
if (can.onmotion.cache(can, function(cache_data) {
|
||||||
can.file && (cache_data[can.file] = {
|
can.file && (cache_data[can.file] = {current: can.current, max: can.max,
|
||||||
current: can.current, max: can.max,
|
profile_display: can.ui.profile.style.display, display_display: can.ui.display.style.display,
|
||||||
profile_display: can.ui.profile.style.display,
|
|
||||||
display_display: can.ui.display.style.display,
|
|
||||||
})
|
})
|
||||||
can.file = can.base.Path(msg.Option(nfs.PATH), msg.Option(nfs.FILE))
|
can.file = can.base.Path(msg.Option(nfs.PATH), msg.Option(nfs.FILE))
|
||||||
|
can.parse = can.base.Ext(can.file), can.Status("模式", "command")
|
||||||
|
|
||||||
var p = cache_data[can.file]; p && (can.current = p.current, can.max = p.max)
|
var p = cache_data[can.file]; p && (can.current = p.current, can.max = p.max)
|
||||||
can.page.Modify(can, can.ui.profile, {style: {display: p? p.profile_display: html.NONE}})
|
can.page.Modify(can, can.ui.profile, {style: {display: p? p.profile_display: html.NONE}})
|
||||||
can.page.Modify(can, can.ui.display, {style: {display: p? p.display_display: html.NONE}})
|
can.page.Modify(can, can.ui.display, {style: {display: p? p.display_display: html.NONE}})
|
||||||
can.parse = can.base.Ext(can.file), can.Status("模式", "normal")
|
|
||||||
can.onmotion.select(can, can._action, chat.DIV_TABS, msg._tab)
|
can.onmotion.select(can, can._action, chat.DIV_TABS, msg._tab)
|
||||||
msg.Option(ctx.INDEX) && can.core.Timer(10, function() {
|
msg.Option(ctx.INDEX) && can.core.Timer(10, function() {
|
||||||
can.onmotion.focus(can, can.page.Select(can, can.ui.content, html.OPTION_ARGS)[0])
|
can.onmotion.focus(can, can.page.Select(can, can.ui.content, html.OPTION_ARGS)[0])
|
||||||
})
|
})
|
||||||
can.onimport.layout(can)
|
return can.onimport.layout(can), can.file
|
||||||
return can.file
|
|
||||||
}, can.ui.content, can.ui.profile_output, can.ui.display_output)) {
|
}, can.ui.content, can.ui.profile_output, can.ui.display_output)) {
|
||||||
return can.onaction.selectLine(can, msg.Option(nfs.LINE)), can.base.isFunc(cb) && cb()
|
return can.onaction.selectLine(can, msg.Option(nfs.LINE)), can.base.isFunc(cb) && cb()
|
||||||
}
|
}
|
||||||
@ -230,26 +230,29 @@ Volcanos("onsyntax", {help: "语法高亮", list: ["keyword", "prefix", "line"],
|
|||||||
return line
|
return line
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
Volcanos("onkeypop", {help: "导入数据", _init: function(can, msg, cb, target) {
|
Volcanos("onkeymap", {help: "导入数据", _init: function(can, msg, cb, target) {
|
||||||
},
|
},
|
||||||
_mode: {
|
_mode: {
|
||||||
normal: {
|
command: {
|
||||||
escape: function(event, can, target) { can.onaction["清屏"](event, can) },
|
escape: function(event, can) { can.onaction["清屏"](event, can) },
|
||||||
g: function(event, can, target) { can.onaction["搜索"](event, can) },
|
g: function(event, can) { can.onaction["搜索"](event, can) },
|
||||||
f: function(event, can, target) { can.onaction["打开"](event, can) },
|
f: function(event, can) { can.onaction["打开"](event, can) },
|
||||||
t: function(event, can, target) { can.onaction["添加"](event, can) },
|
t: function(event, can) { can.onaction["添加"](event, can) },
|
||||||
p: function(event, can, target) { can.onaction["插件"](event, can) },
|
p: function(event, can) { can.onaction["插件"](event, can) },
|
||||||
e: function(event, can, target) { can.onaction["扩展"](event, can) },
|
e: function(event, can) { can.onaction["扩展"](event, can) },
|
||||||
|
|
||||||
q: function(event, can, target) { can.onaction["全屏"](event, can) },
|
q: function(event, can) { can.onaction["全屏"](event, can) },
|
||||||
r: function(event, can, target) { can.onaction["执行"](event, can) },
|
r: function(event, can) { can.onaction["执行"](event, can) },
|
||||||
v: function(event, can, target) { can.onaction["展示"](event, can) },
|
v: function(event, can) { can.onaction["展示"](event, can) },
|
||||||
s: function(event, can, target) { can.onaction["保存"](event, can) },
|
s: function(event, can) { can.onaction["保存"](event, can) },
|
||||||
|
|
||||||
j: function(event, can, target) { can.onaction.scrollLine(can, 1) },
|
j: function(event, can) { can.onaction.scrollLine(can, 1) },
|
||||||
k: function(event, can, target) { can.onaction.scrollLine(can, -1) },
|
k: function(event, can) { can.onaction.scrollLine(can, -1) },
|
||||||
J: function(event, can, target) { can.onaction.scrollLine(can, 20) },
|
J: function(event, can) { can.onaction.scrollLine(can, 20) },
|
||||||
K: function(event, can, target) { can.onaction.scrollLine(can, -20) },
|
K: function(event, can) { can.onaction.scrollLine(can, -20) },
|
||||||
|
|
||||||
|
i: function(event, can) { can.onkeymap._insert(event, can) },
|
||||||
|
n: function(event, can) { can.onkeymap._normal(can) },
|
||||||
},
|
},
|
||||||
}, _engine: {},
|
}, _engine: {},
|
||||||
})
|
})
|
||||||
@ -386,10 +389,10 @@ Volcanos("onaction", {help: "控件交互", list: ["搜索", "打开", "添加",
|
|||||||
var push = {path: can.Option(nfs.PATH), file: can.Option(nfs.FILE), line: can.Option(nfs.LINE), text: can.current.text()}
|
var push = {path: can.Option(nfs.PATH), file: can.Option(nfs.FILE), line: can.Option(nfs.LINE), text: can.current.text()}
|
||||||
can.base.Eq({path: push.path, file: push.file, line: push.line}, can.history[can.history.length-1]) || can.history.push(push)
|
can.base.Eq({path: push.path, file: push.file, line: push.line}, can.history[can.history.length-1]) || can.history.push(push)
|
||||||
can.Status("跳转数", can.history.length)
|
can.Status("跳转数", can.history.length)
|
||||||
|
can.onaction._selectLine(event, can)
|
||||||
})
|
})
|
||||||
|
},
|
||||||
// can.onkeymap && can.onkeymap._mode(can, "insert")
|
_selectLine: function(event, can) {
|
||||||
// can.onkeymap && can.onkeymap.selectLine(can)
|
|
||||||
},
|
},
|
||||||
searchLine: function(event, can, value) { if (!can.ui.search) { return }
|
searchLine: function(event, can, value) { if (!can.ui.search) { return }
|
||||||
can.ui.search.Update(event, [ctx.ACTION, nfs.TAGS, value.trim()])
|
can.ui.search.Update(event, [ctx.ACTION, nfs.TAGS, value.trim()])
|
||||||
|
@ -1,51 +1,14 @@
|
|||||||
fieldset.inner>div.output td.content {
|
fieldset.vimer>div.output input.current {
|
||||||
position:relative;
|
|
||||||
}
|
|
||||||
fieldset.inner>div.output input.current {
|
|
||||||
position:absolute; padding:0; margin:0;
|
|
||||||
font-size:16px; font-family:monospace;
|
|
||||||
padding-left:9px;
|
|
||||||
|
|
||||||
background-color:#00000000; color:#00000000;
|
background-color:#00000000; color:#00000000;
|
||||||
|
font-family:monospace; font-size:16px;
|
||||||
|
position:absolute; left:0;
|
||||||
|
margin:0; margin-top:-2px;
|
||||||
|
padding:0; padding-left:9px;
|
||||||
width:-webkit-fill-available;
|
width:-webkit-fill-available;
|
||||||
}
|
}
|
||||||
fieldset.inner>div.output input.current.insert {
|
fieldset.vimer>div.output input.current.insert {
|
||||||
caret-color:yellow;
|
caret-color:yellow;
|
||||||
}
|
}
|
||||||
fieldset.inner>div.output input.current.normal {
|
fieldset.vimer>div.output input.current.normal {
|
||||||
caret-color:blue;
|
caret-color:blue;
|
||||||
}
|
}
|
||||||
fieldset.inner>div.output input.current.command {
|
|
||||||
display:none;
|
|
||||||
}
|
|
||||||
|
|
||||||
fieldset.inner>div.output input.command {
|
|
||||||
font-size:16px; font-family:monospace;
|
|
||||||
background-color:black; color:white;
|
|
||||||
caret-color:red;
|
|
||||||
|
|
||||||
border:solid 1px red;
|
|
||||||
border-left:solid 3px green;
|
|
||||||
width:-webkit-fill-available;
|
|
||||||
margin:0; padding:0 12px;
|
|
||||||
}
|
|
||||||
fieldset.inner>div.output input.command.normal {
|
|
||||||
display:none;
|
|
||||||
}
|
|
||||||
fieldset.inner>div.output input.command.insert {
|
|
||||||
display:none;
|
|
||||||
}
|
|
||||||
|
|
||||||
fieldset.inner>div.output div.display input.cmd {
|
|
||||||
font-size:16px; font-family:monospace;
|
|
||||||
background-color:black; color:white;
|
|
||||||
min-width:480px; padding-left:5px;
|
|
||||||
margin-left:2px;
|
|
||||||
}
|
|
||||||
fieldset.inner>div.output div.display div.output {
|
|
||||||
overflow:auto;
|
|
||||||
}
|
|
||||||
fieldset.inner>div.output div.display div.output {
|
|
||||||
/* max-height:160px; */
|
|
||||||
}
|
|
||||||
|
|
||||||
|
@ -1,290 +1,143 @@
|
|||||||
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) {
|
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, cb, target) {
|
||||||
can.require(["/plugin/local/code/inner.js"], function(can) {
|
can.require(["inner.js"], function(can) { can.onimport.inner_init(can, msg, function() {
|
||||||
can.onimport.inner_init(can, msg, list, function() {
|
can.onkeymap._build(can), can.onimport._input(can), can.onkeymap._normal(can), can.base.isFunc(cb) && cb(msg)
|
||||||
can.onimport._input(can), can.onimport._output(can)
|
}, target) }, function(can, name, sub) {
|
||||||
can.keylist = [], can.onkeymap._init(can, "insert")
|
name == chat.ONIMPORT && (can.onimport.inner_init = sub._init)
|
||||||
can.base.isFunc(cb) && cb(msg)
|
name == chat.ONKEYMAP && (can.base.Copy(can.onkeymap._mode, sub._mode))
|
||||||
}, target)
|
|
||||||
}, function(can, name, sub) {
|
|
||||||
sub._name == "onimport" && (can.onimport.inner_init = sub._init)
|
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
_input: function(can) {
|
_input: function(can) {
|
||||||
var ui = can.page.Append(can, can.ui.content.parentNode, [
|
can.ui.current = can.page.Append(can, can.ui.content.parentNode, [
|
||||||
{view: ["current", "input"], onkeydown: function(event) {
|
{view: ["current", html.INPUT], onkeydown: function(event) { if (event.metaKey) { return }
|
||||||
can.onkeymap.parse(event, can, "insert")
|
can._keylist = can.onkeymap._parse(event, can, can.mode, can._keylist, can.ui.current)
|
||||||
can.core.Timer(10, function() {
|
can.mode != "command" && can.core.Timer(10, function() { can.current.text(can.ui.current.value) })
|
||||||
can.current.text(can.ui.current.value)
|
can.mode == "normal" && can.onkeymap.prevent(event)
|
||||||
})
|
}, onclick: function(event) { can.onkeymap._insert(event, can) }},
|
||||||
}, onblur: function(event) {
|
]).first
|
||||||
can.current.text(can.ui.current.value)
|
|
||||||
}, onfocus: function(event) {
|
|
||||||
can._output.scrollLeft += -1000
|
|
||||||
|
|
||||||
can.current.scroll(-1000, 0)
|
|
||||||
}, onclick: function(event) {
|
|
||||||
can.onkeymap._insert(can)
|
|
||||||
}},
|
|
||||||
|
|
||||||
{view: ["command", "input"], onkeydown: function(event) {
|
|
||||||
can.onkeymap.parse(event, can, "command")
|
|
||||||
}, onfocus: function(event) {
|
|
||||||
can._output.scrollLeft += -1000
|
|
||||||
can.current.scroll(-1000, 0)
|
|
||||||
}},
|
|
||||||
]); can.base.Copy(can.ui, ui, "current", "command")
|
|
||||||
},
|
|
||||||
_output: function(can) {
|
|
||||||
var ui = can.page.Appends(can, can.ui.display, [
|
|
||||||
{view: "action", list: [
|
|
||||||
{input: ["cmd", function(event) {
|
|
||||||
can.onkeymap.parse(event, can, "command")
|
|
||||||
}], value: "", onfocus: function(event) {
|
|
||||||
event.target.setSelectionRange(0, -1)
|
|
||||||
can.onkeymap._command(can)
|
|
||||||
}},
|
|
||||||
{button: ["run", function(event) {
|
|
||||||
can.onkeymap.command.Enter(event, can, can.ui.cmd.value)
|
|
||||||
}]},
|
|
||||||
{button: ["清空", function(event) {
|
|
||||||
can.onmotion.clear(can, ui.output)
|
|
||||||
} ]},
|
|
||||||
{button: ["关闭", function(event) {
|
|
||||||
can.onmotion.hidden(can, can.ui.display)
|
|
||||||
} ]},
|
|
||||||
]}, {view: "output"},
|
|
||||||
]); can.base.Copy(can.ui, ui, "output", "cmd")
|
|
||||||
},
|
},
|
||||||
}, [""])
|
}, [""])
|
||||||
Volcanos("onkeymap", {help: "键盘交互", list: ["command", "normal", "insert"], _init: function(can, mode) {
|
Volcanos("onkeymap", {help: "键盘交互", list: [],
|
||||||
can.core.List(can.onkeymap.list, function(item) { var engine = {}
|
_model: function(can, value) { can.Status("模式", can.mode = value)
|
||||||
can.core.Item(can.onkeymap[item], function(key, cb) { var map = engine
|
return can.page.Modify(can, can.ui.current, {className: "current"+ice.SP+can.mode}), value
|
||||||
for (var i = key.length-1; i > -1; i--) {
|
|
||||||
map = map[key[i]] = i == 0? cb: (map[key[i]]||{})
|
|
||||||
}
|
|
||||||
}), can.onkeymap[item]._engine = engine
|
|
||||||
}), can.onkeymap._mode(can, mode||"normal")
|
|
||||||
},
|
},
|
||||||
_mode: function(can, value) { can.Status("模式", can.mode = value)
|
_command: function(can) { can.onkeymap._model(can, "command")
|
||||||
can.page.Modify(can, can.ui.current, {className: "current "+can.mode})
|
can.ui.current.blur()
|
||||||
can.page.Modify(can, can.ui.command, {className: "command "+can.mode})
|
|
||||||
return value
|
|
||||||
},
|
},
|
||||||
_command: function(can) { can.onkeymap._mode(can, "command")
|
_normal: function(can) { can.onkeymap._model(can, "normal")
|
||||||
if (can.ui.display.style.display == "none") {
|
|
||||||
can.page.Modify(can, can.ui.command, {style: {display: ""}})
|
|
||||||
can.ui.command.focus()
|
|
||||||
} else {
|
|
||||||
can.page.Modify(can, can.ui.display, {style: {display: "block"}})
|
|
||||||
can.ui.cmd.focus()
|
|
||||||
}
|
|
||||||
},
|
|
||||||
_normal: function(can) { can.onkeymap._mode(can, "normal")
|
|
||||||
can.ui.current.focus()
|
can.ui.current.focus()
|
||||||
},
|
},
|
||||||
_insert: function(can) { can.onkeymap._mode(can, "insert")
|
_insert: function(event, can) { can.onkeymap._model(can, "insert")
|
||||||
can.ui.current.focus()
|
can.ui.current.focus(), can.onkeymap.prevent(event)
|
||||||
|
can.ui.content.scrollLeft -= 100
|
||||||
},
|
},
|
||||||
|
|
||||||
_remote: function(event, can, key, arg, cb) { can.request(event, {_toast: "执行中..."})
|
_mode: {
|
||||||
can.run(event, arg||["action", key, can.parse, can.Option("file"), can.Option("path")], cb||function(msg) {
|
normal: {
|
||||||
can.onappend.table(can, msg, function(value, key, index) { return {text: [value, "td"]} }, can.ui.output)
|
jk: function(event, can, target) { can.onkeymap._command(can) },
|
||||||
can.onappend.board(can, msg.Result(), can.ui.output)
|
escape: function(event, can) { can.onkeymap._command(can) },
|
||||||
|
|
||||||
|
H: function(event, can, target) { can.onaction.cursorMove(can, target, 0, 0) },
|
||||||
|
h: function(event, can, target) { can.onaction.cursorMove(can, target, -1) },
|
||||||
|
l: function(event, can, target) { can.onaction.cursorMove(can, target, 1) },
|
||||||
|
L: function(event, can, target) { can.onaction.cursorMove(can, target, 0, -1) },
|
||||||
|
j: function(event, can) { can.onaction.selectLine(can, can.current.next()) },
|
||||||
|
k: function(event, can) { can.onaction.selectLine(can, can.current.prev()) },
|
||||||
|
|
||||||
|
gg: function(event, can, target, count) { return can.onaction.selectLine(can, count||1), true },
|
||||||
|
G: function(event, can, target, count) { return can.onaction.selectLine(can, count = count > 1? count: can.max), true },
|
||||||
|
zt: function(event, can, target, count) { count = count||2
|
||||||
|
var pos = can.current.offset()-target.offsetTop
|
||||||
|
can.current.scroll(0, -(pos+can.current.height()*count))
|
||||||
|
return true
|
||||||
|
},
|
||||||
|
zz: function(event, can, target, count) { count = count||5
|
||||||
|
var pos = can.current.offset()-target.offsetTop
|
||||||
|
can.current.scroll(0, -(pos+can.current.height()*count))
|
||||||
|
return true
|
||||||
|
},
|
||||||
|
zb: function(event, can, target, count) { count = count||3
|
||||||
|
var pos = can.current.offset()-target.offsetTop
|
||||||
|
can.current.scroll(0, -(pos+can.current.window()-can.current.height()*count))
|
||||||
|
return true
|
||||||
|
},
|
||||||
|
|
||||||
|
i: function(event, can) { can.onkeymap._insert(event, can) },
|
||||||
|
I: function(event, can, target) { can.onkeymap._insert(event, can)
|
||||||
|
can.onaction.cursorMove(can, target, 0, 0)
|
||||||
|
},
|
||||||
|
a: function(event, can, target) { can.onkeymap._insert(event, can)
|
||||||
|
can.onaction.cursorMove(can, target, 1)
|
||||||
|
},
|
||||||
|
A: function(event, can, target) { can.onkeymap._insert(event, can)
|
||||||
|
can.onaction.cursorMove(can, target, 0, -1)
|
||||||
|
},
|
||||||
|
o: function(event, can) { can.onkeymap._insert(event, can)
|
||||||
|
can.onaction.selectLine(can, can.onaction.insertLine(can, "", can.current.next()))
|
||||||
|
can.onkeymap._insert(event, can)
|
||||||
|
},
|
||||||
|
O: function(event, can) { can.onkeymap._insert(event, can)
|
||||||
|
can.onaction.selectLine(can, can.onaction.insertLine(can, "", can.current.line))
|
||||||
|
can.onkeymap._insert(event, can)
|
||||||
|
},
|
||||||
|
|
||||||
|
yy: function(event, can) { can._last_text = can.current.text() },
|
||||||
|
dd: function(event, can) { can._last_text = can.current.text()
|
||||||
|
var next = can.current.next()
|
||||||
|
can.onaction.deleteLine(can, can.current.line)
|
||||||
|
can.onaction.selectLine(can, next)
|
||||||
|
},
|
||||||
|
p: function(event, can) {
|
||||||
|
can.onaction.insertLine(can, can._last_text, can.current.next())
|
||||||
|
},
|
||||||
|
P: function(event, can) {
|
||||||
|
can.onaction.insertLine(can, can._last_text, can.current.line)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
insert: {
|
||||||
|
jk: function(event, can, target) { can.onkeymap._normal(can)
|
||||||
|
can.onkeymap.DelText(target, target.selectionStart-1, 1)
|
||||||
|
},
|
||||||
|
escape: function(event, can) { can.onkeymap._normal(can) },
|
||||||
|
enter: function(event, can, target) {
|
||||||
|
var left = target.value.slice(event.target.selectionEnd)
|
||||||
|
can.current.text(target.value.slice(0, event.target.selectionEnd)||"")
|
||||||
|
can.onaction.selectLine(can, can.onaction.insertLine(can, left, can.current.next()))
|
||||||
|
},
|
||||||
|
backspace: function(event, can, target) {
|
||||||
|
if (target.selectionStart > 0) { return }
|
||||||
|
can.onkeymap.prevent(event)
|
||||||
|
if (!can.current.prev()) { return }
|
||||||
|
|
||||||
|
var rest = can.current.text()
|
||||||
|
can.onaction.selectLine(can, can.current.prev())
|
||||||
|
can.onaction.deleteLine(can, can.current.next())
|
||||||
|
var pos = can.current.text().length
|
||||||
|
|
||||||
|
can.ui.current.value = can.current.text()+rest
|
||||||
|
can.onaction.cursorMove(can, can.ui.current, 0, pos)
|
||||||
|
},
|
||||||
|
arrowdown: function(event, can) {
|
||||||
|
can.onaction.selectLine(can, can.current.next())
|
||||||
|
},
|
||||||
|
arrowup: function(event, can) {
|
||||||
|
can.onaction.selectLine(can, can.current.prev())
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}, _engine: {},
|
||||||
|
})
|
||||||
|
Volcanos("onaction", {help: "控件交互", list: [nfs.SAVE],
|
||||||
|
save: function(event, can) { var msg = can.request(event, {content: can.onexport.content(can)})
|
||||||
|
can.run(event, [ctx.ACTION, nfs.SAVE, can.parse, can.Option(nfs.FILE), can.Option(nfs.PATH)], function(msg) {
|
||||||
|
can.user.toastSuccess(can)
|
||||||
}, true)
|
}, true)
|
||||||
},
|
},
|
||||||
_engine: {
|
|
||||||
e: function(event, can, line, ls) { can.onimport.tabview(can, can.Option("path"), ls[1]) },
|
|
||||||
p: function(event, can) { can.onaction["项目"](event, can) },
|
|
||||||
q: function(event, can) { can.onmotion.hidden(can, can.ui.display) },
|
|
||||||
w: function(event, can) { can.onaction.save(event, can) },
|
|
||||||
},
|
|
||||||
|
|
||||||
parse: function(event, can, mode) {
|
_selectLine: function(event, can) {
|
||||||
can.keylist.push(event.key); if (can.mode != mode) {
|
can.page.Select(can, can.current.line, "td.text", function(td) { can.current.line.appendChild(can.ui.current)
|
||||||
can.onkeypop.prevent(event)
|
can.page.Modify(can, can.ui.current, {style: kit.Dict(html.LEFT, td.offsetLeft-1, html.WIDTH,td.offsetWidth-12), value: td.innerText})
|
||||||
}; can.mode == "normal" && can.Status("按键", can.keylist.join(""))
|
can.ui.current.focus(), can.onaction.cursorMove(can, can.ui.current, 0, (event.offsetX)/13-1)
|
||||||
|
can.ui.content.scrollLeft -= td.offsetLeft
|
||||||
for (var pre = 0; pre < can.keylist.length; pre++) {
|
})
|
||||||
if ("0" <= can.keylist[pre] && can.keylist[pre] <= "9") { continue } break
|
|
||||||
}; can.count = parseInt(can.keylist.slice(0, pre).join(""))||1
|
|
||||||
|
|
||||||
function repeat(cb, count) {
|
|
||||||
for (var i = 1; i <= count; i++) { if (cb(event, can, count)) { break } }
|
|
||||||
can.keylist.length > 0 && (can.lastcmd = can.keylist), can.keylist = []
|
|
||||||
can.Status("按键", can.keylist.join(""))
|
|
||||||
}
|
|
||||||
|
|
||||||
var p = can.onsyntax[can.parse]
|
|
||||||
var cb = (p && p.keymap || can.onkeymap[can.mode])[event.key]; if (can.base.isFunc(cb)) {
|
|
||||||
return repeat(cb, can.count)
|
|
||||||
}
|
|
||||||
|
|
||||||
var map = can.onkeymap[can.mode]._engine; for (var i = can.keylist.length-1; i > pre-1; i--) {
|
|
||||||
var cb = map[can.keylist[i]]; if (can.base.isFunc(cb)) {
|
|
||||||
return repeat(cb, can.count)
|
|
||||||
}; if (can.base.isObject(cb)) { map = cb; continue }; break
|
|
||||||
}
|
|
||||||
},
|
|
||||||
command: {
|
|
||||||
Escape: function(event, can) { can.onkeymap._normal(can) },
|
|
||||||
Enter: function(event, can) { can.onmotion.hidden(can, can.ui.command)
|
|
||||||
can.page.Modify(can, can.ui.display, {style: {display: "block"}})
|
|
||||||
var line = can.ui.command.value || can.ui.cmd.value
|
|
||||||
can.ui.command.value = "", can.ui.cmd.value = line
|
|
||||||
can.onmotion.focus(can, can.ui.cmd)
|
|
||||||
|
|
||||||
can.onmotion.clear(can, can.ui.output)
|
|
||||||
var ls = can.core.Split(line+" ", " ", ",")
|
|
||||||
var cb = can.onkeymap._engine[ls[0]]; if (can.base.isFunc(cb)) {
|
|
||||||
can.onmotion.hidden(can, can.ui.display)
|
|
||||||
can.onkeymap._normal(can)
|
|
||||||
cb(event, can, line, ls)
|
|
||||||
} else {
|
|
||||||
can.onkeymap._remote(event, can, line, [ctx.ACTION, "engine"].concat(ls))
|
|
||||||
}
|
|
||||||
},
|
|
||||||
jk: function(event, can) { can.keylist = can.keylist.slice(0, -1)
|
|
||||||
can.onkeymap.command.Enter(event, can)
|
|
||||||
},
|
|
||||||
},
|
|
||||||
normal: {
|
|
||||||
":": function(event, can) {
|
|
||||||
can.onkeymap._command(can)
|
|
||||||
can.ui.command.value = ""
|
|
||||||
},
|
|
||||||
".": function(event, can) {
|
|
||||||
can.keylist = can.lastcmd
|
|
||||||
can.onkeymap.parse({key: ""}, can, "normal")
|
|
||||||
},
|
|
||||||
|
|
||||||
H: function(event, can) {
|
|
||||||
can.ui.current.setSelectionRange(0, 0)
|
|
||||||
},
|
|
||||||
h: function(event, can) {
|
|
||||||
can.ui.current.setSelectionRange(can.ui.current.selectionStart-1, can.ui.current.selectionStart-1)
|
|
||||||
},
|
|
||||||
l: function(event, can) {
|
|
||||||
can.ui.current.setSelectionRange(can.ui.current.selectionStart+1, can.ui.current.selectionStart+1)
|
|
||||||
},
|
|
||||||
L: function(event, can) {
|
|
||||||
can.ui.current.setSelectionRange(-1, -1)
|
|
||||||
},
|
|
||||||
j: function(event, can) {
|
|
||||||
can.onaction.selectLine(can, can.current.next())
|
|
||||||
},
|
|
||||||
k: function(event, can) {
|
|
||||||
can.onaction.selectLine(can, can.current.prev())
|
|
||||||
},
|
|
||||||
|
|
||||||
gg: function(event, can, count) { count = count || 1
|
|
||||||
can.onaction.selectLine(can, count)
|
|
||||||
var pos = can.current.offset()-can.ui.current.offsetTop
|
|
||||||
can.current.scroll(0, -(pos+can.current.height()*5))
|
|
||||||
return true
|
|
||||||
},
|
|
||||||
G: function(event, can, count) { count = count > 1? count: can.max
|
|
||||||
can.onaction.selectLine(can, count)
|
|
||||||
var pos = can.current.offset()-can.ui.current.offsetTop
|
|
||||||
can.current.scroll(0, -(pos+can.current.height()*5))
|
|
||||||
return true
|
|
||||||
},
|
|
||||||
zt: function(event, can, count) { count = count || 2
|
|
||||||
var pos = can.current.offset()-can.ui.current.offsetTop
|
|
||||||
can.current.scroll(0, -(pos+can.current.height()*count))
|
|
||||||
return true
|
|
||||||
},
|
|
||||||
zz: function(event, can, count) { count = count || 5
|
|
||||||
var pos = can.current.offset()-can.ui.current.offsetTop
|
|
||||||
can.current.scroll(0, -(pos+can.current.height()*count))
|
|
||||||
return true
|
|
||||||
},
|
|
||||||
zb: function(event, can, count) { count = count || 3
|
|
||||||
var pos = can.current.offset()-can.ui.current.offsetTop
|
|
||||||
can.current.scroll(0, -(pos+can.current.window()-can.current.height()*count))
|
|
||||||
return true
|
|
||||||
},
|
|
||||||
|
|
||||||
i: function(event, can) { can.onkeymap._insert(can)
|
|
||||||
},
|
|
||||||
I: function(event, can) { can.onkeymap._insert(can)
|
|
||||||
can.ui.current.setSelectionRange(0, 0)
|
|
||||||
},
|
|
||||||
a: function(event, can) { can.onkeymap._insert(can)
|
|
||||||
},
|
|
||||||
A: function(event, can) { can.onkeymap._insert(can)
|
|
||||||
can.ui.current.setSelectionRange(-1, -1)
|
|
||||||
},
|
|
||||||
o: function(event, can) { can.onkeymap._insert(can)
|
|
||||||
can.onaction.selectLine(can, can.onkeymap.insertLine(can, "", can.current.next()))
|
|
||||||
},
|
|
||||||
O: function(event, can) { can.onkeymap._insert(can)
|
|
||||||
can.onaction.selectLine(can, can.onkeymap.insertLine(can, "", can.current.line))
|
|
||||||
},
|
|
||||||
|
|
||||||
yy: function(event, can) { can.last = can.current.text() },
|
|
||||||
dd: function(event, can) { can.last = can.current.text()
|
|
||||||
var next = can.current.next()
|
|
||||||
can.onkeymap.deleteLine(can, can.current.line)
|
|
||||||
can.onaction.selectLine(can, next)
|
|
||||||
},
|
|
||||||
p: function(event, can) {
|
|
||||||
can.onkeymap.insertLine(can, can.last, can.current.next())
|
|
||||||
},
|
|
||||||
P: function(event, can) {
|
|
||||||
can.onkeymap.insertLine(can, can.last, can.current.line)
|
|
||||||
},
|
|
||||||
},
|
|
||||||
insert: {
|
|
||||||
Escape: function(event, can) { can.onkeymap._normal(can)
|
|
||||||
can.onaction.modifyLine(can, can.current, can.ui.current.value)
|
|
||||||
can.onkeypop.prevent(event)
|
|
||||||
},
|
|
||||||
Enter: function(event, can) {
|
|
||||||
var before = can.ui.current.value.slice(0, event.target.selectionEnd)
|
|
||||||
var left = can.ui.current.value.slice(event.target.selectionEnd)
|
|
||||||
can.current.text(before||"")
|
|
||||||
can.onaction.selectLine(can, can.onkeymap.insertLine(can, left, can.current.next()))
|
|
||||||
can.ui.current && can.ui.current.setSelectionRange(0, 0)
|
|
||||||
},
|
|
||||||
Backspace: function(event, can) {
|
|
||||||
if (can.ui.current.selectionStart > 0) { return }
|
|
||||||
can.onkeypop.prevent(event)
|
|
||||||
if (!can.current.prev()) { return }
|
|
||||||
|
|
||||||
var rest = can.current.text()
|
|
||||||
can.onaction.selectLine(can, can.current.prev())
|
|
||||||
var pos = can.current.text().length
|
|
||||||
|
|
||||||
rest = can.current.text()+rest
|
|
||||||
can.ui.current.value = rest
|
|
||||||
can.current.text(rest)
|
|
||||||
can.ui.current.setSelectionRange(pos, pos)
|
|
||||||
|
|
||||||
can.onkeymap.deleteLine(can, can.current.next())
|
|
||||||
},
|
|
||||||
ArrowDown: function(event, can) {
|
|
||||||
can.onaction.selectLine(can, can.current.next())
|
|
||||||
can.ui.current.setSelectionRange(can.ui.current.selectionStart, can.ui.current.selectionEnd)
|
|
||||||
},
|
|
||||||
ArrowUp: function(event, can) {
|
|
||||||
can.onaction.selectLine(can, can.current.prev())
|
|
||||||
can.ui.current.setSelectionRange(can.ui.current.selectionStart, can.ui.current.selectionEnd)
|
|
||||||
},
|
|
||||||
jk: function(event, can) {
|
|
||||||
can.onkeypop.DelText(can.ui.current, can.ui.current.selectionStart-1, 1)
|
|
||||||
can.onkeymap.insert.Escape(event, can)
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
selectLine: function(can) { var line = can.current.line
|
|
||||||
can.page.Select(can, can.current.line, "td.text", function(item) { line = item })
|
|
||||||
can.page.Modify(can, can.ui.current, {className: "current "+can.mode, value: can.current.text(), style: {
|
|
||||||
left: line.offsetLeft, top: line.offsetTop-can.current.offset()-2,
|
|
||||||
height: line.offsetHeight, width: line.offsetWidth
|
|
||||||
}})
|
|
||||||
// can.ui.current.focus()
|
|
||||||
can.ui.current.setSelectionRange(event.offsetX/13, event.offsetX/13)
|
|
||||||
can.page.Modify(can, can.ui.command, {className: "command "+can.mode})
|
|
||||||
},
|
},
|
||||||
insertLine: function(can, value, before) {
|
insertLine: function(can, value, before) {
|
||||||
var line = can.onaction.appendLine(can, value)
|
var line = can.onaction.appendLine(can, value)
|
||||||
@ -295,17 +148,9 @@ Volcanos("onkeymap", {help: "键盘交互", list: ["command", "normal", "insert"
|
|||||||
can.page.Remove(can, line)
|
can.page.Remove(can, line)
|
||||||
can.onaction.rerankLine(can)
|
can.onaction.rerankLine(can)
|
||||||
},
|
},
|
||||||
})
|
|
||||||
Volcanos("onaction", {help: "控件交互", list: ["run"],
|
|
||||||
save: function(event, can) { var msg = can.request(event, {content: can.onexport.content(can)})
|
|
||||||
can.run(event, [ctx.ACTION, "save", can.parse, can.Option("file"), can.Option("path")], function(msg) {
|
|
||||||
can.user.toastSuccess(can)
|
|
||||||
}, true)
|
|
||||||
},
|
|
||||||
modifyLine: function(can, line, value) {
|
modifyLine: function(can, line, value) {
|
||||||
can.page.Select(can, can.ui.content, html.TR, function(item, index) {
|
can.page.Select(can, can.ui.content, html.TR, function(item, index) {
|
||||||
if (item != line && index+1 != line) { return }
|
if (item != line && index+1 != line) { return }
|
||||||
|
|
||||||
can.page.Select(can, item, "td.text", function(item) {
|
can.page.Select(can, item, "td.text", function(item) {
|
||||||
can.page.Appends(can, item, [can.onsyntax._parse(can, value)])
|
can.page.Appends(can, item, [can.onsyntax._parse(can, value)])
|
||||||
})
|
})
|
||||||
@ -318,6 +163,10 @@ Volcanos("onaction", {help: "控件交互", list: ["run"],
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
cursorMove: function(can, target, count, begin) {
|
||||||
|
begin != undefined && target.setSelectionRange(begin, begin)
|
||||||
|
target.setSelectionRange(target.selectionStart+count, target.selectionStart+count)
|
||||||
|
},
|
||||||
})
|
})
|
||||||
Volcanos("onexport", {help: "导出数据", list: ["文件数", "模式", "按键", "解析器", "文件名", "当前行", "跳转数"]})
|
Volcanos("onexport", {help: "导出数据", list: ["文件数", "模式", "按键", "解析器", "文件名", "当前行", "跳转数"]})
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) {
|
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) {
|
||||||
can.onmotion.clear(can), can.onmotion.hidden(can, can._action)
|
can.onmotion.clear(can), can.onmotion.hidden(can, can._action)
|
||||||
can.onimport._show(can, msg), can.base.isFunc(cb) && cb(msg)
|
can.onimport._show(can, msg), can.base.isFunc(cb) && cb(msg)
|
||||||
can.keylist = [], can.onkeypop._build(can)
|
can.keylist = [], can.onkeymap._build(can)
|
||||||
},
|
},
|
||||||
_show: function(can, msg) { can.point = []
|
_show: function(can, msg) { can.point = []
|
||||||
can.svg = null, can.group = null, can.temp = null, can.current = null
|
can.svg = null, can.group = null, can.temp = null, can.current = null
|
||||||
@ -215,7 +215,7 @@ Volcanos("onfigure", {help: "图形绘制", list: [],
|
|||||||
show: function(can, target, figure) { return "<("+(target.Val("y2")-target.Val("y1"))+ice.FS+(target.Val("x2")-target.Val("x1"))+")"+can.onexport._position(can, target, figure) },
|
show: function(can, target, figure) { return "<("+(target.Val("y2")-target.Val("y1"))+ice.FS+(target.Val("x2")-target.Val("x1"))+")"+can.onexport._position(can, target, figure) },
|
||||||
},
|
},
|
||||||
}, [])
|
}, [])
|
||||||
Volcanos("onkeypop", {help: "键盘交互", list: [],
|
Volcanos("onkeymap", {help: "键盘交互", list: [],
|
||||||
_mode: {
|
_mode: {
|
||||||
normal: {
|
normal: {
|
||||||
gr: function(event, can) { can.Action("go", "run") },
|
gr: function(event, can) { can.Action("go", "run") },
|
||||||
|
@ -75,7 +75,7 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, cb, target
|
|||||||
can.page.Modify(can, target, {width: can.Conf(html.WIDTH)-200})
|
can.page.Modify(can, target, {width: can.Conf(html.WIDTH)-200})
|
||||||
},
|
},
|
||||||
}, [""])
|
}, [""])
|
||||||
Volcanos("onkeypop", {help: "键盘交互", list: [],
|
Volcanos("onkeymap", {help: "键盘交互", list: [],
|
||||||
_mode: {
|
_mode: {
|
||||||
normal: {
|
normal: {
|
||||||
"n": function(event, can) { can.ondetail.next(can.sub) },
|
"n": function(event, can) { can.ondetail.next(can.sub) },
|
||||||
@ -111,8 +111,8 @@ Volcanos("onaction", {help: "控件交互", list: [],
|
|||||||
], sub._action, can.ondetail)
|
], sub._action, can.ondetail)
|
||||||
|
|
||||||
can.onengine.signal(can, "keymap.focus", can.request(event, {cb: function(event) {
|
can.onengine.signal(can, "keymap.focus", can.request(event, {cb: function(event) {
|
||||||
can.keylist = can.onkeypop._parse(event, can, "normal", can.keylist)
|
can.keylist = can.onkeymap._parse(event, can, "normal", can.keylist)
|
||||||
}})), can.onkeypop._build(can)
|
}})), can.onkeymap._build(can)
|
||||||
|
|
||||||
sub.page.style(sub, sub._target, html.BACKGROUND, document.body.style.background)
|
sub.page.style(sub, sub._target, html.BACKGROUND, document.body.style.background)
|
||||||
sub.page.style(sub, sub._output, html.HEIGHT, window.innerHeight-4*html.PLUGIN_MARGIN-2*html.ACTION_HEIGHT)
|
sub.page.style(sub, sub._output, html.HEIGHT, window.innerHeight-4*html.PLUGIN_MARGIN-2*html.ACTION_HEIGHT)
|
||||||
|
@ -180,7 +180,7 @@ Volcanos("onaction", {help: "交互操作", list: [
|
|||||||
|
|
||||||
listTags: function(event, can, button) { var list = []
|
listTags: function(event, can, button) { var list = []
|
||||||
can.core.List([can.base, can.core, can.misc, can.page, can.user,
|
can.core.List([can.base, can.core, can.misc, can.page, can.user,
|
||||||
can.onengine, can.ondaemon, can.onappend, can.onlayout, can.onmotion, can.onkeypop,
|
can.onengine, can.ondaemon, can.onappend, can.onlayout, can.onmotion, can.onkeymap,
|
||||||
], function(lib) {
|
], function(lib) {
|
||||||
can.core.Item(lib, function(key, value) { if (key.indexOf("_") == 0 || !lib.hasOwnProperty(key)) { return }
|
can.core.Item(lib, function(key, value) { if (key.indexOf("_") == 0 || !lib.hasOwnProperty(key)) { return }
|
||||||
list.push({zone: lib._name, type: typeof value, name: key, text: can.base.isObject(value)? "": (value+"").split(ice.NL)[0],
|
list.push({zone: lib._name, type: typeof value, name: key, text: can.base.isObject(value)? "": (value+"").split(ice.NL)[0],
|
||||||
|
@ -132,7 +132,7 @@ Volcanos("ondetail", {help: "用户交互", list: [],
|
|||||||
{x: tree.x-can.margin/4, y: y-can.size/2},
|
{x: tree.x-can.margin/4, y: y-can.size/2},
|
||||||
{x: tree.x+tree.width+can.margin/8, y: y+can.size/2},
|
{x: tree.x+tree.width+can.margin/8, y: y+can.size/2},
|
||||||
], style: {stroke: cli.RED, fill: html.NONE},
|
], style: {stroke: cli.RED, fill: html.NONE},
|
||||||
}), can.onkeypop.prevent(event)
|
}), can.onkeymap.prevent(event)
|
||||||
},
|
},
|
||||||
onclick: function(event, can, tree) {
|
onclick: function(event, can, tree) {
|
||||||
if (tree.list.length > 0 || tree.tags || tree.name.endsWith(can._args.split)) {
|
if (tree.list.length > 0 || tree.tags || tree.name.endsWith(can._args.split)) {
|
||||||
|
2
proto.js
2
proto.js
@ -127,7 +127,7 @@ var wiki = {
|
|||||||
H3: "h3.story",
|
H3: "h3.story",
|
||||||
DIV_PAGE: "div.page",
|
DIV_PAGE: "div.page",
|
||||||
}
|
}
|
||||||
var chat = {
|
var chat = {ONIMPORT: "onimport", ONACTION: "onaction", ONKEYMAP: "onkeymap", ONEXPORT: "onexport",
|
||||||
LIB: "lib", PAGE: "page", PANEL: "panel", PLUGIN: "plugin", OUTPUT: "output", INPUT: "input", UPLOAD: "upload",
|
LIB: "lib", PAGE: "page", PANEL: "panel", PLUGIN: "plugin", OUTPUT: "output", INPUT: "input", UPLOAD: "upload",
|
||||||
STORY: "story", FLOAT: "float", CONTEXTS: "contexts", CARTE: "carte", TOAST: "toast",
|
STORY: "story", FLOAT: "float", CONTEXTS: "contexts", CARTE: "carte", TOAST: "toast",
|
||||||
LEGNED: "legend", OPTION: "option", ACTION: "action", OUTPUT: "output", STATUS: "status",
|
LEGNED: "legend", OPTION: "option", ACTION: "action", OUTPUT: "output", STATUS: "status",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user