forked from x/volcanos
opt onkeypop
This commit is contained in:
parent
d6900c33c3
commit
5d1405ba0c
49
frame.js
49
frame.js
@ -20,7 +20,8 @@ Volcanos("onengine", {help: "搜索引擎", list: [], _init: function(can, meta,
|
||||
// panel.onkeypop._build(panel)
|
||||
}, target)
|
||||
}, function() { can.misc.Log(can.user.title(), ice.RUN, can)
|
||||
can.ondaemon._init(can), can.onmotion._init(can, target), can.onkeypop._init(can, target)
|
||||
can.require(["/frame.js"], null, function(can, name, sub) { can[name] = sub })
|
||||
can.ondaemon._init(can), can.onmotion._init(can, target), can.onkeypop._init(can)
|
||||
can.onlayout.topic(can), can.onengine.signal(can, chat.ONMAIN, can.request())
|
||||
can.base.isFunc(cb) && cb()
|
||||
})
|
||||
@ -654,10 +655,14 @@ Volcanos("onmotion", {help: "动态特效", list: [], _init: function(can, targe
|
||||
},
|
||||
})
|
||||
Volcanos("onkeypop", {help: "键盘交互", list: [], _focus: [], _init: function(can, target) {
|
||||
var focus = can.onkeypop._focus; can.onkeypop._build(can)
|
||||
can.onengine.listen(can, "keymap.focus", function(cb) { cb? focus.push(cb): can.onkeypop._focus.length = 0 })
|
||||
document.body.onkeydown = function(event) { if (focus.length > 0) { return focus[focus.length-1](event) }
|
||||
event.target == target && (target._keys = can.onkeypop._parse(event, can, "normal", target._keys||[], target))
|
||||
document.body.onkeydown = function(event) { var msg = can.request(event)
|
||||
msg.Option("model", "normal"); if (event.target.tagName == "INPUT") {
|
||||
msg.Option("model", event.ctrlKey? "insert_ctrl": "insert")
|
||||
}
|
||||
if (msg.Option(ice.MSG_HANDLE) == ice.TRUE) { return }
|
||||
can.onengine.signal(can, "onkeydown", msg)
|
||||
if (msg.Option(ice.MSG_HANDLE) == ice.TRUE) { return }
|
||||
can._keylist = can.onkeypop._parse(event, can, msg.Option("model"), can._keylist||[], can._output)
|
||||
}
|
||||
},
|
||||
_build: function(can) {
|
||||
@ -686,7 +691,7 @@ Volcanos("onkeypop", {help: "键盘交互", list: [], _focus: [], _init: functio
|
||||
|
||||
var map = can.onkeypop._engine[mode]||{}; for (var i = list.length-1; i > pre-1; i--) {
|
||||
var cb = map[list[i]]||{}; switch (typeof cb) {
|
||||
case lang.FUNCION: repeat(cb, count); return list
|
||||
case lang.FUNCTION: repeat(cb, count); return list
|
||||
case lang.OBJECT: map = cb; continue
|
||||
case lang.STRING:
|
||||
default: return list
|
||||
@ -695,38 +700,6 @@ Volcanos("onkeypop", {help: "键盘交互", list: [], _focus: [], _init: functio
|
||||
return list
|
||||
},
|
||||
_mode: {
|
||||
normal: {
|
||||
j: function(event, can, target) { target.scrollBy(0, event.ctrlKey? 300: 30) },
|
||||
k: function(event, can, target) { target.scrollBy(0, event.ctrlKey? -300: -30) },
|
||||
|
||||
b: function(event, can, target) { can.search(event, ["Header.onaction.black"]) },
|
||||
w: function(event, can, target) { can.search(event, ["Header.onaction.white"]) },
|
||||
|
||||
s: function(event, can, target) { can.search(event, ["River.ondetail.添加应用"]) },
|
||||
t: function(event, can, target) { can.search(event, ["River.ondetail.添加工具"]) },
|
||||
|
||||
":": function(event, can, target) {
|
||||
can.page.Select(can, document.body, "fieldset.panel.Footer input.cmd", function(target) {
|
||||
target.focus()
|
||||
})
|
||||
},
|
||||
" ": function(event, can, target) {
|
||||
can.page.Select(can, document.body, "fieldset.panel.Header div.search input", function(target) {
|
||||
target.focus()
|
||||
})
|
||||
},
|
||||
enter: function(event, can, target) { can.misc.Log("enter") },
|
||||
escape: function(event, can, target) {
|
||||
can.page.Select(can, document.body, "fieldset.float", function(item) {
|
||||
can.page.Remove(can, item)
|
||||
})
|
||||
can.page.Select(can, document.body, "fieldset.auto", function(item) {
|
||||
can.onmotion.hidden(can, item)
|
||||
})
|
||||
can.search(event, ["Search.onaction.hide"])
|
||||
can.misc.Log("enter")
|
||||
},
|
||||
},
|
||||
insert: {
|
||||
escape: function(event, can, target) {
|
||||
target.blur()
|
||||
|
@ -226,6 +226,7 @@ Volcanos("user", {help: "用户操作", agent: {
|
||||
return {type: html.TR, list: [{type: html.TD, list: [{text: item._trans||can.user.trans(can, item.name)||""}]}, {type: html.TD, list: [can.page.input(can, item)]} ]}
|
||||
})}, {view: chat.ACTION},
|
||||
]}]); can.onlayout.figure(event, can, ui._target)
|
||||
can.page.ClassList.add(can, ui._target, "float")
|
||||
|
||||
var action = can.onappend._action(can, button||[html.SUBMIT, html.CANCEL], ui.action, {
|
||||
cancel: function(event) { can.page.Remove(can, ui._target) },
|
||||
|
@ -570,7 +570,7 @@ body.white table input[type=button][value=启动] {
|
||||
}
|
||||
|
||||
body.white fieldset>div.legend {
|
||||
background-color:honeydew;
|
||||
/* background-color:honeydew; */
|
||||
}
|
||||
body.white fieldset>div.status>div.item>label {
|
||||
font-size:10px; color:#cefbfbe0;
|
||||
|
@ -95,7 +95,10 @@ Volcanos("onaction", {help: "交互操作", list: [], _init: function(can, msg,
|
||||
}
|
||||
can.base.isFunc(cb) && cb()
|
||||
},
|
||||
onmain: function(can, msg) { can.onimport._share(can, can.misc.Search(can, web.SHARE)) },
|
||||
onmain: function(can, msg) {
|
||||
can.onimport._share(can, can.misc.Search(can, web.SHARE))
|
||||
can.onkeypop._init(can)
|
||||
},
|
||||
onsize: function(can, msg, width, height) { can.Conf({width: width, height: height}) },
|
||||
onsearch: function(can, msg, word) {
|
||||
if (word[0] == "*" || word[0] == mdb.PLUGIN) { can.onexport.plugin(can, msg, word) }
|
||||
@ -147,6 +150,42 @@ Volcanos("onaction", {help: "交互操作", list: [], _init: function(can, msg,
|
||||
can.onlayout._init(can)
|
||||
},
|
||||
})
|
||||
Volcanos("onkeypop", {help: "键盘交互", list: [], _focus: [], _init: function(can, target) {
|
||||
can.onkeypop._build(can), can.onengine.listen(can, "onkeydown", function(msg, model) {
|
||||
can._keylist = can.onkeypop._parse(msg._event, can, model, can._keylist||[], can._output)
|
||||
})
|
||||
},
|
||||
_mode: {
|
||||
normal: {
|
||||
j: function(event, can, target) { target.scrollBy(0, event.ctrlKey? 300: 30) },
|
||||
k: function(event, can, target) { target.scrollBy(0, event.ctrlKey? -300: -30) },
|
||||
|
||||
b: function(event, can, target) { can.search(event, ["Header.onaction.black"]) },
|
||||
w: function(event, can, target) { can.search(event, ["Header.onaction.white"]) },
|
||||
|
||||
s: function(event, can, target) { can.search(event, ["River.ondetail.添加应用"]) },
|
||||
t: function(event, can, target) { can.search(event, ["River.ondetail.添加工具"]) },
|
||||
|
||||
":": function(event, can, target) {
|
||||
can.onengine.signal(can, "oncommandfocus")
|
||||
},
|
||||
" ": function(event, can, target) {
|
||||
can.onengine.signal(can, "onsearchfocus")
|
||||
},
|
||||
enter: function(event, can, target) { can.misc.Log("enter") },
|
||||
escape: function(event, can, target) {
|
||||
can.page.Select(can, document.body, "fieldset.float,div.float", function(item) {
|
||||
can.page.Remove(can, item)
|
||||
})
|
||||
can.page.Select(can, document.body, "fieldset.auto", function(item) {
|
||||
can.onmotion.hidden(can, item)
|
||||
})
|
||||
can.search(event, ["Search.onaction.hide"])
|
||||
can.misc.Log("enter")
|
||||
},
|
||||
},
|
||||
}, _engine: {},
|
||||
})
|
||||
Volcanos("onexport", {help: "导出数据", list: [],
|
||||
args: function(can, msg, list, cb, target) {
|
||||
can.core.Next(can.page.Select(can, target, "fieldset.plugin>form.option"), function(item, next, index, array) {
|
||||
|
@ -61,6 +61,11 @@ Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, msg,
|
||||
onlogin: function(can, msg) { can.run({}, [], function(msg) { can.onimport._init(can, msg, [], null, can._output) }) },
|
||||
onremote: function(can, msg) { can.core.CallFunc(can.onimport.ncmd, {can: can, msg: msg}) },
|
||||
ontoast: function(can, msg) { can.core.CallFunc(can.onimport.toast, {can: can, msg: msg}) },
|
||||
oncommandfocus: function(can) {
|
||||
can.page.Select(can, can._output, "div.cmd input", function(target) {
|
||||
target.focus()
|
||||
})
|
||||
},
|
||||
|
||||
_cmd: function(can) {
|
||||
return can.onappend.float(can, can._cmds, function(value, key, index, line, list) {
|
||||
|
@ -158,6 +158,11 @@ Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, meta,
|
||||
})
|
||||
},
|
||||
onstorm_select: function(can, msg, river, storm) { can.Conf(chat.RIVER, river), can.Conf(chat.STORM, storm) },
|
||||
onsearchfocus: function(can) {
|
||||
can.page.Select(can, can._output, "div.search input", function(target) {
|
||||
target.focus()
|
||||
})
|
||||
},
|
||||
|
||||
title: function(event, can) {
|
||||
var args = {}; can.core.List([chat.TITLE, chat.TOPIC, chat.LAYOUT], function(key) {
|
||||
|
@ -64,7 +64,7 @@ Volcanos("onaction", {help: "交互操作", list: [cli.CLEAR, cli.CLOSE, cli.DON
|
||||
{view: chat.CONTENT}, {view: html.STATUS}, {view: [chat.DISPLAY, html.TABLE]},{view: chat.PROFILE},
|
||||
]), can.page.ClassList.add(can, can.ui.display, chat.CONTENT)
|
||||
},
|
||||
onopensearch: function(can, msg, type, word) { can.onimport.select(can, msg, [type, word]) },
|
||||
onopensearch: function(can, msg, type, word) { can.onimport.select(can, msg, [type||"*", word||""]) },
|
||||
|
||||
clear: function(event, can) { can.onmotion.clear(can, can.ui.profile) },
|
||||
done: function(event, can) { can.base.isFunc(can.cb) && can.cb() },
|
||||
|
10
proto.js
10
proto.js
@ -195,16 +195,16 @@ var Volcanos = shy("火山架", {iceberg: "/chat/", volcano: "/frame.js", args:
|
||||
}
|
||||
|
||||
can = can||{}
|
||||
var proto = {__proto__: meta, _path: _can_path, _name: name, _load: function(name, cb) { // 加载缓存
|
||||
var proto = {__proto__: meta, _path: _can_path, _name: name, _load: function(name, each) { // 加载缓存
|
||||
var cache = meta.cache[name]||[]; for (list.reverse(); list.length > 0; list) {
|
||||
var sub = list.pop(); sub != can && cache.push(sub)
|
||||
}; meta.cache[name] = cache
|
||||
|
||||
// 加载模块
|
||||
for (var i = 0; i < cache.length; i++) { var sub = cache[i]
|
||||
if (typeof cb == lang.FUNCTION && cb(can, name, sub)) { continue }
|
||||
!can[sub._name] && (can[sub._name] = {}); for (var k in sub) {
|
||||
can[sub._name].hasOwnProperty(k) || (can[sub._name][k] = sub[k])
|
||||
for (var i = 0; i < cache.length; i++) { var sub = cache[i], name = sub._name
|
||||
if (typeof each == lang.FUNCTION && each(can, name, sub)) { continue }
|
||||
!can[name] && (can[name] = {}); for (var k in sub) {
|
||||
can[name].hasOwnProperty(k) || (can[name][k] = sub[k])
|
||||
}
|
||||
}
|
||||
},
|
||||
|
Loading…
x
Reference in New Issue
Block a user