mirror of
https://shylinux.com/x/volcanos
synced 2025-04-25 16:58:06 +08:00
opt some
This commit is contained in:
parent
c062d2e73b
commit
d63260e7d1
23
frame.js
23
frame.js
@ -120,6 +120,14 @@ Volcanos(chat.ONDAEMON, {help: "推荐引擎", _init: function(can, name) { if (
|
||||
pwd: function(can, msg, arg) { can._wss_name = can.ondaemon._list[0] = arg[0] },
|
||||
toast: function(can, msg, arg) { can.core.CallFunc(can.user.toast, {can: can, msg: msg, cmds: arg}) },
|
||||
refresh: function(can, msg, sub) { sub.Update() },
|
||||
action: function(can, msg, sub, arg) {
|
||||
var _sub = can.core.Value(sub, chat._OUTPUTS_CURRENT)
|
||||
if (_sub && _sub.onaction) {
|
||||
_sub.onaction && _sub.onaction._daemon({}, _sub, arg)
|
||||
return
|
||||
}
|
||||
sub.runAction({}, arg[0], arg.slice(1))
|
||||
},
|
||||
grow: function(can, msg, sub, arg) { sub.onimport._grow(sub, msg, can.page.Color(arg.join(""))) },
|
||||
exit: function(can, msg, sub) { can.user.close() },
|
||||
})
|
||||
@ -344,6 +352,7 @@ Volcanos(chat.ONAPPEND, {help: "渲染引擎", _init: function(can, meta, list,
|
||||
}, list: [input]}]).concat(br))[item.name]
|
||||
},
|
||||
table: function(can, msg, cb, target, sort) { if (msg.Length() == 0) { return }
|
||||
var meta = can.base.Obj(msg.Option("meta"))
|
||||
var table = can.page.AppendTable(can, msg, target||can._output, msg.append, cb||function(value, key, index, line, array) {
|
||||
if (msg.append.length == 2 && msg.append[0] == mdb.KEY && msg.append[1] == mdb.VALUE) {
|
||||
if (key == mdb.VALUE) { key = line.key }
|
||||
@ -372,7 +381,15 @@ Volcanos(chat.ONAPPEND, {help: "渲染引擎", _init: function(can, meta, list,
|
||||
}
|
||||
|
||||
return {text: [value, html.TD], onclick: function(event) { var target = event.target
|
||||
if (can.page.tagis(target, html.INPUT) && target.type == html.BUTTON) { return run([ctx.ACTION, target.name]) }
|
||||
if (can.page.tagis(target, html.INPUT) && target.type == html.BUTTON) {
|
||||
if (meta && meta[target.name]) {
|
||||
var msg = can.request(event, {action: target.name})
|
||||
return can.user.input(event, can, meta[target.name], function(args) { var msg = can.request(event, {_handle: ice.TRUE}, line, can.Option())
|
||||
can.runAction(event, target.name, args)
|
||||
})
|
||||
}
|
||||
return run([ctx.ACTION, target.name])
|
||||
}
|
||||
if (key == mdb.HASH && can.user.mod.isDiv) { return can.user.jumps("/chat/div/"+value) }
|
||||
if (can.sup.onaction.change(event, can.sup, key, event.target.innerText).length == 0) {
|
||||
can.sup && can.sup._item_click && can.sup._item_click(value, key)
|
||||
@ -383,6 +400,10 @@ Volcanos(chat.ONAPPEND, {help: "渲染引擎", _init: function(can, meta, list,
|
||||
can.onmotion.modifys(can, event.target, function(event, value, old) { run([ctx.ACTION, mdb.MODIFY, key, value]) }, item)
|
||||
}}
|
||||
}); table && can.page.styleClass(can, table, chat.CONTENT)
|
||||
|
||||
meta && meta._trans && can.page.Select(can, table, "input", function(target) {
|
||||
target.value = meta._trans[target.value]||target.value
|
||||
})
|
||||
if (msg.append && msg.append[msg.append.length-1] == ctx.ACTION) { can.page.ClassList.add(can, table, ctx.ACTION) }
|
||||
can._table = table, can.sup && (can.sup._table = table)
|
||||
return sort && can.page.RangeTable(can, table, sort), table
|
||||
|
@ -1,4 +1,4 @@
|
||||
Volcanos(chat.ONFIGURE, {help: "控件详情", key: {
|
||||
Volcanos(chat.ONFIGURE, {help: "控件详情", keyboard: {
|
||||
_init: function(event, can, cbs, target, name, value) {
|
||||
can.runAction(event, mdb.INPUTS, [name, value||target.value], function(msg) {
|
||||
can.onfigure.key._show(can, msg, cbs, target, name)
|
||||
|
72
plugin/input/keyboard.css
Normal file
72
plugin/input/keyboard.css
Normal file
@ -0,0 +1,72 @@
|
||||
fieldset.input.keyboard div.output div.small.key {
|
||||
font-size:16px; white-space:pre;
|
||||
}
|
||||
fieldset.input.keyboard div.output div.key {
|
||||
color:white;
|
||||
margin:5px;
|
||||
background-color:green;
|
||||
font-size:24px; text-align:center;
|
||||
height:40px; width:40px; float:left;
|
||||
padding:0;
|
||||
}
|
||||
fieldset.input.keyboard div.output div.key.Tab {
|
||||
width:60px;
|
||||
background-color:red;
|
||||
}
|
||||
fieldset.input.keyboard div.output div.key.CapsLock {
|
||||
width:70px;
|
||||
background-color:red;
|
||||
}
|
||||
fieldset.input.keyboard div.output div.key.Ctrl {
|
||||
width:70px;
|
||||
background-color:red;
|
||||
}
|
||||
fieldset.input.keyboard div.output div.key.Win {
|
||||
width:60px;
|
||||
background-color:red;
|
||||
}
|
||||
fieldset.input.keyboard div.output div.key.special {
|
||||
font-size:16px;
|
||||
}
|
||||
fieldset.input.keyboard div.output div.key span {
|
||||
display:block;
|
||||
margin-top:2px;
|
||||
}
|
||||
fieldset.input.keyboard div.output div.key.special span {
|
||||
display:block;
|
||||
margin-top:10px;
|
||||
}
|
||||
fieldset.input.keyboard div.output div.key.Alt {
|
||||
width:60px;
|
||||
background-color:red;
|
||||
}
|
||||
fieldset.input.keyboard div.output div.key.Shift {
|
||||
width:90px;
|
||||
background-color:red;
|
||||
}
|
||||
fieldset.input.keyboard div.output div.key.tail {
|
||||
width:70px;
|
||||
background-color:red;
|
||||
}
|
||||
fieldset.input.keyboard div.output div.key.Shift.tail {
|
||||
width:140px;
|
||||
background-color:red;
|
||||
}
|
||||
fieldset.input.keyboard div.output div.key.Enter {
|
||||
width:110px;
|
||||
background-color:red;
|
||||
}
|
||||
fieldset.input.keyboard div.output div.key.Space {
|
||||
width:300px;
|
||||
background-color:red;
|
||||
}
|
||||
fieldset.input.keyboard div.output div.key.Backspace {
|
||||
width:90px;
|
||||
background-color:red;
|
||||
}
|
||||
fieldset.input.keyboard div.output br {
|
||||
clear:both;
|
||||
}
|
||||
fieldset.input.keyboard div.output div.key:hover {
|
||||
background-color:green;
|
||||
}
|
126
plugin/input/keyboard.js
Normal file
126
plugin/input/keyboard.js
Normal file
@ -0,0 +1,126 @@
|
||||
Volcanos(chat.ONFIGURE, {help: "控件详情", keyboard: {
|
||||
onclick: function(event, can, meta, cb, target) {
|
||||
can.onfigure.keyboard._make(event, can, meta, cb, target)
|
||||
},
|
||||
onfocus: function(event, can, meta, cb, target, last) {
|
||||
can.onfigure.keyboard._make(event, can, meta, cb, target)
|
||||
},
|
||||
_make: function(event, can, meta, cb, target, last) {
|
||||
var sub = target._can; if (sub && sub._cbs) { return }
|
||||
cb(function(sub, cbs) { sub._cbs = cbs
|
||||
can.require(["/plugin/input/keyboard.css"])
|
||||
var msg = can.request({}); can.onfigure.keyboard._normal(can, msg)
|
||||
var keys = {}
|
||||
msg.Table(function(value) { value.type == "head" && can.page.Append(can, can._output, "br")
|
||||
var t = value.type+" "+value.name+(value.name.indexOf("\n")>-1? " small": value.name.length>1? " special": "")
|
||||
var div = can.page.Append(can, sub._output, [{view: t, list: [{text: [value.name]}], onclick: function(event) {
|
||||
switch (value.name) {
|
||||
case "Ctrl":
|
||||
can._ctrl = !can._ctrl
|
||||
keys[value.name] = div
|
||||
can.page.style(can, div, "background-color", "green")
|
||||
break
|
||||
case "Shift":
|
||||
can._shift = !can._shift
|
||||
keys[value.name] = div
|
||||
can.page.style(can, div, "background-color", "green")
|
||||
break
|
||||
case "Backspace":
|
||||
target.value = target.value.slice(0, -1)
|
||||
break
|
||||
case "Enter":
|
||||
break
|
||||
case "Esc":
|
||||
break
|
||||
default:
|
||||
can._shift = can._shift||event.shiftKey
|
||||
if (value.name == "Space") {
|
||||
target.value += " "
|
||||
} else if (value.name.indexOf("\n") > -1) {
|
||||
var ls = can.core.Split(value.name, "\n", "\n", "\n")
|
||||
target.value += can._shift? ls[0]: ls[1]
|
||||
} else if (can._shift) {
|
||||
target.value += value.name.toUpperCase()
|
||||
} else {
|
||||
target.value += value.name
|
||||
}
|
||||
can.core.Item(keys, function(key, target) {
|
||||
can.page.style(can, target, "background-color", "")
|
||||
}), can._ctrl = false, can._shift = false
|
||||
}
|
||||
target.focus(), can.user.toast(can, value.name)
|
||||
} }]).first
|
||||
})
|
||||
})
|
||||
},
|
||||
_normal: function(can, msg) {
|
||||
msg.Push({type: "key head", name: "Esc"})
|
||||
|
||||
msg.Push({type: "key head", name: "~\n`"})
|
||||
msg.Push({type: "key", name: "!\n1"})
|
||||
msg.Push({type: "key", name: "@\n2"})
|
||||
msg.Push({type: "key", name: "#\n3"})
|
||||
msg.Push({type: "key", name: "$\n4"})
|
||||
msg.Push({type: "key", name: "%\n5"})
|
||||
msg.Push({type: "key", name: "^\n6"})
|
||||
msg.Push({type: "key", name: "&\n7"})
|
||||
msg.Push({type: "key", name: "*\n8"})
|
||||
msg.Push({type: "key", name: "(\n9"})
|
||||
msg.Push({type: "key", name: ")\n0"})
|
||||
msg.Push({type: "key", name: "_\n-"})
|
||||
msg.Push({type: "key", name: "+\n="})
|
||||
msg.Push({type: "key", name: "Backspace"})
|
||||
|
||||
msg.Push({type: "key head", name: "Tab"})
|
||||
msg.Push({type: "key", name: "q"})
|
||||
msg.Push({type: "key", name: "w"})
|
||||
msg.Push({type: "key", name: "e"})
|
||||
msg.Push({type: "key", name: "r"})
|
||||
msg.Push({type: "key", name: "t"})
|
||||
msg.Push({type: "key", name: "y"})
|
||||
msg.Push({type: "key", name: "u"})
|
||||
msg.Push({type: "key", name: "i"})
|
||||
msg.Push({type: "key", name: "o"})
|
||||
msg.Push({type: "key", name: "p"})
|
||||
msg.Push({type: "key", name: "{\n["})
|
||||
msg.Push({type: "key", name: "}\n]"})
|
||||
msg.Push({type: "key tail", name: "|\n\\"})
|
||||
|
||||
// msg.Push({type: "key head", name: "CapsLock"})
|
||||
msg.Push({type: "key head", name: "Ctrl"})
|
||||
msg.Push({type: "key", name: "a"})
|
||||
msg.Push({type: "key", name: "s"})
|
||||
msg.Push({type: "key", name: "d"})
|
||||
msg.Push({type: "key", name: "f"})
|
||||
msg.Push({type: "key", name: "g"})
|
||||
msg.Push({type: "key", name: "h"})
|
||||
msg.Push({type: "key", name: "j"})
|
||||
msg.Push({type: "key", name: "k"})
|
||||
msg.Push({type: "key", name: "l"})
|
||||
msg.Push({type: "key", name: ":\n;"})
|
||||
msg.Push({type: "key", name: "\"\n'"})
|
||||
msg.Push({type: "key", name: "Enter"})
|
||||
|
||||
msg.Push({type: "key head", name: "Shift"})
|
||||
msg.Push({type: "key", name: "z"})
|
||||
msg.Push({type: "key", name: "x"})
|
||||
msg.Push({type: "key", name: "c"})
|
||||
msg.Push({type: "key", name: "v"})
|
||||
msg.Push({type: "key", name: "b"})
|
||||
msg.Push({type: "key", name: "n"})
|
||||
msg.Push({type: "key", name: "m"})
|
||||
msg.Push({type: "key", name: "<\n,"})
|
||||
msg.Push({type: "key", name: ">\n."})
|
||||
msg.Push({type: "key", name: "?\n/"})
|
||||
msg.Push({type: "key tail", name: "Shift"})
|
||||
|
||||
msg.Push({type: "key head", name: "Ctrl"})
|
||||
msg.Push({type: "key", name: "Win"})
|
||||
msg.Push({type: "key", name: "Alt"})
|
||||
msg.Push({type: "key", name: "Space"})
|
||||
msg.Push({type: "key", name: "Alt"})
|
||||
msg.Push({type: "key", name: "Win"})
|
||||
msg.Push({type: "key", name: "Ctrl"})
|
||||
|
||||
}
|
||||
}})
|
@ -16,6 +16,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据",
|
||||
function show() { if (can.isCmdMode()) { can.onimport._title(can, path+file) }
|
||||
can._msg && can._msg.Option(nfs.LINE, can.Option(nfs.LINE)), can._msg = can.tabview[key]
|
||||
can.Option(can.onimport.history(can, {path: path, file: file, line: line||can._msg.Option(nfs.LINE)||1}))
|
||||
if (isCommand()||isDream()) { can._msg.Option(ctx.INDEX, file) }
|
||||
can.onsyntax._init(can, can._msg, function(content) { var msg = can._msg
|
||||
can.ui._path && (can.ui._path.innerHTML = isDream()? can.page.Format(html.A, can.misc.MergePodCmd(can, {pod: can.Option(nfs.FILE)})):
|
||||
isCommand()? can.Option(nfs.FILE): can.base.Path(can.Option(nfs.PATH), can.Option(nfs.FILE)))
|
||||
@ -23,14 +24,13 @@ Volcanos(chat.ONIMPORT, {help: "导入数据",
|
||||
|
||||
can.page.Select(can, can.ui._content.parentNode, can.page.Keys(html.DIV_CONTENT, html.IFRAME), function(item) {
|
||||
if (can.onmotion.toggle(can, item, item == msg._content)) { can.ui.content = msg._content }
|
||||
})
|
||||
}), can.ui.content._plugin = msg._plugin
|
||||
can.page.Select(can, can.ui._profile_output.parentNode, can.page.Keys(html.DIV_OUTPUT, html.IFRAME), function(item) {
|
||||
if (can.onmotion.toggle(can, item, item == msg._profile_output)) { can.ui.profile_output = msg._profile_output }
|
||||
})
|
||||
can.onexport.hash(can), can.onimport.layout(can), can.base.isFunc(cb) && cb(), cb = null
|
||||
isCommand() && can.onmotion.delay(can, function() {
|
||||
can.onmotion.focus(can, can.page.Select(can, can.ui._content, html.OPTION_ARGS)[0])
|
||||
}), can.onengine.signal(can, "tabview.view.show", msg)
|
||||
msg._plugin && can.onmotion.delay(can, function() { msg._plugin.Focus() })
|
||||
can.onengine.signal(can, "tabview.view.show", msg)
|
||||
})
|
||||
}
|
||||
function load(msg) { can.tabview[key] = msg
|
||||
@ -46,7 +46,9 @@ Volcanos(chat.ONIMPORT, {help: "导入数据",
|
||||
}, can.ui._tabs)
|
||||
}
|
||||
|
||||
if (can.tabview[key]) { return can.isCmdMode() && !can._msg._tab? load(can.tabview[key]): show() }
|
||||
if (can.tabview[key]) {
|
||||
return can.isCmdMode() && !can._msg._tab? load(can.tabview[key]): show()
|
||||
}
|
||||
isCommand()||isDream()? load(can.request({}, {index: file, line: line})): can.run({}, [path, file], load, true)
|
||||
},
|
||||
history: function(can, push) {
|
||||
@ -109,14 +111,15 @@ Volcanos(chat.ONSYNTAX, {help: "语法高亮", _init: function(can, msg, cb) {
|
||||
}
|
||||
|
||||
return can.onimport.plug(can, {index: msg.Option(ctx.INDEX), args: can.Option(nfs.PATH) == ctx.COMMAND && can.Option(nfs.LINE) != ctx.INDEX? [can.Option(nfs.LINE)]: []}, can.ui._content, function(sub) {
|
||||
can.page.style(can, sub._output, html.MAX_HEIGHT, sub.ConfHeight(can.ui._content.offsetHeight-2*html.ACTION_HEIGHT))
|
||||
can.page.style(can, sub._output, html.MAX_WIDTH, sub.ConfWidth(can.ui._content.offsetWidth))
|
||||
can.onmotion.delay(can, function() { sub.Focus() }), can.base.isFunc(cb) && cb(msg._content = can.ui._content)
|
||||
can.page.style(can, sub._output, html.MAX_HEIGHT, sub.ConfHeight(can.ui.content.offsetHeight-2*html.ACTION_HEIGHT))
|
||||
can.page.style(can, sub._output, html.MAX_WIDTH, sub.ConfWidth(can.ui.content.offsetWidth))
|
||||
msg._plugin = sub, can.base.isFunc(cb) && cb(msg._content = can.ui._content)
|
||||
can.onmotion.delay(can, function() { sub.Focus() })
|
||||
|
||||
sub.onaction.close = function() { can.onaction.back({}, can), msg._tab._close() }
|
||||
sub.onimport._open = function(sub, msg, _arg) { var url = can.base.ParseURL(_arg), ls = url.origin.split("/chat/pod/")
|
||||
if (_arg.indexOf(location.origin) == 0 && ls.length > 1) {
|
||||
return can.onimport.tabview(can, can.Option(nfs.PATH), ls[1].split("/")[0], web.DREAM), sub.Update() // 显示空间
|
||||
return can.onimport.tabview(can, can.Option(nfs.PATH), ls[1].split(ice.PS)[0], web.DREAM), sub.Update()
|
||||
}
|
||||
return can.user.open(_arg), sub.Update()
|
||||
}
|
||||
@ -270,14 +273,14 @@ Volcanos(chat.ONIMPORT, {help: "导入数据",
|
||||
if (msg.Result().indexOf("<iframe") > -1) {
|
||||
var width = can.profile_size[can.onexport.keys(can)]||(can.ConfWidth()-can.ui.project.offsetWidth)/4*3
|
||||
if (sup._profile_output != can.ui._profile_output) { can.page.Remove(can, sup._profile_output) }
|
||||
can.ui.profile_output = sup._profile_output = can.page.Append(can, can.ui._profile_output.parentNode, [{view: "output", inner: msg.Result()}]).output
|
||||
can.ui.profile_output = sup._profile_output = can.page.Append(can, can.ui._profile_output.parentNode, [{view: html.OUTPUT, inner: msg.Result()}]).output
|
||||
can.profile_size[can.onexport.keys(can)] = width
|
||||
} else {
|
||||
var width = can.profile_size[can.onexport.keys(can)]||(can.ConfWidth()-can.ui.project.offsetWidth)/3
|
||||
var width = can.profile_size[can.onexport.keys(can)]||(can.ConfWidth()-can.ui.project.offsetWidth)/2
|
||||
can.ui.profile_output = sup._profile_output = can.ui._profile_output
|
||||
can.onimport.process(can, msg, can.ui._profile_output, width, can.ui.profile.offsetHeight)
|
||||
can.onappend._status(can, msg.Option(ice.MSG_STATUS), can.page.Append(can, can.ui._profile_output, ["status"]).first)
|
||||
can.page.Select(can, can.ui._profile_output, "table.content", function(target) { can.page.style(can, target, "max-height", "1000px") })
|
||||
can.onappend._status(can, msg.Option(ice.MSG_STATUS), can.page.Append(can, can.ui._profile_output, [html.STATUS]).first)
|
||||
can.page.Select(can, can.ui._profile_output, "table.content", function(target) { can.page.style(can, target, html.MAX_HEIGHT, "1000px") })
|
||||
}
|
||||
}
|
||||
can.onmotion.toggle(can, can.ui.profile_output, true)
|
||||
@ -394,7 +397,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar
|
||||
can.onmotion.clear(can), can.onlayout.profile(can)
|
||||
can.onimport._profile(can, can.ui.profile)
|
||||
can.onimport._display(can, can.ui.display)
|
||||
if (msg.Result() == "") { return }
|
||||
if (msg.Result() == "" && can.Option(nfs.LINE) == "1") { return }
|
||||
|
||||
if (msg.Option(nfs.FILE)) {
|
||||
msg.Option(nfs.PATH) && can.Option(nfs.PATH, msg.Option(nfs.PATH))
|
||||
@ -454,12 +457,12 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar
|
||||
|
||||
var height = can.user.isMobile && can.isFloatMode()? window.innerHeight-2*html.ACTION_HEIGHT: can.ConfHeight()
|
||||
var width = can.ConfWidth()+(can.user.isMobile && can.isCmdMode() && can.user.isLandscape()? 16: 0)-(can.user.isWindows && !can.isCmdMode()? 20: 0)
|
||||
can.page.styleWidth(can, can.ui.profile_output, can.profile_size[can.onexport.keys(can)]||(width-can.ui.project.offsetWidth)/3)
|
||||
can.page.styleWidth(can, can.ui.profile_output, can.profile_size[can.onexport.keys(can)]||(width-can.ui.project.offsetWidth)/2)
|
||||
can.page.styleWidth(can, can.ui.content, width-can.ui.project.offsetWidth-can.ui.profile.offsetWidth)
|
||||
can.page.styleWidth(can, can.ui.display, width-can.ui.project.offsetWidth)
|
||||
can.page.styleWidth(can, can.ui.display_output, width-can.ui.project.offsetWidth)
|
||||
|
||||
var displayHeight = can.display_size[can.onexport.keys(can)]
|
||||
can.page.style(can, can.ui.display, html.HEIGHT, displayHeight||200)
|
||||
can.page.style(can, can.ui.display_output, html.HEIGHT, displayHeight||200)
|
||||
|
||||
if (can.isCmdMode()) {
|
||||
if (can.ui.display.display != html.NONE) {
|
||||
@ -484,6 +487,10 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar
|
||||
can.page.Select(can, can.ui.profile, html.IFRAME, function(iframe) {
|
||||
can.page.Modify(can, iframe, {height: can.ui.profile.offsetHeight-html.ACTION_HEIGHT-4, width: can.ui.profile.offsetWidth})
|
||||
})
|
||||
var sub = can.ui.content._plugin; if (sub) {
|
||||
sub.ConfHeight(can.ui.content.offsetHeight-2*html.ACTION_HEIGHT), sub.ConfWidth(can.ui.content.offsetWidth)
|
||||
sub && sub.onaction.refresh({}, sub)
|
||||
}
|
||||
},
|
||||
toolkit: function(can, meta, cb) { meta.msg = true
|
||||
can.onimport.plug(can, meta, can.ui.toolkit.output, function(sub) {
|
||||
|
@ -19,6 +19,9 @@ fieldset.vimer>div.output div.complete div.pre {
|
||||
fieldset.vimer>div.output div.complete table {
|
||||
background:darkblue; max-height:400px; max-width:800px; overflow:auto; display:block; float:left;
|
||||
}
|
||||
body.white fieldset.vimer>div.output div.complete table {
|
||||
background:aliceblue; max-height:400px; max-width:800px; overflow:auto; display:block; float:left;
|
||||
}
|
||||
fieldset.vimer>div.output div.complete table.content th {
|
||||
display:none;
|
||||
}
|
||||
|
@ -1,9 +1,8 @@
|
||||
Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, target) {
|
||||
can.require(["inner.js"], function(can) { can.onimport.inner_init(can, msg, function() { can.undo = [], can.redo = []
|
||||
can.onengine.listen(can, "tabview.line.select", function(msg) { can.onaction._selectLine(msg._event, can) })
|
||||
can.core.Item(can.onkeymap._mode.plugin, function(key, value) {
|
||||
can.onkeymap._mode.normal[key] = can.onkeymap._mode.normal[key]||value
|
||||
}), can.onimport._input(can), can.onkeymap._build(can), can.onkeymap._plugin({}, can)
|
||||
can.core.Item(can.onkeymap._mode.plugin, function(key, value) { can.onkeymap._mode.normal[key] = can.onkeymap._mode.normal[key]||value })
|
||||
can.onimport._input(can), can.onkeymap._build(can), can.onkeymap._plugin({}, can)
|
||||
can.page.ClassList.add(can, can._fields, code.VIMER), can.base.isFunc(cb) && cb(msg)
|
||||
can.onengine.plugin(can, can.onplugin)
|
||||
}, target) }, function(can, name, sub) { name == chat.ONIMPORT && (can.onimport.inner_init = sub._init)
|
||||
@ -100,7 +99,7 @@ Volcanos(chat.ONFIGURE, {help: "索引导航",
|
||||
Volcanos(chat.ONKEYMAP, {help: "键盘交互",
|
||||
_model: function(can, value) { can.Status("模式", can.mode = value)
|
||||
can.page.styleClass(can, can.ui.current, ["current", can.mode]), value
|
||||
can.page.styleClass(can, can.ui.complete, ["complete", can.mode]), value
|
||||
can.page.styleClass(can, can.ui.complete, [code.COMPLETE, can.mode]), value
|
||||
},
|
||||
_plugin: function(event, can) { can.onkeymap._model(can, "plugin")
|
||||
can.ui.current.blur()
|
||||
@ -159,8 +158,12 @@ Volcanos(chat.ONKEYMAP, {help: "键盘交互",
|
||||
h: shy("光标左移", function(event, can, target) { can.onkeymap.cursorMove(can, target, -1) }),
|
||||
l: shy("光标右移", function(event, can, target) { can.onkeymap.cursorMove(can, target, 1) }),
|
||||
L: shy("跳到行尾", function(event, can, target) { can.onkeymap.cursorMove(can, target, 0, -1) }),
|
||||
j: shy("光标下移", function(event, can) { can.onaction.selectLine(event, can, can.current.next()) }),
|
||||
k: shy("光标上移", function(event, can) { can.onaction.selectLine(event, can, can.current.prev()) }),
|
||||
j: shy("光标下移", function(event, can) {
|
||||
can.onaction.selectLine(event, can, can.current.next())
|
||||
}),
|
||||
k: shy("光标上移", function(event, can) {
|
||||
can.onaction.selectLine(event, can, can.current.prev())
|
||||
}),
|
||||
|
||||
gg: shy("跳到某行", function(event, can, target, count) { return can.onaction.selectLine(event, can, count), true }),
|
||||
G: shy("跳到某行", function(event, can, target, count) { return can.onaction.selectLine(event, can, count = count>1? count: can.max), true }),
|
||||
@ -242,6 +245,24 @@ Volcanos(chat.ONKEYMAP, {help: "键盘交互",
|
||||
})
|
||||
Volcanos(chat.ONACTION, {help: "控件交互",
|
||||
_trans: {source: "源码", module: "模块", dreams: "空间", website: "网页"},
|
||||
_daemon: function(event, can, arg) {
|
||||
switch (arg[0]) {
|
||||
case "dream":
|
||||
can.runAction({}, arg[0], arg.slice(1), function(msg) {
|
||||
can.onimport.tabview(can, can.Option(nfs.PATH), can.core.Keys(can.misc.Search(can, ice.POD), msg.Option(mdb.NAME)), web.DREAM)
|
||||
})
|
||||
break
|
||||
case "xterm":
|
||||
can.runAction({}, arg[0], arg.slice(1), function(msg) {
|
||||
can.onimport.tabview(can, ctx.COMMAND, code.XTERM, msg.Result())
|
||||
})
|
||||
break
|
||||
default:
|
||||
can.runAction({}, arg[0], arg.slice(1), function(msg) {
|
||||
can.onimport.tabview(can, msg.Option(nfs.PATH)||can.Option(nfs.PATH), msg.Option(nfs.FILE)), can.ui.source.refresh()
|
||||
})
|
||||
}
|
||||
},
|
||||
_run: function(event, can, button, args, cb) {
|
||||
can.runAction(event, button, args, cb||function(msg) {
|
||||
can.onimport.tabview(can, msg.Option(nfs.PATH)||can.Option(nfs.PATH), msg.Option(nfs.FILE)), can.ui.source.refresh()
|
||||
@ -273,7 +294,7 @@ Volcanos(chat.ONACTION, {help: "控件交互",
|
||||
can.onaction._runs(can.request(event, {file: can.base.trimSuffix(can.Option(nfs.FILE), can.base.Ext(can.Option(nfs.FILE)))+nfs.JS}), can, button)
|
||||
},
|
||||
website: function(event, can, button) {
|
||||
can.onaction._runs(can.request(event, {path: "src/", file: (can.base.trimSuffix(can.Option(nfs.FILE), can.base.Ext(can.Option(nfs.FILE)))+nfs.ZML).split(ice.PS).pop()}), can, button)
|
||||
can.onaction._runs(can.request(event, {path: "src/website/", file: (can.base.trimSuffix(can.Option(nfs.FILE), can.base.Ext(can.Option(nfs.FILE)))+nfs.ZML).split(ice.PS).pop()}), can, button)
|
||||
},
|
||||
dream: function(event, can, button) {
|
||||
can.onaction._runs(can.request(event, {name: can.base.trimSuffix(can.Option(nfs.FILE).split(ice.PS).pop(), ice.PT+can.base.Ext(can.Option(nfs.FILE)))}), can, button, function(msg) { can.ui.dream.refresh()
|
||||
@ -366,14 +387,16 @@ Volcanos(chat.ONACTION, {help: "控件交互",
|
||||
}
|
||||
},
|
||||
_selectLine: function(event, can) {
|
||||
can.page.Select(can, can.current.line, "td.text", function(td) { can.ui.current.value = td.innerText
|
||||
can.current.line.appendChild(can.ui.current), can.page.style(can, can.ui.current, html.LEFT, td.offsetLeft-1, html.WIDTH, can.ui.content.style.width)
|
||||
can.page.Select(can, can.current.line, "td.text", function(td) { var target = can.ui.current; target.value = td.innerText
|
||||
can.current.line.appendChild(target), can.page.style(can, target, html.LEFT, td.offsetLeft-1, html.WIDTH, can.ui.content.style.width)
|
||||
if (event && event.type) {
|
||||
if (event.type == "click" && can.mode != "insert") { can.onkeymap._insert(event, can)
|
||||
can.onmotion.delay(can, function() { can.onaction._complete(event, can) })
|
||||
}
|
||||
can.ui.current.focus(), can.ui.content.scrollLeft -= 10000
|
||||
can.onkeymap.cursorMove(can, can.ui.current, 0, (event.offsetX)/12-1)
|
||||
target.focus(), can.ui.content.scrollLeft -= 10000
|
||||
if (event.type == "click") {
|
||||
can.onkeymap.cursorMove(can, target, 0, (event.offsetX)/12-1)
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
|
@ -4,7 +4,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg) { can.o
|
||||
item.text && can.onmotion.delay(can, function() { can.onimport._input(can, item.text+ice.NL) })
|
||||
can.onimport.layout(can), can.onappend._status(can), can.onappend.tools(can, msg, function(sub) {
|
||||
sub._item_click = function(value, key) { can.onimport._input(can, value+ice.NL) }
|
||||
}), can.isCmdMode() && can.misc.Search(can, mdb.HASH) && can.sup.onaction.full({}, can.sup)
|
||||
}), can.isCmdMode() && can.Option(mdb.HASH) && can.Option(mdb.HASH) == can.misc.Search(can, mdb.HASH) && can.runAction({}, "full")
|
||||
can.onimport._connect(can, item)
|
||||
})
|
||||
},
|
||||
@ -15,7 +15,13 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg) { can.o
|
||||
|
||||
term.onTitleChange(function(title) { can.isCmdMode() && can.user.title(title) })
|
||||
term.onResize(function(size) { can.onimport._resize(can, size) })
|
||||
term.onData(function(data) { can.onimport._input(can, data) })
|
||||
term.onData(function(data) {
|
||||
console.log(data)
|
||||
can.onimport._input(can, data)
|
||||
})
|
||||
term.onKey(function(data) {
|
||||
console.log(data)
|
||||
})
|
||||
term.onCursorMove(function() { can.onexport.term(can) })
|
||||
|
||||
can._current = term, term._item = item
|
||||
@ -38,6 +44,13 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg) { can.o
|
||||
},
|
||||
grow: function(can, msg) { can._current.write(msg.Option(mdb.TEXT)) },
|
||||
})
|
||||
Volcanos(chat.ONACTION, {help: "操作数据",
|
||||
refresh: function(event, can, button) {
|
||||
can.onimport.layout(can), can._current.focus()
|
||||
},
|
||||
"波浪线": function(event, can, button) { can.onimport._input(can, "~"), can._current.focus() },
|
||||
"反引号": function(event, can, button) { can.onimport._input(can, "`"), can._current.focus() },
|
||||
})
|
||||
Volcanos(chat.ONEXPORT, {help: "导出数据", list: [mdb.TYPE, mdb.NAME, "rows", "cols", "cursorY", "cursorX"],
|
||||
term: function(can) { var term = can._current, item = term._item
|
||||
can.core.List(can.onexport.list, function(key) {
|
||||
|
@ -96,7 +96,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _process: function(can, msg) {
|
||||
},
|
||||
})
|
||||
Volcanos(chat.ONACTION, {help: "交互操作", list: [
|
||||
"刷新数据", "切换全屏", "共享工具", "打开链接", "生成链接", "生成脚本", "生成图片", [
|
||||
"刷新数据", "切换全屏", "keyboard", "共享工具", "打开链接", "生成链接", "生成脚本", "生成图片", [
|
||||
"其它", "刷新页面", "保存参数", "清空参数", "扩展参数", "复制数据", "下载数据", "清空数据",
|
||||
"查看文档", "查看脚本", "查看源码", "查看配置", "删除配置", "删除工具",
|
||||
],
|
||||
@ -122,6 +122,17 @@ Volcanos(chat.ONACTION, {help: "交互操作", list: [
|
||||
mdb.NAME, meta.index, mdb.TEXT, JSON.stringify(can.Input([], true)),
|
||||
])
|
||||
},
|
||||
"keyboard": function(event, can) {
|
||||
can.base.isUndefined(can._daemon) && can.ondaemon._list[0] && (can._daemon = can.ondaemon._list.push(can)-1)
|
||||
can.request(event, kit.Dict(ctx.INDEX, can._index, ice.MSG_DAEMON, can.core.Keys(can.ondaemon._list[0], can._daemon)))
|
||||
|
||||
can.runAction(event, "keyboard", [], function(msg) {
|
||||
can.user.toast(can, {
|
||||
title: msg.Append(mdb.NAME), duration: -1,
|
||||
content: msg.Append(mdb.TEXT), action: [cli.CLOSE, cli.OPEN],
|
||||
}), can.user.copy(msg._event, can, msg.Append(mdb.NAME))
|
||||
}, true)
|
||||
},
|
||||
"打开链接": function(event, can) { var meta = can.Conf(), args = can.Option(); args.river = "", args.storm = ""
|
||||
args.cmd = meta.index||can.core.Keys(meta.ctx, meta.cmd), args.cmd == "web.wiki.word" && (args.cmd = args.path)
|
||||
can.user.isWeiXin? can.user.jumps(can.misc.MergeURL(can, args)): can.user.open(can.misc.MergeURL(can, args))
|
||||
@ -201,6 +212,10 @@ Volcanos(chat.ONACTION, {help: "交互操作", list: [
|
||||
can.onaction["切换全屏"](event, can)
|
||||
}
|
||||
},
|
||||
refresh: function(event, can) { var sub = can.core.Value(can, chat._OUTPUTS_CURRENT)
|
||||
if (!sub) { return }
|
||||
sub.ConfHeight(can.ConfHeight()), sub.ConfWidth(can.ConfWidth()), sub.onimport.layout(sub)
|
||||
},
|
||||
clear: function(event, can, name) { can.onmotion.clear(can, can._output) },
|
||||
close: function(event, can) {
|
||||
if (can.isFullMode()) {
|
||||
|
@ -143,10 +143,10 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar
|
||||
},
|
||||
plug: function(can, meta, target, cb) { if (!meta || !meta.index) { return }
|
||||
meta.type = "plug", can.onappend.plugin(can, meta, function(sub) { sub.sup = can
|
||||
sub.ConfHeight(target.offsetHeight-2*html.ACTION_HEIGHT), sub.ConfWidth(target.offsetWidth)
|
||||
sub.run = function(event, cmds, cb) { can.runActionCommand(can.request(event, can.Option()), meta.index, cmds, cb) }
|
||||
sub.onaction.close = function() { can.ui && target == can.ui.profile? can.onmotion.hidden(sub, target): can.onmotion.hidden(sub, sub._target) }
|
||||
can.page.style(can, sub._output, html.MAX_HEIGHT, can.ConfHeight()-2*html.ACTION_HEIGHT, html.MAX_WIDTH, can.ConfWidth())
|
||||
can.base.isFunc(cb) && cb(sub)
|
||||
can.base.isFunc(cb) && cb(sub), can.page.style(can, sub._output, html.MAX_HEIGHT, sub.ConfHeight(), html.MAX_WIDTH, sub.ConfWidth())
|
||||
}, target)
|
||||
},
|
||||
tool: function(can, list, cb, target) { target = target||can._output
|
||||
|
Loading…
x
Reference in New Issue
Block a user