forked from x/volcanos
opt inner.js
This commit is contained in:
parent
3220d61d14
commit
2fb7172f21
35
frame.js
35
frame.js
@ -71,7 +71,7 @@ Volcanos("onengine", {help: "搜索引擎", list: [], _init: function(can, meta,
|
||||
signal: shy("触发事件", function(can, name, msg) { msg = msg||can.request()
|
||||
name == chat.ONREMOTE? can.misc.Log("signal", name, msg.Option("_msg")): can.misc.Log("signal", name, msg)
|
||||
can.core.List(can.onengine.listen.meta[name], function(cb) {
|
||||
can.core.CallFunc(cb, {msg: msg})
|
||||
can.core.CallFunc(cb, {msg: msg, event: msg._event})
|
||||
})
|
||||
}),
|
||||
plugin: shy("添加插件", {}, [], function(can, name, command) { name = can.base.trimPrefix(name, "can.")
|
||||
@ -414,16 +414,21 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
||||
var input = meta.action||mdb.KEY; input != ice.AUTO && can.require(["/plugin/input/"+input+".js"], function(can) {
|
||||
can.core.ItemCB(can.onfigure[input], function(key, on) { var last = target[key]; target[key] = function(event) { on(event, can, meta, function(cb) {
|
||||
can.sub? can.base.isFunc(cb) && cb(can.sub, cbs): can.onappend._init(can, {type: html.INPUT, name: input, pos: chat.FLOAT}, ["/plugin/input/"+input+".js"], function(sub) { sub.Conf(meta)
|
||||
can.onmotion.hidden(can, sub._target)
|
||||
sub.run = function(event, cmds, cb) { var msg = sub.request(event, can.Option()); (meta.run||can.run)(event, cmds, cb, true) }, can.sub = sub
|
||||
sub.close = function() { sub.page.Remove(sub, sub._target), delete(can.sub) }
|
||||
|
||||
sub.onappend._action(sub, [cli.CLOSE, cli.CLEAR], sub._action, kit.Dict(
|
||||
sub.onappend._action(sub, [cli.CLOSE, cli.CLEAR, cli.REFRESH], sub._action, kit.Dict(
|
||||
cli.CLOSE, function(event) { sub.close() },
|
||||
cli.CLEAR, function(event) { target.value = "" },
|
||||
cli.REFRESH, function(event) { can.base.isFunc(cb) && cb(sub) },
|
||||
)), sub.onappend._status(sub, [mdb.TOTAL, mdb.INDEX])
|
||||
|
||||
meta.style && sub.page.Modify(sub, sub._target, {style: meta.style})
|
||||
can.base.isFunc(cb) && cb(sub, cbs)
|
||||
can.base.isFunc(cb) && cb(sub, function() {
|
||||
can.onmotion.hidden(can, sub._target, true)
|
||||
can.base.isFunc(cbs) && cbs(sub)
|
||||
})
|
||||
}, document.body)
|
||||
}, target, last) } })
|
||||
})
|
||||
@ -441,7 +446,7 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
||||
can.onengine.signal(can, "keymap.focus", can.request({}, {cb: function(event) {
|
||||
if (event.target.tagName == "INPUT") { return }
|
||||
if (event.key == lang.ESCAPE) { ui.close(); return }
|
||||
if (event.key == ice.SP) { input.focus(), event.stopPropagation(), event.preventDefault() }
|
||||
if (event.key == ice.SP) { input.focus(), can.onkeypop.prevent(event) }
|
||||
}}))
|
||||
}, onkeydown: function(event) { can.onkeypop.input(event, can)
|
||||
if (event.key != lang.ENTER) { return }
|
||||
@ -509,6 +514,9 @@ Volcanos("onlayout", {help: "页面布局", list: [], _init: function(can, targe
|
||||
var left = event.clientX-event.offsetX, top = event.clientY-event.offsetY+event.target.offsetHeight-5; if (right) {
|
||||
var left = event.clientX-event.offsetX+event.target.offsetWidth, top = event.clientY-event.offsetY
|
||||
}
|
||||
if (!left) { left = window.innerWidth/2-target.offsetWidth/2 }
|
||||
if (!top) { top = 32 }
|
||||
|
||||
layout = {left: left, top: top}
|
||||
if (layout.top < 0) { layout.top = 0 }
|
||||
if (layout.left < 0) { layout.left = 0 }
|
||||
@ -677,7 +685,7 @@ Volcanos("onmotion", {help: "动态特效", list: [], _init: function(can, targe
|
||||
}
|
||||
}, _init: function(target) {
|
||||
item && can.onappend.figure(can, item, target), target.value = text
|
||||
target.focus(), target.setSelectionRange(0, -1)
|
||||
can.onmotion.focus(can, target)
|
||||
}}])
|
||||
},
|
||||
modifys: function(can, target, cb, item) { var back = target.innerHTML
|
||||
@ -696,7 +704,7 @@ Volcanos("onmotion", {help: "动态特效", list: [], _init: function(can, targe
|
||||
}
|
||||
}, _init: function(target) {
|
||||
item && can.onappend.figure(can, item, target)
|
||||
target.focus(), target.setSelectionRange(0, -1)
|
||||
can.onmotion.focus(can, target)
|
||||
}}])
|
||||
},
|
||||
|
||||
@ -728,7 +736,7 @@ Volcanos("onmotion", {help: "动态特效", list: [], _init: function(can, targe
|
||||
can.page.Modify(can, target, {style: {left: layout.left, top: layout.top}})
|
||||
}
|
||||
can.base.isFunc(cb) && cb(target)
|
||||
event.stopPropagation(), event.preventDefault()
|
||||
can.onkeypop.prevent(event)
|
||||
}
|
||||
can.base.isFunc(cb) && cb(target)
|
||||
},
|
||||
@ -754,7 +762,7 @@ Volcanos("onmotion", {help: "动态特效", list: [], _init: function(can, targe
|
||||
})
|
||||
Volcanos("onkeypop", {help: "键盘交互", list: [], _focus: [], _init: function(can, target) {
|
||||
document.body.onkeydown = function(event) { var msg = can.request(event)
|
||||
msg.Option("model", "normal"); if (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")
|
||||
return
|
||||
}
|
||||
@ -780,7 +788,7 @@ Volcanos("onkeypop", {help: "键盘交互", list: [], _focus: [], _init: functio
|
||||
|
||||
function repeat(cb, count) { list = []
|
||||
for (var i = 1; i <= count; i++) { if (cb(event, can, target, count)) { break } }
|
||||
event.stopPropagation(), event.preventDefault()
|
||||
// can.onkeypop.prevent(event)
|
||||
}
|
||||
|
||||
var map = can.onkeypop._mode[mode]
|
||||
@ -810,8 +818,10 @@ Volcanos("onkeypop", {help: "键盘交互", list: [], _focus: [], _init: functio
|
||||
enter: function(event, can, target) {
|
||||
var his = target._history || []
|
||||
his.push(target.value)
|
||||
if (event.target.tagName == "INPUT") {
|
||||
can.onmotion.focus(can, target)
|
||||
}
|
||||
|
||||
target.setSelectionRange(0, -1)
|
||||
target._current = his.length
|
||||
target._history = his
|
||||
},
|
||||
@ -869,11 +879,14 @@ Volcanos("onkeypop", {help: "键盘交互", list: [], _focus: [], _init: functio
|
||||
|
||||
input: function(event, can) { var target = event.target
|
||||
target._keys = can.onkeypop._parse(event, can, event.ctrlKey? "insert_ctrl": mdb.INSERT, target._keys||[], target)
|
||||
if (target._keys.length == 0) { event.stopPropagation(), event.preventDefault() }
|
||||
if (target._keys.length == 0 && target.tagName == "INPUT") { can.onkeypop.prevent(event) }
|
||||
},
|
||||
DelText: function(target, start, count) {
|
||||
target.value = target.value.substring(0, start)+target.value.substring(start+(count||target.value.length), target.value.length)
|
||||
target.setSelectionRange(start, start)
|
||||
},
|
||||
prevent: function(event) {
|
||||
event.stopPropagation(), event.preventDefault()
|
||||
}
|
||||
})
|
||||
_can_name = ""
|
||||
|
@ -68,7 +68,7 @@ Volcanos("page", {help: "用户界面", ClassList: {
|
||||
return target
|
||||
}),
|
||||
Remove: shy("删除节点", function(can, target) {
|
||||
target && target.parentNode && target.parentNode.removeChild(target)
|
||||
return target && target.parentNode && target.parentNode.removeChild(target), target
|
||||
}),
|
||||
Create: shy("创建节点", function(can, key, value) {
|
||||
return can.page.Modify(can, document.createElement(key), value)
|
||||
@ -114,7 +114,7 @@ Volcanos("page", {help: "用户界面", ClassList: {
|
||||
type = html.BUTTON, name = name||list[0]
|
||||
data.innerText = can.user.trans(can, list[0]), data.onclick = function(event) {
|
||||
can.base.isFunction(list[1]) && list[1](event, name)
|
||||
event.stopPropagation(), event.preventDefault()
|
||||
can.onkeypop.prevent(event)
|
||||
return true
|
||||
}
|
||||
|
||||
@ -399,6 +399,7 @@ Volcanos("page", {help: "用户界面", ClassList: {
|
||||
return res
|
||||
},
|
||||
offsetLeft: function(item) { var res = 0
|
||||
// if (item.offsetLeft) { return item.offsetLeft }
|
||||
while (item) { res += item.offsetLeft||0, item = item.parentNode }
|
||||
return res
|
||||
},
|
||||
|
@ -189,9 +189,9 @@ Volcanos("user", {help: "用户操作", agent: {
|
||||
}
|
||||
|
||||
var input = can.page.Append(can, event.target.parentNode, [{type: html.TEXTAREA, value: text}]).first
|
||||
input.setSelectionRange(0,-1), input.focus(), document.execCommand("Copy")
|
||||
can.onmotion.focus(can, input), document.execCommand("Copy")
|
||||
can.page.Remove(can, input), can.user.toastSuccess(can)
|
||||
event.stopPropagation(), event.preventDefault()
|
||||
can.onkeypop.prevent(event)
|
||||
},
|
||||
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 }
|
||||
@ -215,9 +215,9 @@ Volcanos("user", {help: "用户操作", agent: {
|
||||
var carte = {_target: ui._target, _parent: parent}
|
||||
null && can.onmotion.float.add(can, chat.CARTE, carte)
|
||||
ui._target.onmouseover = function(event) {
|
||||
event.stopPropagation(), event.preventDefault()
|
||||
can.onkeypop.prevent(event)
|
||||
}
|
||||
return event.stopPropagation(), event.preventDefault(), carte
|
||||
return can.onkeypop.prevent(event), carte
|
||||
},
|
||||
carteRight: function(event, can, meta, list, cb, parent) {
|
||||
var carte = can.user.carte(event, can, meta, list, cb, parent)
|
||||
|
@ -52,7 +52,7 @@ Volcanos("onaction", {help: "交互操作", list: [cli.CLEAR, cli.CLOSE, cli.DON
|
||||
{input: ["word", function(event) { can.onkeypop.input(event, can)
|
||||
if (event.key == lang.ESCAPE) { can.onmotion.hide(can) }
|
||||
|
||||
if (event.key == lang.ENTER) { event.stopPropagation(), event.preventDefault()
|
||||
if (event.key == lang.ENTER) { can.onkeypop.prevent(event)
|
||||
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)
|
||||
}
|
||||
|
@ -23,15 +23,15 @@ Volcanos("onaction", {help: "控件交互", list: [], _init: function(can, meta,
|
||||
onkeydown: function(event, can) { can.onkeypop.input(event, can, event.target)
|
||||
if (can.Conf(mdb.TYPE) == html.TEXTAREA) { if (!event.ctrlKey) { return } }
|
||||
if (event.key == lang.ENTER) {
|
||||
can.run(event), event.target.setSelectionRange(0, -1)
|
||||
event.stopPropagation(), event.preventDefault()
|
||||
can.run(event), can.onmotion.focus(can, event.target)
|
||||
can.onkeypop.prevent(event)
|
||||
} if (!event.ctrlKey) { return }
|
||||
|
||||
switch (event.key) {
|
||||
case "b": can.CloneInput(); break
|
||||
case "m": can.CloneField(); break
|
||||
default: return
|
||||
} event.stopPropagation(), event.preventDefault()
|
||||
} can.onkeypop.prevent(event)
|
||||
},
|
||||
})
|
||||
|
||||
|
@ -9,6 +9,15 @@ Volcanos("onfigure", {help: "控件详情", list: [], key: {
|
||||
}}
|
||||
})
|
||||
},
|
||||
_show: function(can, meta, cbs, target) {
|
||||
can.run(event, [ctx.ACTION, mdb.INPUTS, meta.name, target.value], function(msg) {
|
||||
if (msg.Length() == 0) { return can.close() }
|
||||
target._can && target._can.close(), target._can = can
|
||||
can.onfigure.key._init(can, msg, target), can.Status(mdb.TOTAL, msg.Length())
|
||||
target._msg = msg, can.base.isFunc(cbs) && cbs(can)
|
||||
})
|
||||
|
||||
},
|
||||
_select: function(event, can, target) {
|
||||
function select(order) { if (order == 0) { target.value = target._value }
|
||||
var index = 0; return can.page.Select(can, can._output, html.TR, function(tr) {
|
||||
@ -31,27 +40,17 @@ Volcanos("onfigure", {help: "控件详情", list: [], key: {
|
||||
default: target._index = 0, target._value = ""
|
||||
}
|
||||
},
|
||||
onfocus: function(event, can, meta, cb, target) { cb(function(can, cbs) {
|
||||
onfocus: function(event, can, meta, cb, target) { if (target._figure) { return } target._figure = {}; cb(function(can, cbs) {
|
||||
target._figure = can.onlayout.figure(event, can, can._target, false, {top: can.page.offsetTop(target)+target.offsetHeight, left: can.page.offsetLeft(target)})
|
||||
can.run(event, [ctx.ACTION, mdb.INPUTS, meta.name, target.value], function(msg) {
|
||||
if (msg.Length() == 0) { return can.close() }
|
||||
target._msg = msg, can.onfigure.key._init(can, msg, target), can.Status(mdb.TOTAL, msg.Length())
|
||||
can.base.isFunc(cbs) && cbs(can)
|
||||
})
|
||||
can.onfigure.key._show(can, meta, cbs, target)
|
||||
}) },
|
||||
onblur: function(event, can, meta, cb, target) { cb(function(can, cbs) {
|
||||
can.close()
|
||||
}) },
|
||||
onclick: function(event, can, meta, cb, target) { cb(function(can, cbs) {
|
||||
can.run(event, [ctx.ACTION, mdb.INPUTS, meta.name, target.value], function(msg) {
|
||||
if (msg.Length() == 0) { return can.close() }
|
||||
can.onfigure.key._init(can, msg, target), can.Status(mdb.TOTAL, msg.Length())
|
||||
target._msg = msg, target._figure = can.onlayout.figure(event, can)
|
||||
can.base.isFunc(cbs) && cbs(can)
|
||||
})
|
||||
onblur: function(event, can, meta, cb, target) { delete(target._figure), target._can && target._can.close() },
|
||||
onclick: function(event, can, meta, cb, target) { if (target._figure) { target._figure = can.onlayout.figure(event, can, can.core.Value(target, "_can._target")||{}); return } target._figure = {}; cb(function(can, cbs) {
|
||||
target._figure = can.onlayout.figure(event, can)
|
||||
can.onfigure.key._show(can, meta, cbs, target)
|
||||
}) },
|
||||
onkeydown: function(event, can, meta, cb, target, last) {
|
||||
var msg = target._msg; msg && cb(function(can, cbs) {
|
||||
if (target._figure) { can = target._can
|
||||
if (event.ctrlKey) { can.onfigure.key._select(event, can, target) } else {
|
||||
target._index = 0, target._value = ""
|
||||
switch (event.key) { case lang.ENTER: can.close(); return }
|
||||
@ -62,16 +61,20 @@ Volcanos("onfigure", {help: "控件详情", list: [], key: {
|
||||
})
|
||||
}
|
||||
|
||||
can.onlayout.figure(event, can, can._target, false, target._figure)
|
||||
var total = can.page.Select(can, can._output, html.TR, function(tr) {
|
||||
if (!can.page.ClassList.has(can, tr, html.HIDDEN)) { return tr}
|
||||
}).length-1
|
||||
if (total == 0) {
|
||||
can.run(event, [ctx.ACTION, mdb.INPUTS, meta.name, target.value], function(msg) {
|
||||
can.onfigure.key._init(can, msg, target), can.Status(mdb.TOTAL, msg.Length())
|
||||
target._msg = msg
|
||||
})
|
||||
}
|
||||
can.Status(kit.Dict(mdb.TOTAL, total, mdb.INDEX, target._index))
|
||||
can.base.isFunc(cbs) && cbs(can)
|
||||
})
|
||||
}
|
||||
|
||||
if (event.ctrlKey && ["n", "p"].indexOf(event.key) > -1) {
|
||||
return event.stopPropagation(), event.preventDefault()
|
||||
return can.onkeypop.prevent(event)
|
||||
}
|
||||
switch (event.key) { case lang.ESCAPE: event.target.blur(); return }
|
||||
can.base.isFunc(last) && last(event, can)
|
||||
|
@ -11,6 +11,7 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, cb, target
|
||||
can.onimport.tabview(can, can.Option(nfs.PATH), can.Option(nfs.FILE), can.Option(nfs.LINE))
|
||||
can.onimport.project(can, can.Option(nfs.PATH), function() {
|
||||
can.onimport._toolkit(can, can.ui.toolkit), can.core.Timer(100, function() {
|
||||
can.onimport.sess(can)
|
||||
can.core.Next(can.core.Split(msg.OptionOrSearch("tool")), function(item, next) {
|
||||
can.onimport.toolkit(can, {index: item}, next)
|
||||
}, function() {
|
||||
@ -47,6 +48,13 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, cb, target
|
||||
))) { return }
|
||||
run(event, cmds, cb, silent)
|
||||
}
|
||||
can.user.mod.isCmd && can.onengine.listen(can, chat.ONKEYDOWN, function(event) {
|
||||
var cb = can.onaction[kit.Dict(
|
||||
"r", "执行", "v", "展示", "s", "保存",
|
||||
"t", "添加", "f", "打开", "p", "插件", lang.ESCAPE, "清屏",
|
||||
)[event.key]]
|
||||
can.base.isFunc(cb) && cb(event, can)
|
||||
})
|
||||
},
|
||||
_project: function(can, target) {
|
||||
target._toggle = function(event) { can.onmotion.toggle(can, target), can.onimport.layout(can) }
|
||||
@ -113,14 +121,14 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, cb, target
|
||||
tabview: function(can, path, file, line, cb) { var key = path+":"+file
|
||||
if (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||parseInt(can._msg.Option(nfs.LINE))||1})
|
||||
can.Option({path: path, file: file, line: line||can._msg.Option(nfs.LINE)||1})
|
||||
return can._msg.Option(can.Option()), can.onsyntax._init(can, can._msg, cb)
|
||||
}
|
||||
|
||||
if (line == ctx.INDEX) { var msg = can.request({}, {index: file})
|
||||
if (line == ctx.INDEX) { var msg = can.request({}, {index: file, line: line})
|
||||
can.tabview[key] = msg
|
||||
msg._tab = can.onappend.tabs(can, [{name: file.split(ice.PS).pop(), text: file}], function(event, meta) {
|
||||
can.onimport.tabview(can, path, file, "", cb)
|
||||
can.onimport.tabview(can, path, file, "", cb), cb = null
|
||||
}, function(item) { delete(can.tabview[key]) })
|
||||
return
|
||||
}
|
||||
@ -129,7 +137,7 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, cb, target
|
||||
can.Option({path: path, file: file, line: line||1})
|
||||
can.run({}, [path, file], function(msg) { can.tabview[key] = msg
|
||||
msg._tab = can.onappend.tabs(can, [{name: file.split(ice.PS).pop(), text: file}], function(event, meta) {
|
||||
can.onimport.tabview(can, path, file, "", cb)
|
||||
can.onimport.tabview(can, path, file, "", cb), cb = null
|
||||
}, function(item) { delete(can.tabview[key]) })
|
||||
}, true)
|
||||
},
|
||||
@ -161,11 +169,13 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, cb, target
|
||||
|
||||
can.ui.toolkit.status.appendChild(sub._legend), sub._legend.onclick = function(event) {
|
||||
if (can.page.Select(can, can.ui.toolkit.status, ice.PT+html.SELECT)[0] == event.target) {
|
||||
can.page.ClassList.del(can, event.target, html.SELECT)
|
||||
can.page.ClassList.del(can, sub._target, html.SELECT)
|
||||
return
|
||||
}
|
||||
can.onmotion.select(can, can.ui.toolkit.status, html.DIV_LEGEND, event.target)
|
||||
can.onmotion.select(can, can.ui.toolkit.output, html.FIELDSET, sub._target)
|
||||
can.page.Select(can, sub._option, html.OPTION_ARGS)[0].focus()
|
||||
}
|
||||
can.base.isFunc(cb) && cb(sub)
|
||||
}, can.ui.toolkit.output)
|
||||
@ -181,6 +191,14 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, cb, target
|
||||
can.page.style(can, can.ui.content, html.WIDTH, width-can.ui.project.offsetWidth-can.ui.profile.offsetWidth-25)
|
||||
can.page.style(can, can.ui.profile_output, html.HEIGHT, can.ui.content.offsetHeight-html.ACTION_HEIGHT)
|
||||
},
|
||||
sess: function(can, sess) { sess = sess||can.base.Obj(localStorage.getItem("web.code.inner.sess"), {})
|
||||
can.core.Next(sess.tabs, function(item, next) { var ls = item.split(":")
|
||||
can.onimport.tabview(can, ls[0], ls[1], ls[2], next)
|
||||
})
|
||||
can.core.Next(sess.tool, function(item, next) {
|
||||
can.onimport.toolkit(can, {index: item}, function(sub) { can.toolkit[item] = sub, next() })
|
||||
})
|
||||
},
|
||||
}, [""])
|
||||
Volcanos("onsyntax", {help: "语法高亮", list: ["keyword", "prefix", "line"], _init: function(can, msg, cb) {
|
||||
if (can.onmotion.cache(can, function(cache_data) {
|
||||
@ -189,6 +207,11 @@ Volcanos("onsyntax", {help: "语法高亮", list: ["keyword", "prefix", "line"],
|
||||
var p = cache_data[can.file]; p && (can.current = p.current, can.max = p.max)
|
||||
can.parse = can.base.Ext(can.file), can.Status("模式", "normal")
|
||||
can.onmotion.select(can, can._action, chat.DIV_TABS, msg._tab)
|
||||
if (msg.Option(ctx.INDEX)) {
|
||||
can.core.Timer(100, function() {
|
||||
var input = can.page.Select(can, can.ui.content, html.OPTION_ARGS)[0]; input && input.focus()
|
||||
})
|
||||
}
|
||||
return can.file
|
||||
}, 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()
|
||||
@ -198,6 +221,10 @@ Volcanos("onsyntax", {help: "语法高亮", list: ["keyword", "prefix", "line"],
|
||||
sub.run = function(event, cmds, cb) {
|
||||
can.run(event, [ctx.ACTION, ice.RUN, msg.Option(ctx.INDEX)].concat(cmds), cb, true)
|
||||
}
|
||||
can.core.Timer(100, function() {
|
||||
var input = can.page.Select(can, can.ui.content, html.OPTION_ARGS)[0]; input && input.focus()
|
||||
})
|
||||
can.base.isFunc(cb) && cb()
|
||||
}, can.ui.content)
|
||||
return
|
||||
}
|
||||
@ -239,7 +266,8 @@ Volcanos("onsyntax", {help: "语法高亮", list: ["keyword", "prefix", "line"],
|
||||
return line
|
||||
},
|
||||
})
|
||||
Volcanos("onaction", {help: "控件交互", list: ["打开", "插件", "添加"],
|
||||
Volcanos("onaction", {help: "控件交互", list: ["打开", "插件", "添加", "保存"],
|
||||
"保存": function(event, can) { can.onexport.sess(can), can.user.toastSuccess(can) },
|
||||
"打开": function(event, can) {
|
||||
can.user.input(event, can, [nfs.FILE], function(event, button, data, list, args) {
|
||||
can.onimport.tabview(can, can.Option(nfs.PATH), data.file)
|
||||
@ -252,7 +280,8 @@ Volcanos("onaction", {help: "控件交互", list: ["打开", "插件", "添加"]
|
||||
},
|
||||
"添加": function(event, can) {
|
||||
can.user.input(event, can, [ctx.INDEX], function(event, button, data, list, args) {
|
||||
can.onimport.toolkit(can, data, function(sub) { can.toolkit[data.index] = data
|
||||
var sub = can.toolkit[data.index]; if (sub) { sub._legend.click(); return }
|
||||
can.onimport.toolkit(can, data, function(sub) { can.toolkit[data.index] = sub
|
||||
sub._legend.click(), sub.page.Select(sub, sub._target, html.OPTION_ARGS)[0].focus()
|
||||
})
|
||||
})
|
||||
@ -263,6 +292,18 @@ Volcanos("onaction", {help: "控件交互", list: ["打开", "插件", "添加"]
|
||||
can.onimport.profile(can, msg)
|
||||
}, true)
|
||||
},
|
||||
"清屏": function(event, can) {
|
||||
if (can.page.Select(can, document.body, ".input.float", function(item) {
|
||||
return can.page.Remove(can, item)
|
||||
}).length > 0) { return }
|
||||
|
||||
if (can.page.Select(can, can.ui.toolkit.status, "div.select", function(item) {
|
||||
return item.click(), item
|
||||
}).length > 0) { return }
|
||||
can.onmotion.hidden(can, can.ui.profile)
|
||||
can.onmotion.hidden(can, can.ui.display)
|
||||
can.onimport.layout(can)
|
||||
},
|
||||
"执行": function(event, can) { can.onimport.display(can)
|
||||
can.run(event, [ctx.ACTION, mdb.ENGINE, can.parse, can.Option(nfs.FILE), can.Option(nfs.PATH)], function(msg) {
|
||||
can.onimport.display(can, msg)
|
||||
@ -347,6 +388,22 @@ Volcanos("onaction", {help: "控件交互", list: ["打开", "插件", "添加"]
|
||||
},
|
||||
})
|
||||
Volcanos("onexport", {help: "导出数据", list: ["文件数", "解析器", "文件名", "当前行", "跳转数", "标签数"],
|
||||
sess: function(can) {
|
||||
localStorage.setItem("web.code.inner.sess", JSON.stringify(
|
||||
{
|
||||
"tabs": can.onexport.tabs(can),
|
||||
"tool": can.onexport.tool(can),
|
||||
}
|
||||
))
|
||||
},
|
||||
tabs: function(can) {
|
||||
return can.core.Item(can.tabview, function(key, msg) {
|
||||
return key+":"+msg.Option(nfs.LINE)
|
||||
})
|
||||
},
|
||||
tool: function(can) {
|
||||
return can.core.Item(can.toolkit)
|
||||
},
|
||||
position: function(can, index, total) { total = total||can.max
|
||||
return (parseInt(index))+ice.PS+parseInt(total)+" = "+parseInt((index)*100/total)+"%"
|
||||
},
|
||||
|
@ -101,7 +101,7 @@ Volcanos("onkeymap", {help: "键盘交互", list: ["command", "normal", "insert"
|
||||
|
||||
parse: function(event, can, mode) {
|
||||
can.keylist.push(event.key); if (can.mode != mode) {
|
||||
event.stopPropagation(), event.preventDefault()
|
||||
can.onkeypop.prevent(event)
|
||||
}; can.mode == "normal" && can.Status("按键", can.keylist.join(""))
|
||||
|
||||
for (var pre = 0; pre < can.keylist.length; pre++) {
|
||||
@ -130,9 +130,8 @@ Volcanos("onkeymap", {help: "键盘交互", list: ["command", "normal", "insert"
|
||||
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.cmd.value = line, can.ui.cmd.focus()
|
||||
can.ui.cmd.setSelectionRange(0, -1)
|
||||
can.ui.command.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+" ", " ", ",")
|
||||
@ -238,7 +237,7 @@ Volcanos("onkeymap", {help: "键盘交互", list: ["command", "normal", "insert"
|
||||
insert: {
|
||||
Escape: function(event, can) { can.onkeymap._normal(can)
|
||||
can.onaction.modifyLine(can, can.current, can.ui.current.value)
|
||||
event.stopPropagation(), event.preventDefault()
|
||||
can.onkeypop.prevent(event)
|
||||
},
|
||||
Enter: function(event, can) {
|
||||
var before = can.ui.current.value.slice(0, event.target.selectionEnd)
|
||||
@ -249,7 +248,7 @@ Volcanos("onkeymap", {help: "键盘交互", list: ["command", "normal", "insert"
|
||||
},
|
||||
Backspace: function(event, can) {
|
||||
if (can.ui.current.selectionStart > 0) { return }
|
||||
event.stopPropagation(), event.preventDefault()
|
||||
can.onkeypop.prevent(event)
|
||||
if (!can.current.prev()) { return }
|
||||
|
||||
var rest = can.current.text()
|
||||
|
@ -11,4 +11,5 @@ fieldset.feel.float {
|
||||
margin:0 10px; padding:0 10px;
|
||||
background-color:#4eaad0c2;
|
||||
position:absolute;
|
||||
top:26px;
|
||||
}
|
||||
|
@ -132,7 +132,7 @@ Volcanos("ondetail", {help: "用户交互", list: [],
|
||||
{x: tree.x-can.margin/4, 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},
|
||||
}), event.stopPropagation(), event.preventDefault()
|
||||
}), can.onkeypop.prevent(event)
|
||||
},
|
||||
onclick: function(event, can, tree) {
|
||||
if (tree.list.length > 0 || tree.tags || tree.name.endsWith(can._args.split)) {
|
||||
|
1
proto.js
1
proto.js
@ -140,6 +140,7 @@ var chat = {
|
||||
|
||||
ONMAIN: "onmain", ONLOGIN: "onlogin", ONSEARCH: "onsearch",
|
||||
ONSIZE: "onsize", ONTOAST: "ontoast", ONREMOTE: "onremote",
|
||||
ONKEYDOWN: "onkeydown",
|
||||
|
||||
HEAD: "head", LEFT: "left", MAIN: "main", AUTO: "auto", HIDE: "hide", FOOT: "foot",
|
||||
SCROLL: "scroll", LEFT: "left", TOP: "top", RIGHT: "right", BOTTOM: "bottom",
|
||||
|
Loading…
x
Reference in New Issue
Block a user