1
0
forked from x/icebergs
This commit is contained in:
IT 老营长 @云轩领航-创始人 2023-08-28 22:56:08 +08:00
parent d0fe3fa473
commit 1956cc811f
4 changed files with 77 additions and 95 deletions

View File

@ -6,10 +6,8 @@ fieldset.macos.desktop>div.output>fieldset.macos.menu { line-height:25px; border
fieldset.macos.desktop>div.output>fieldset.macos.dock { border:var(--box-border); border-radius:20px; position:absolute; bottom:10px; transition:margin-left 0.3s; } fieldset.macos.desktop>div.output>fieldset.macos.dock { border:var(--box-border); border-radius:20px; position:absolute; bottom:10px; transition:margin-left 0.3s; }
fieldset.macos.desktop>div.output>fieldset.macos.searchs { position:absolute; z-index:100; } fieldset.macos.desktop>div.output>fieldset.macos.searchs { position:absolute; z-index:100; }
fieldset.macos.desktop>div.output>fieldset.macos.searchs>form.option>div.item.keyword input { background-color:transparent; width:320px; } fieldset.macos.desktop>div.output>fieldset.macos.searchs>form.option>div.item.keyword input { background-color:transparent; width:320px; }
fieldset.macos.desktop>div.output>fieldset.macos.notifications { border-radius:0; height:calc(100% - 125px); width:250px; overflow:auto; position:absolute; top:25px; right:0; } fieldset.macos.desktop>div.output>fieldset.macos.notifications { border-radius:0; height:calc(100% - 125px); width:250px; overflow:auto; position:absolute; top:25px; left:800px; }
fieldset.macos.desktop>div.output>fieldset.macos.notifications>div.action>div.item { margin-top:10px; } fieldset.macos.desktop>div.output>fieldset.macos.notifications>div.output>div.item { margin-top:10px; min-height:60px; clear:both; }
fieldset.macos.desktop>div.output>fieldset.macos.notifications>div.action>div.item input { background-color:transparent; }
fieldset.macos.desktop>div.output>fieldset.macos.notifications>div.output>div.item { margin-top:10px; margin-right:10px; min-height:60px; clear:both; }
fieldset.macos.desktop>div.output>fieldset.macos.notifications div.item div.title { margin-top:10px; width:132px; overflow:hidden; } fieldset.macos.desktop>div.output>fieldset.macos.notifications div.item div.title { margin-top:10px; width:132px; overflow:hidden; }
fieldset.macos.desktop>div.output>fieldset.macos.notifications div.item div.time { font-size:var(--code-font-size); margin-top:10px; width:48px; } fieldset.macos.desktop>div.output>fieldset.macos.notifications div.item div.time { font-size:var(--code-font-size); margin-top:10px; width:48px; }
fieldset.macos.desktop>div.output>fieldset.macos.notifications div.item div.content { width:180px; } fieldset.macos.desktop>div.output>fieldset.macos.notifications div.item div.content { width:180px; }
@ -17,6 +15,7 @@ fieldset.macos.desktop>div.output>div.desktop:not(.select) { display:none; }
fieldset.macos.desktop>div.output>div.desktop>div.item { position:absolute; text-align:center; } fieldset.macos.desktop>div.output>div.desktop>div.item { position:absolute; text-align:center; }
fieldset.macos.desktop>div.output>div.desktop>div.item img { object-fit:contain; border-radius:var(--desktop-icon-size); height:var(--desktop-icon-size); width:var(--desktop-icon-size); } fieldset.macos.desktop>div.output>div.desktop>div.item img { object-fit:contain; border-radius:var(--desktop-icon-size); height:var(--desktop-icon-size); width:var(--desktop-icon-size); }
fieldset.macos.desktop>div.output>div.desktop>div.item>div.name { font-size:var(--code-font-size); width:var(--desktop-icon-size); overflow:hidden; } fieldset.macos.desktop>div.output>div.desktop>div.item>div.name { font-size:var(--code-font-size); width:var(--desktop-icon-size); overflow:hidden; }
fieldset.macos.desktop>div.output>div.desktop>fieldset.select { z-index:1; }
fieldset.macos.desktop>div.output>div.desktop>fieldset { border-radius:10px; position:absolute; } fieldset.macos.desktop>div.output>div.desktop>fieldset { border-radius:10px; position:absolute; }
fieldset.macos.desktop>div.output>div.desktop>fieldset>div.item.button { border-radius:20px; height:20px; width:20px; scale:0.7; position:absolute; top:16px; right:10px; } fieldset.macos.desktop>div.output>div.desktop>fieldset>div.item.button { border-radius:20px; height:20px; width:20px; scale:0.7; position:absolute; top:16px; right:10px; }
fieldset.macos.desktop>div.output>div.desktop>fieldset>legend { padding:0 10px; margin:10px; } fieldset.macos.desktop>div.output>div.desktop>fieldset>legend { padding:0 10px; margin:10px; }

View File

@ -1,46 +1,54 @@
(function() {
Volcanos(chat.ONIMPORT, { Volcanos(chat.ONIMPORT, {
_init: function(can, msg, cb) { if (can.isCmdMode()) { can.onappend.style(can, html.OUTPUT), can.ConfHeight(can.page.height()||912), can.ConfWidth(can.page.width()||1690) } _init: function(can, msg) { can.onmotion.clear(can), can.isCmdMode() && can.onappend.style(can, html.OUTPUT)
(!can.page.ClassList.has(can, document.body, cli.BLACK) || can.isCmdMode()) && can.onlayout.background(can, can.user.info.background||"/require/usr/icons/background.jpg", can._fields) can.onlayout.background(can, can.user.info.background||"/require/usr/icons/background.jpg", can._fields)
can.ui = {}, can.base.isFunc(cb) && cb(msg), can.onmotion.clear(can) can.onimport._menu(can), can.onimport._notifications(can), can.onimport._searchs(can), can.onimport._dock(can)
can.onimport._menu(can), can.onimport._dock(can), can.onimport._searchs(can), can.onimport._notifications(can), can.onimport.layout(can)
can.onkeymap._build(can)
}, },
_menu: function(can) { can.onappend.plugin(can, {index: "web.chat.macos.menu", style: html.OUTPUT, _space: can.Conf("_space")}, function(sub) { can.ui.menu = sub _menu: function(can) { can.onappend.plugin(can, {index: "web.chat.macos.menu", style: html.OUTPUT}, function(sub) { can.ui.menu = sub
sub.onexport.record = function(_, value, key, item) { delete(can.onfigure._path) sub.onexport.output = function() { can.onimport._desktop(can, can._msg)
can.Conf("session") && can.runActionCommand(event, "session", [can.Conf("session")], function(msg) {
var item = msg.TableDetail(); can.onimport.session(can, can.base.Obj(item.args))
})
}
sub.onexport.record = function(sub, value, key, item) { delete(can.onfigure._path)
switch (value) { switch (value) {
case "create": can.onaction.create(event, can); break case "create": can.onaction.create(event, can); break
case "desktop": var carte = can.user.carte(event, can, {}, can.core.Item(can.onfigure), function(event, button, meta, carte) { can.onfigure[button](event, can, carte) }); break case "desktop": var carte = can.user.carte(event, can, {}, can.core.Item(can.onfigure), function(event, button, meta, carte) { can.onfigure[button](event, can, carte) }); break
case "searchs": can.onaction._search(can); break
case "notifications": can.ui.notifications._output.innerHTML && can.onmotion.toggle(can, can.ui.notifications._target); break case "notifications": can.ui.notifications._output.innerHTML && can.onmotion.toggle(can, can.ui.notifications._target); break
case "searchs": can.onaction._search(can); break
default: can.onimport._window(can, value) default: can.onimport._window(can, value)
} }
} }
sub.onexport.output = function() { can.onimport._desktop(can, can._msg) }) },
can.Conf("session") && can.runActionCommand(event, "session", [can.Conf("session")], function(msg) { var item = msg.TableDetail() _notifications: function(can) { can.onappend.plugin(can, {index: "web.chat.macos.notifications", style: html.OUTPUT}, function(sub) { can.ui.notifications = sub
can.onimport.session(can, can.base.Obj(item.args)) sub.onaction._close = function() { can.onmotion.hidden(can, sub._target) }, can.onmotion.hidden(can, sub._target)
}) sub.onexport.record = function(sub, value, key, item) { can.onimport._window(can, item) }
}
}) }, }) },
_searchs: function(can) { can.onappend.plugin(can, {index: "web.chat.macos.searchs"}, function(sub) { can.ui.searchs = sub _searchs: function(can) { can.onappend.plugin(can, {index: "web.chat.macos.searchs"}, function(sub) { can.ui.searchs = sub
can.page.style(can, sub._target, html.LEFT, can.ConfWidth()/4, html.TOP, can.ConfHeight()/4), sub.onimport.size(sub, can.ConfHeight()/2, can.ConfWidth()/2, true) can.page.style(can, sub._target, html.LEFT, can.ConfWidth()/4, html.TOP, can.ConfHeight()/4), sub.onimport.size(sub, can.ConfHeight()/2, can.ConfWidth()/2, true)
sub.onexport.record = function(sub, value, key, item, event) { sub.onaction._close = function() { can.onmotion.hidden(can, sub._target) }, can.onmotion.hidden(can, sub._target)
if (item.cmd == ctx.COMMAND) { can.onimport._window(can, {index: can.core.Keys(item.type, item.name.split(lex.SP)[0])}) } sub.onexport.record = function(sub, value, key, item, event) { switch (item.type) {
if (item.type == nfs.FILE) { can.onimport._window(can, {index: web.CODE_VIMER, args: can.misc.SplitPath(can, item.text) }) } case ice.CMD: can.onimport._window(can, {index: item.name, args: can.base.Obj(item.text) }); break
if (item.type == ice.CMD) { can.onimport._window(can, {index: item.name, args: can.base.Obj(item.text) }) } case nfs.FILE: can.onimport._window(can, {index: web.CODE_VIMER, args: can.misc.SplitPath(can, item.text) }); break
if (can.base.isIn(item.type, web.LINK, web.WORKER, web.SERVER, web.GATEWAY)) { can.onimport._window(can, {index: web.CHAT_IFRAME, args: [item.text]}), can.onkeymap.prevent(event) } case ssh.SHELL: can.onimport._window(can, {index: web.CODE_XTERM, args: [item.text]}); break
if (item.type == ssh.SHELL) { can.onimport._window(can, {index: web.CODE_XTERM, args: [item.text]}) } case web.LINK:
}, can.ConfHeight() < 800 && can.onmotion.delay(can, function() { can.onmotion.hidden(can, sub._target) }) case web.WORKER:
sub.onaction._close = function() { can.onmotion.hidden(can, sub._target) } case web.SERVER:
can.onmotion.hidden(can, sub._target) case web.GATEWAY: can.onimport._window(can, {index: web.CHAT_IFRAME, args: [item.text]}), can.onkeymap.prevent(event); break
}) }, default: item.cmd == ctx.COMMAND && can.onimport._window(can, {index: can.core.Keys(item.type, item.name.split(lex.SP)[0])})
_notifications: function(can) { can.onappend.plugin(can, {index: "web.chat.macos.notifications", style: html.OUTPUT}, function(sub) { can.ui.notifications = sub } }
can.ConfHeight() < 800 && can.onmotion.delay(can, function() { can.onmotion.hidden(can, sub._target) }), can.onmotion.hidden(can, sub._target)
sub.onexport.record = function(sub, value, key, item) { can.onimport._window(can, item) }
}) }, }) },
_dock: function(can) { can.onappend.plugin(can, {index: "web.chat.macos.dock", style: html.OUTPUT}, function(sub) { can.ui.dock = sub _dock: function(can) { can.onappend.plugin(can, {index: "web.chat.macos.dock", style: html.OUTPUT}, function(sub) { can.ui.dock = sub
sub.onexport.output = function(sub, msg) { can.onimport.layout(can) } sub.onexport.output = function(sub, msg) { can.onimport.layout(can) }
sub.onexport.record = function(sub, value, key, item) { can.onimport._window(can, item) } sub.onexport.record = function(sub, value, key, item) { can.onimport._window(can, item) }
}) }, }) },
_desktop: function(can, msg, name) { var target = can.page.Append(can, can._output, [html.DESKTOP])._target; can.ui.desktop = target
target._tabs = can.onimport.tabs(can, [{name: name||"Desktop"+(can.page.Select(can, can._output, html.DIV_DESKTOP).length-1)}], function() {
can.onmotion.select(can, can._output, "div.desktop", target), can.ui.desktop = target
}, function() { can.page.Remove(can, target) }, can.ui.menu._output), target._tabs._desktop = target
target.ondragend = function() { can.onimport._item(can, window._drag_item) }
can.onimport.__item(can, msg, target)
},
_item: function(can, item) { can.runAction(can.request(event, item), mdb.CREATE, [], function() { can.run(event, [], function(msg) { _item: function(can, item) { can.runAction(can.request(event, item), mdb.CREATE, [], function() { can.run(event, [], function(msg) {
can.page.SelectChild(can, can.ui.desktop, html.DIV_ITEM, function(target) { can.page.Remove(can, target) }), can.onimport.__item(can, msg, can.ui.desktop) can.page.SelectChild(can, can.ui.desktop, html.DIV_ITEM, function(target) { can.page.Remove(can, target) }), can.onimport.__item(can, msg, can.ui.desktop)
}) }) }, }) }) },
@ -50,15 +58,10 @@ Volcanos(chat.ONIMPORT, {
remove: function() { can.runAction(event, mdb.REMOVE, [item.hash]) }, remove: function() { can.runAction(event, mdb.REMOVE, [item.hash]) },
}); can.page.style(can, carte._target, html.TOP, event.y) }, }); can.page.style(can, carte._target, html.TOP, event.y) },
}) }) }, }) }) },
_desktop: function(can, msg, name) { var target = can.page.Append(can, can._output, [{view: html.DESKTOP}])._target; can.onimport.__item(can, msg, target), can.ui.desktop = target _window: function(can, item) { if (!item.index) { return } item._space = can.ConfSpace()
target._tabs = can.onimport.tabs(can, [{name: name||"Desktop"+(can.page.Select(can, can._output, html.DIV_DESKTOP).length-1)}], function() { can.onmotion.select(can, can._output, "div.desktop", target), can.ui.desktop = target }, function() { can.page.Remove(can, target) }, can.ui.menu._output), target._tabs._desktop = target
target.ondragend = function() { can.onimport._item(can, window._drag_item) }
},
_window: function(can, item) { if (!item.index) { return }
item.left = 100, item.top = 125, item.height = can.base.Min(can.ConfHeight()-345, 480, 800), item.width = can.base.Min(can.ConfWidth()-360, 640, 1200) item.left = 100, item.top = 125, item.height = can.base.Min(can.ConfHeight()-345, 480, 800), item.width = can.base.Min(can.ConfWidth()-360, 640, 1200)
if (can.ConfHeight() < 800) { item.top = 25, item.height = can.ConfHeight()-125, item.width = can.ConfWidth()-110 } if (can.ConfHeight() < 800) { item.top = 25, item.height = can.ConfHeight()-125, item.width = can.ConfWidth()-110 }
if (can.user.isMobile) { item.left = 0, item.top = 25, item.height = can.ConfHeight()-125, item.width = can.ConfWidth() } if (can.user.isMobile) { item.left = 0, item.top = 25, item.height = can.ConfHeight()-125, item.width = can.ConfWidth() }
item._space = can.ConfSpace()
can.onappend.plugin(can, item, function(sub) { can.ondetail.select(can, sub._target) can.onappend.plugin(can, item, function(sub) { can.ondetail.select(can, sub._target)
var index = 0; can.core.Item({ var index = 0; can.core.Item({
"#f95f57": function(event) { sub.onaction._close(event, sub) }, "#f95f57": function(event) { sub.onaction._close(event, sub) },
@ -66,56 +69,57 @@ Volcanos(chat.ONIMPORT, {
can.onmotion.toggle(can, sub._target, true), can.page.Remove(can, dock) can.onmotion.toggle(can, sub._target, true), can.page.Remove(can, dock)
}}])._target; sub.onmotion.hidden(sub, sub._target) }, }}])._target; sub.onmotion.hidden(sub, sub._target) },
"#32c840": function(event) { sub.onaction.full(event, sub) }, "#32c840": function(event) { sub.onaction.full(event, sub) },
}, function(color, cb) { can.page.insertBefore(can, [{view: [[html.ITEM, html.BUTTON]], style: {"background-color": color, right: 10+20*index++}, onclick: cb}], sub._output) }) }, function(color, cb) {
sub.onappend.desktop = function(item) { can.onimport._item(can, item) } can.page.insertBefore(can, [{view: [[html.ITEM, html.BUTTON]], style: {"background-color": color, right: 10+20*index++}, onclick: cb}], sub._output)
sub.onappend.dock = function(item) { can.ui.dock.runAction(can.request(event, item), mdb.CREATE, [], function() { can.ui.dock.Update() }) } })
sub.onimport._open = function(sub, msg, arg) { can.onimport._window(can, {index: web.CHAT_IFRAME, args: [arg]}) }
sub.onexport.output = function() {
if (item.index == "web.chat.macos.opens") { can.page.Remove(can, sub._target) }
sub.onimport.size(sub, item.height, can.base.Min(item.width, sub._target.offsetWidth), true)
}, sub.onimport.size(sub, item.height, can.base.Min(item.width, sub._target.offsetWidth), true)
sub.onexport.record = function(sub, value, key, item) { can.onimport._window(can, item) }
sub.onexport.marginTop = function() { return 25 } sub.onexport.marginTop = function() { return 25 }
sub.onexport.marginBottom = function() { return 100 } sub.onexport.marginBottom = function() { return 100 }
sub.onexport.actionHeight = function(sub) { return can.page.ClassList.has(can, sub._target, html.OUTPUT)? 0: html.ACTION_HEIGHT+20 }, sub.onexport.actionHeight = function(sub) { return can.page.ClassList.has(can, sub._target, html.OUTPUT)? 0: html.ACTION_HEIGHT+20 }
can.onmotion.move(can, sub._target, {"z-index": 10, top: item.top, left: item.left}), sub.onmotion.resize(can, sub._target, function(height, width) { sub.onexport.output = function() { item.index == "web.chat.macos.opens" && can.page.Remove(can, sub._target)
sub.onimport.size(sub, item.height = height, item.width = width) sub.onimport.size(sub, item.height, can.base.Min(sub._target.offsetWidth, item.width), true)
}, 25) }, sub.onimport.size(sub, item.height, can.base.Min(sub._target.offsetWidth, item.width), true)
sub._target.onclick = function(event) { can.ondetail.select(can, sub._target) } sub.onexport.record = function(sub, value, key, item) { can.onimport._window(can, item) }
sub.onimport._open = function(sub, msg, arg) { can.onimport._window(can, {index: web.CHAT_IFRAME, args: [arg]}) }
sub.onappend.desktop = function(item) { can.onimport._item(can, item) }
sub.onappend.dock = function(item) { can.ui.dock.runAction(can.request(event, item), mdb.CREATE, [], function() { can.ui.dock.Update() }) }
can.onmotion.move(can, sub._target, {top: item.top, left: item.left})
sub.onmotion.resize(can, sub._target, function(height, width) { sub.onimport.size(sub, item.height = height, item.width = width) }, 25)
sub._target.onclick = function(event) {
can.ondetail.select(can, sub._target)
}
}, can.ui.desktop) }, can.ui.desktop)
}, },
session: function(can, list) { can.page.Select(can, can._output, html.DIV_DESKTOP, function(target) { can.page.Remove(can, target) }) session: function(can, list) { can.page.Select(can, can._output, html.DIV_DESKTOP, function(target) { can.page.Remove(can, target) })
can.page.Select(can, can.ui.menu._output, html.DIV_TABS, function(target) { can.page.Remove(can, target) }) can.page.Select(can, can.ui.menu._output, html.DIV_TABS, function(target) { can.page.Remove(can, target) })
can.core.List(list, function(item) { can.onimport._desktop(can, null, item.name), can.core.List(item.list, function(item) { can.onimport._window(can, item) }) }) can.core.List(list, function(item) { can.onimport._desktop(can, null, item.name), can.core.List(item.list, function(item) { can.onimport._window(can, item) }) })
}, },
layout: function(can) { layout: function(can) { can.page.style(can, can._output, html.HEIGHT, can.ConfHeight(), html.WIDTH, can.ConfWidth())
can.page.style(can, can._output, html.HEIGHT, can.ConfHeight(), html.WIDTH, can.ConfWidth()) can.ui.notifications && can.page.style(can, can.ui.notifications._target, html.LEFT, can.ConfWidth()-250)
can.ui.dock && can.page.style(can, can.ui.dock._target, html.LEFT, can.base.Min((can.ConfWidth()-(can.ui.dock._target.offsetWidth||502))/2, 0)) can.ui.dock && can.page.style(can, can.ui.dock._target, html.LEFT, can.base.Min((can.ConfWidth()-(can.ui.dock._target.offsetWidth||502))/2, 0))
}, },
}, [""]) }, [""])
Volcanos(chat.ONACTION, {list: ["full"], Volcanos(chat.ONACTION, {list: ["full"],
_search: function(can) { _search: function(can) { if (can.onmotion.toggle(can, can.ui.searchs._target)) {
if (can.onmotion.toggle(can, can.ui.searchs._target)) {
can.page.Select(can, can.ui.searchs._option, "input[name=keyword]", function(target) { can.onmotion.focus(can, target) }) can.page.Select(can, can.ui.searchs._option, "input[name=keyword]", function(target) { can.onmotion.focus(can, target) })
} } },
},
create: function(event, can, button) { can.onimport._desktop(can) }, create: function(event, can, button) { can.onimport._desktop(can) },
full: function(event, can) { document.body.requestFullscreen() }, full: function(event, can) { document.body.requestFullscreen() },
onkeydown: function(event, can) { })
can.db._key_list = can.onkeymap._parse(event, can, mdb.PLUGIN, can.db._key_list, can.ui.content) Volcanos(chat.ONDETAIL, {
}, select: function(can, target) { can.onmotion.select(can, can.ui.desktop, html.FIELDSET, target) },
})
Volcanos(chat.ONEXPORT, {
position: function(can, index) { var top = 25, margin = 20, height = 100, width = 80
var n = parseInt((can.ConfHeight()-top)/(height+margin))
return {top: index%n*height+top+margin/2, left: parseInt(index/n)*(width+margin)+margin/2}
}
}) })
Volcanos(chat.ONKEYMAP, { Volcanos(chat.ONKEYMAP, {
_mode: {plugin: { _mode: {plugin: {
" ": function(event, can) { can.onkeymap.prevent(event), can.onaction._search(can) }, " ": function(event, can) { can.onaction._search(can), can.onkeymap.prevent(event) },
"Escape": function(event, can) { can.onmotion.hidden(can, can.ui.searchs._target) }, "Escape": function(event, can) { can.onmotion.hidden(can, can.ui.searchs._target) },
}}, _engine: {}, }}, _engine: {},
}) })
Volcanos(chat.ONDETAIL, {
select: function(can, target) { can.page.SelectChild(can, can.ui.desktop, html.FIELDSET, function(fieldset) {
can.page.style(can, fieldset, "z-index", fieldset == target? "10": "9"), fieldset == target && can.onmotion.toggle(can, fieldset, true)
}) },
})
Volcanos(chat.ONFIGURE, { Volcanos(chat.ONFIGURE, {
"session\t>": function(event, can, carte) { can.runActionCommand(event, "session", [], function(msg) { "session\t>": function(event, can, carte) { can.runActionCommand(event, "session", [], function(msg) {
var _carte = can.user.carteRight(event, can, {}, [{view: [html.ITEM, "", mdb.CREATE], onclick: function(event) { var _carte = can.user.carteRight(event, can, {}, [{view: [html.ITEM, "", mdb.CREATE], onclick: function(event) {
@ -175,9 +179,4 @@ Volcanos(chat.ONFIGURE, {
}, [], function(event) {}, carte) }, [], function(event) {}, carte)
}, },
}) })
Volcanos(chat.ONEXPORT, { })()
position: function(can, index) { var top = 25, margin = 20, height = 100, width = 80
var n = parseInt((can.ConfHeight()-top)/(height+margin))
return {top: index%n*height+top+margin/2, left: parseInt(index/n)*(width+margin)+margin/2}
}
})

View File

@ -1,19 +1,8 @@
Volcanos(chat.ONIMPORT, {_init: function(can, msg) { can.onmotion.clear(can) Volcanos(chat.ONIMPORT, {_init: function(can, msg) { can.onmotion.clear(can), can.page.style(can, can._output, html.MAX_WIDTH, can.page.width())
can.onimport.icon(can, msg = msg||can._msg, can._output, function(target, item) { can.page.Modify(can, target, { can.onimport.icon(can, msg = msg||can._msg, can._output, function(target, item) { can.page.Modify(can, target, {
onclick: function(event) { can.sup.onexport.record(can, item.name, mdb.NAME, item) }, onclick: function(event) { can.sup.onexport.record(can, item.name, mdb.NAME, item) },
oncontextmenu: function(event) { var carte = can.user.carte(event, can, { oncontextmenu: function(event) { var carte = can.user.carte(event, can, {
remove: function() { item.name != "Finder" && can.runAction(event, mdb.REMOVE, [item.hash]) }, remove: function() { item.name != "Finder" && can.runAction(event, mdb.REMOVE, [item.hash]) },
}); can.page.style(can, carte._target, html.LEFT, event.x) }, }); can.page.style(can, carte._target, html.LEFT, event.x) },
}) }), can.page.Append(can, can._output, [{view: "space"}]) }) }), can.page.Append(can, can._output, [{view: "space"}])
can.page.style(can, can._output, html.MAX_WIDTH, can.page.width())
return
var current = null, before, begin
can.page.SelectChild(can, can._output, mdb.FOREACH, function(target) { target.draggable = true
target.ondragstart = function() { current = target, can.page.style(can, target, "visibility", html.HIDDEN) }
target.ondragenter = function(event) { before = target, begin = {x: event.x, y: event.y} }
target.ondragover = function(event) { var offset = event.x - begin.x; can.page.style(can, target, {position: "relative", left: -offset}) }
target.ondragend = function(event) { before && can.page.insertBefore(can, current, before)
can.page.SelectChild(can, can._output, mdb.FOREACH, function(target) { can.page.style(can, target, {position: "", left: "", visibility: html.VISIBLE}) })
}
})
}}) }})

View File

@ -7,21 +7,16 @@ Volcanos(chat.ONIMPORT, { _init: function(can, msg) { can.onmotion.clear(can), c
} can.onimport.layout(can) } can.onimport.layout(can)
}) })
}); index == 0 && item.click() }); index == 0 && item.click()
}), can.onmotion.hidden(can, can.ui.profile), can.onmotion.hidden(can, can.ui.display), can.onmotion.hidden(can, can.ui.project) }, }), can.onmotion.hidden(can, can.ui.project) },
icons: function(can, msg, target) { can.onimport.icon(can, msg = msg||can._msg, target, function(target, item) { can.page.Modify(can, target, { icons: function(can, msg, target) { can.onimport.icon(can, msg = msg||can._msg, target, function(target, item) { can.page.Modify(can, target, {
onclick: function(event) { onclick: function(event) { can.sup.onexport.record(can.sup, item.name, mdb.NAME, item) },
can.sup.onexport.record(can.sup, item.name, mdb.NAME, item) oncontextmenu: function(event) { can.user.carteRight(event, can, {
}, oncontextmenu: function(event) { can.user.carteRight(event, can, {
"add to desktop": function() { can.sup.onappend.desktop(item) }, "add to desktop": function() { can.sup.onappend.desktop(item) },
"add to dock": function() { can.sup.onappend.dock(item) }, "add to dock": function() { can.sup.onappend.dock(item) },
}, []) }, draggable: true, ondragstart: function(event) { window._drag_item = item }, }, []) }, draggable: true, ondragstart: function(event) { window._drag_item = item },
})}) }, })}) },
layout: function(can) { layout: function(can) { can.ui.layout(can.ConfHeight(), can.ConfWidth())
var width = can.ConfWidth()-(can.ui? can.ui.project.offsetWidth: 0) var width = can.ConfWidth()-(can.ui? can.ui.project.offsetWidth: 0), margin = width%80/parseInt(width/80)/2
var margin = width%80/parseInt(width/80)/2 can.page.SelectChild(can, can.ui.content, mdb.FOREACH, function(target) { can.page.style(can, target, html.MARGIN, margin) })
can.page.SelectChild(can, can.ui.content, mdb.FOREACH, function(target) {
can.page.style(can, target, html.MARGIN, margin)
})
can.ui.layout(can.ConfHeight(), can.ConfWidth())
}, },
}) })