mirror of
https://github.com/lxsang/antos-frontend.git
synced 2025-07-19 15:29:51 +02:00
vfs (contd.)
This commit is contained in:
@ -1,11 +1,16 @@
|
||||
class BaseApplication extends this.OS.GUI.BaseModel
|
||||
constructor: (name, args) ->
|
||||
super name, args
|
||||
|
||||
_OS.setting.applications[@name] = {} if not _OS.setting.applications[@name]
|
||||
@setting = _OS.setting.applications[@name]
|
||||
|
||||
init: ->
|
||||
me = @
|
||||
# first register some base event to the app
|
||||
|
||||
@subscribe "appregistry"
|
||||
, ( m ) ->
|
||||
me.applySetting m.data.m if (m.name is me.name)
|
||||
|
||||
@on "focus", () ->
|
||||
me.sysdock.set "selectedApp", me
|
||||
me.appmenu.pid = me.pid
|
||||
@ -25,6 +30,11 @@ class BaseApplication extends this.OS.GUI.BaseModel
|
||||
path = "packages/#{@name}/scheme.html"
|
||||
@.render path
|
||||
|
||||
applySetting: (k) ->
|
||||
registry: (k, v) ->
|
||||
@setting[k] = v
|
||||
@publish "appregistry", k
|
||||
|
||||
show: () ->
|
||||
@trigger "focus"
|
||||
|
||||
|
@ -5,16 +5,7 @@ class BaseModel
|
||||
me = @
|
||||
@on "exit", () -> me.quit()
|
||||
@host = "#desktop"
|
||||
_OS.setting.applications[@name] = {} if not _OS.setting.applications[@name]
|
||||
@setting = _OS.setting.applications[@name]
|
||||
@dialog = undefined
|
||||
@subscribe "appregistry"
|
||||
, ( m ) ->
|
||||
me.applySetting m.data.m if (m.name is me.name)
|
||||
|
||||
registry: (k, v) ->
|
||||
@setting[k] = v
|
||||
@publish "appregistry", k
|
||||
|
||||
render: (p) ->
|
||||
_GUI.loadScheme p, @, @host
|
||||
@ -31,7 +22,7 @@ class BaseModel
|
||||
#implement by sub class
|
||||
onexit: (e) ->
|
||||
#implement by subclass
|
||||
applySetting: (k) ->
|
||||
|
||||
one: (e, f) -> @observable.one e, f
|
||||
on: (e, f) -> @observable.on e, f
|
||||
|
||||
@ -65,7 +56,7 @@ class BaseModel
|
||||
@publish "warning", m
|
||||
|
||||
error: (m) ->
|
||||
@publish "error", m
|
||||
@publish "error", m + (@_api.throwe @name)
|
||||
|
||||
fail: (m) ->
|
||||
@publish "fail", m
|
||||
|
@ -3,6 +3,10 @@ self.OS.API.handler =
|
||||
path = "lua-api/fs/scandir"
|
||||
_API.post path, { path: p }, c, (e, s) ->
|
||||
_courrier.osfail "Fail to scan directory: #{p}", e, s
|
||||
mkdir: (p, c ) ->
|
||||
path = "lua-api/fs/mkdir"
|
||||
_API.post path, { path: p }, c, (e, s) ->
|
||||
_courrier.osfail "Fail to create directory: #{p}", e, s
|
||||
|
||||
fileinfo: (p, c) ->
|
||||
path = "lua-api/fs/fileinfo"
|
||||
|
@ -70,7 +70,7 @@
|
||||
var rows = []
|
||||
$.each(self.data, function(i,v){
|
||||
if(v.filename[0] == '.' && !self.showhidden) return
|
||||
var row = [{value:v.filename, iconclass: v.type},{value:v.mime},{value:v.size}]
|
||||
var row = [{value:v.filename, iconclass: v.type},{value:v.mime},{value:v.size},{idx:i}]
|
||||
rows.push(row)
|
||||
})
|
||||
self.refs.gridview.root.set("rows",rows)
|
||||
@ -156,7 +156,7 @@
|
||||
self.refs.gridview.root.observable = self.root.observable
|
||||
self.refs.gridview.ongridselect = function(d)
|
||||
{
|
||||
var data = {id:self.rid, data:self.data[d.data.i], idx:d.data.i}
|
||||
var data = {id:self.rid, data:self.data[d.data.child[3].idx], idx:d.data.child[3].idx}
|
||||
self.root.observable.trigger("fileselect",data)
|
||||
}
|
||||
self.refs.gridview.ongriddbclick = function(d)
|
||||
|
@ -37,7 +37,7 @@ class BasicFileHandler
|
||||
|
||||
parent: () ->
|
||||
return @ if @isRoot()
|
||||
(@protocol + ":///" + (@genealogy.slice 0 , @genealogy.length - 1).join "/").asFileHandler()
|
||||
return (@protocol + ":///" + (@genealogy.slice 0 , @genealogy.length - 1).join "/")
|
||||
|
||||
onready: (f) ->
|
||||
# read meta data
|
||||
@ -49,25 +49,37 @@ class BasicFileHandler
|
||||
me.ready = true
|
||||
f()
|
||||
|
||||
#public interface for all action on file
|
||||
do: (a, f) ->
|
||||
return _courrier.osfail "VFS unknown action: #{a}", (_API.throwe "OS.VFS"), a if not @[a]
|
||||
me = @
|
||||
@onready (() -> me[a] f)
|
||||
|
||||
|
||||
# methods implemented by subclasses used as private methods
|
||||
meta: (f) ->
|
||||
|
||||
read: (f) ->
|
||||
me = @
|
||||
@onready (() -> me.action "read", null, f)
|
||||
|
||||
write: (f) ->
|
||||
|
||||
write: (d, f) ->
|
||||
@action "write", d, f
|
||||
|
||||
mk: (d, f) ->
|
||||
me = @
|
||||
@onready (() -> me.action "mk", d, f)
|
||||
|
||||
remove: (f) ->
|
||||
me = @
|
||||
@onready (() -> me.action "remove", null, f)
|
||||
|
||||
move: (d, f) ->
|
||||
me = @
|
||||
@onready (() -> me action "move", d, f)
|
||||
|
||||
execute: (f) ->
|
||||
|
||||
mk: (f) ->
|
||||
me = @
|
||||
@onready (() -> me.action "execute", null, f)
|
||||
|
||||
#mk: (f) ->
|
||||
|
||||
meta: (f) ->
|
||||
|
||||
# for main action read, write, remove, execute
|
||||
# must be implemented by subclasses
|
||||
action: (n, p, f) ->
|
||||
return _courrier.osfail "VFS unknown action: #{n}", (_API.throwe "OS.VFS"), n
|
||||
|
||||
# now export the class
|
||||
self.OS.API.VFS.BasicFileHandler = BasicFileHandler
|
||||
@ -80,10 +92,17 @@ class RemoteFileHandler extends self.OS.API.VFS.BasicFileHandler
|
||||
meta: (f) ->
|
||||
_API.handler.fileinfo @path, f
|
||||
|
||||
read: (f) ->
|
||||
return _API.handler.scandir @path, f if @meta.type is "dir"
|
||||
#read the file
|
||||
_API.handler.readfile @path, f
|
||||
action: (n, p, f) ->
|
||||
switch n
|
||||
when "read"
|
||||
return _API.handler.scandir @path, f if @meta.type is "dir"
|
||||
#read the file
|
||||
_API.handler.readfile @path, f
|
||||
when "mk"
|
||||
return f { error: "#{@path} is not a directory" } if @meta.type is "file"
|
||||
_API.handler.mkdir "#{@path}/#{p}", f
|
||||
else
|
||||
return _courrier.osfail "VFS unknown action: #{n}", (_API.throwe "OS.VFS"), n
|
||||
|
||||
self.OS.API.VFS.RemoteFileHandler = RemoteFileHandler
|
||||
|
||||
|
Reference in New Issue
Block a user