mirror of
https://github.com/lxsang/antos-frontend.git
synced 2025-07-19 15:29:51 +02:00
use fat arrow for this reference
This commit is contained in:
@ -35,30 +35,28 @@ class Announcer
|
||||
@observable[evtName].one.add callback
|
||||
|
||||
off: (evtName, callback) ->
|
||||
me = @
|
||||
fn = (evt, cb) ->
|
||||
return unless me.observable[evt]
|
||||
fn = (evt, cb) =>
|
||||
return unless @observable[evt]
|
||||
if cb
|
||||
me.observable[evt].one.delete(cb)
|
||||
me.observable[evt].many.delete(cb)
|
||||
@observable[evt].one.delete(cb)
|
||||
@observable[evt].many.delete(cb)
|
||||
else
|
||||
delete me.observable[evt] if me.observable[evt]
|
||||
if evtName is "*" then fn k, callback for k, v of me.observable else fn evtName, callback
|
||||
delete @observable[evt] if @observable[evt]
|
||||
if evtName is "*" then fn k, callback for k, v of @observable else fn evtName, callback
|
||||
|
||||
trigger: (evtName, data) ->
|
||||
me = @
|
||||
trig = (name, d) ->
|
||||
trig = (name, d) =>
|
||||
names = [name, "*"]
|
||||
for evt in names
|
||||
continue unless me.observable[evt]
|
||||
me.observable[evt].one.forEach (f) ->
|
||||
continue unless @observable[evt]
|
||||
@observable[evt].one.forEach (f) ->
|
||||
f d
|
||||
me.observable[evt].one = new Set()
|
||||
me.observable[evt].many.forEach (f) ->
|
||||
@observable[evt].one = new Set()
|
||||
@observable[evt].many.forEach (f) ->
|
||||
f d
|
||||
|
||||
if evtName is "*"
|
||||
trig k, data for k, v of me.observable when k isnt "*"
|
||||
trig k, data for k, v of @observable when k isnt "*"
|
||||
else
|
||||
trig evtName, data
|
||||
|
||||
|
@ -26,28 +26,26 @@ class BaseApplication extends this.OS.GUI.BaseModel
|
||||
CTRL: {}
|
||||
SHIFT: {}
|
||||
META: {}
|
||||
me = @
|
||||
init: ->
|
||||
me = @
|
||||
@off "*"
|
||||
@on "exit", () -> me.quit()
|
||||
@on "exit", () => @quit()
|
||||
# first register some base event to the app
|
||||
@on "focus", () ->
|
||||
me.sysdock.set "selectedApp", me
|
||||
me.appmenu.pid = me.pid
|
||||
me.appmenu.set "items", (me.baseMenu() || [])
|
||||
me.appmenu.set "onmenuselect", (d) ->
|
||||
me.trigger("menuselect", d)
|
||||
me.dialog.show() if me.dialog
|
||||
@on "hide", () ->
|
||||
me.sysdock.set "selectedApp", null
|
||||
me.appmenu.set "items", []
|
||||
me.dialog.hide() if me.dialog
|
||||
@on "menuselect", (d) ->
|
||||
@on "focus", () =>
|
||||
@sysdock.set "selectedApp", @
|
||||
@appmenu.pid = @pid
|
||||
@appmenu.set "items", (@baseMenu() || [])
|
||||
@appmenu.set "onmenuselect", (d) =>
|
||||
@trigger("menuselect", d)
|
||||
@dialog.show() if @dialog
|
||||
@on "hide", () =>
|
||||
@sysdock.set "selectedApp", null
|
||||
@appmenu.set "items", []
|
||||
@dialog.hide() if @dialog
|
||||
@on "menuselect", (d) =>
|
||||
switch d.data.item.get("data").dataid
|
||||
when "#{me.name}-about" then me.openDialog "AboutDialog", ()->
|
||||
when "#{me.name}-exit" then me.trigger "exit"
|
||||
@on "apptitlechange", () -> me.sysdock.update()
|
||||
when "#{@name}-about" then @openDialog "AboutDialog"
|
||||
when "#{@name}-exit" then @trigger "exit"
|
||||
@on "apptitlechange", () => @sysdock.update()
|
||||
@loadScheme()
|
||||
|
||||
loadScheme: () ->
|
||||
|
@ -74,16 +74,15 @@ class PromptDialog extends BasicDialog
|
||||
|
||||
init: () ->
|
||||
super.init()
|
||||
me = @
|
||||
@find("lbl").set "text", @data.label if @data and @data.label
|
||||
$(@find "txtInput").val @data.value if @data and @data.value
|
||||
|
||||
(@find "btnOk").set "onbtclick", (e) ->
|
||||
me.handle($(me.find "txtInput").val()) if me.handle
|
||||
me.quit()
|
||||
(@find "btnOk").set "onbtclick", (e) =>
|
||||
@handle($(@find "txtInput").val()) if @handle
|
||||
@quit()
|
||||
|
||||
(@find "btnCancel").set "onbtclick", (e) ->
|
||||
me.quit()
|
||||
(@find "btnCancel").set "onbtclick", (e) =>
|
||||
@quit()
|
||||
|
||||
|
||||
PromptDialog.scheme = """
|
||||
@ -115,15 +114,14 @@ class CalendarDialog extends BasicDialog
|
||||
|
||||
init: () ->
|
||||
super.init()
|
||||
me = @
|
||||
(@find "btnOk").set "onbtclick", (e) ->
|
||||
date = (me.find "cal").get "selectedDate"
|
||||
return me.notify __("Please select a day") unless date
|
||||
me.handle(date) if me.handle
|
||||
me.quit()
|
||||
(@find "btnOk").set "onbtclick", (e) =>
|
||||
date = (@find "cal").get "selectedDate"
|
||||
return @notify __("Please select a day") unless date
|
||||
@handle(date) if @handle
|
||||
@quit()
|
||||
|
||||
(@find "btnCancel").set "onbtclick", (e) ->
|
||||
me.quit()
|
||||
(@find "btnCancel").set "onbtclick", (e) =>
|
||||
@quit()
|
||||
|
||||
CalendarDialog.scheme = """
|
||||
<afx-app-window width='300' height='230' apptitle = "Calendar" >
|
||||
@ -155,15 +153,14 @@ class ColorPickerDialog extends BasicDialog
|
||||
|
||||
init: () ->
|
||||
super.init()
|
||||
me = @
|
||||
(@find "btnOk").set "onbtclick", (e) ->
|
||||
color = (me.find "cpicker").get "selectedColor"
|
||||
return me.notify __("Please select color") unless color
|
||||
me.handle(color) if me.handle
|
||||
me.quit()
|
||||
(@find "btnOk").set "onbtclick", (e) =>
|
||||
color = (@find "cpicker").get "selectedColor"
|
||||
return @notify __("Please select color") unless color
|
||||
@handle(color) if @handle
|
||||
@quit()
|
||||
|
||||
(@find "btnCancel").set "onbtclick", (e) ->
|
||||
me.quit()
|
||||
(@find "btnCancel").set "onbtclick", (e) =>
|
||||
@quit()
|
||||
|
||||
ColorPickerDialog.scheme = """
|
||||
<afx-app-window width='320' height='250' apptitle = "Color picker" >
|
||||
@ -195,14 +192,13 @@ class InfoDialog extends BasicDialog
|
||||
|
||||
init: () ->
|
||||
super.init()
|
||||
me = @
|
||||
rows = []
|
||||
delete @data.title if @data and @data.title
|
||||
rows.push [ { text: k }, { text: v } ] for k, v of @data
|
||||
(@find "grid").set "header", [ { text: __("Name"), width: 70 }, { text: __("Value") } ]
|
||||
(@find "grid").set "rows", rows
|
||||
(@find "btnCancel").set "onbtclick", (e) ->
|
||||
me.quit()
|
||||
(@find "btnCancel").set "onbtclick", (e) =>
|
||||
@quit()
|
||||
|
||||
InfoDialog.scheme = """
|
||||
<afx-app-window width='250' height='300' apptitle = "Info" >
|
||||
@ -234,14 +230,13 @@ class YesNoDialog extends BasicDialog
|
||||
|
||||
init: () ->
|
||||
super.init()
|
||||
me = @
|
||||
@find("lbl").set "*", @data if @data
|
||||
(@find "btnYes").set "onbtclick", (e) ->
|
||||
me.handle(true) if me.handle
|
||||
me.quit()
|
||||
(@find "btnNo").set "onbtclick", (e) ->
|
||||
me.handle(false) if me.handle
|
||||
me.quit()
|
||||
(@find "btnYes").set "onbtclick", (e) =>
|
||||
@handle(true) if @handle
|
||||
@quit()
|
||||
(@find "btnNo").set "onbtclick", (e) =>
|
||||
@handle(false) if @handle
|
||||
@quit()
|
||||
|
||||
YesNoDialog.scheme = """
|
||||
<afx-app-window width='200' height='150' apptitle = "Prompt">
|
||||
@ -271,18 +266,17 @@ class SelectionDialog extends BasicDialog
|
||||
|
||||
init: () ->
|
||||
super.init()
|
||||
me = @
|
||||
(@find "list").set "data", @data.data if @data and @data.data
|
||||
fn = (e) ->
|
||||
data = (me.find "list").get "selectedItem"
|
||||
return me.notify __("Please select an item") unless data
|
||||
me.handle(data.get("data")) if me.handle
|
||||
me.quit()
|
||||
fn = (e) =>
|
||||
data = (@find "list").get "selectedItem"
|
||||
return @notify __("Please select an item") unless data
|
||||
@handle(data.get("data")) if @handle
|
||||
@quit()
|
||||
(@find "list").set "onlistdbclick", fn
|
||||
(@find "btnOk").set "onbtclick", fn
|
||||
|
||||
(@find "btnCancel").set "onbtclick", (e) ->
|
||||
me.quit()
|
||||
(@find "btnCancel").set "onbtclick", (e) =>
|
||||
@quit()
|
||||
|
||||
SelectionDialog.scheme = """
|
||||
<afx-app-window width='250' height='300' apptitle = "Selection">
|
||||
@ -312,7 +306,6 @@ class AboutDialog extends BasicDialog
|
||||
|
||||
init: () ->
|
||||
mt = @meta()
|
||||
me = @
|
||||
@scheme.set "apptitle", __("About: {0}", mt.name)
|
||||
(@find "mylabel").set "*", {
|
||||
icon: mt.icon,
|
||||
@ -326,8 +319,8 @@ class AboutDialog extends BasicDialog
|
||||
rows.push [ { text: k }, { text: v } ] for k, v of mt.info
|
||||
(@find "mygrid").set "header", [ { text: "", width: 100 }, { text: "" } ]
|
||||
(@find "mygrid").set "rows", rows
|
||||
(@find "btnCancel").set "onbtclick", (e) ->
|
||||
me.quit()
|
||||
(@find "btnCancel").set "onbtclick", (e) =>
|
||||
@quit()
|
||||
|
||||
AboutDialog.scheme = """
|
||||
<afx-app-window data-id = 'about-window' width='300' height='200'>
|
||||
@ -338,7 +331,11 @@ AboutDialog.scheme = """
|
||||
</h3>
|
||||
<i><p style = "margin:0; padding:0" data-id = 'mydesc'></p></i>
|
||||
</div>
|
||||
<afx-grid-view data-id = 'mygrid'></afx-grid-view>
|
||||
<afx-hbox>
|
||||
<div data-width="10"></div>
|
||||
<afx-grid-view data-id = 'mygrid'></afx-grid-view>
|
||||
</afx-hbox>
|
||||
|
||||
<afx-hbox data-height="30">
|
||||
<div />
|
||||
<afx-button data-id = "btnCancel" text = "__(Cancel)" data-width = "60" />
|
||||
@ -358,7 +355,6 @@ class FileDialog extends BasicDialog
|
||||
fileview = @find "fileview"
|
||||
location = @find "location"
|
||||
filename = @find "filename"
|
||||
me = @
|
||||
fileview.set "fetch", (path) ->
|
||||
new Promise (resolve, reject) ->
|
||||
return resolve() unless path
|
||||
@ -367,10 +363,10 @@ class FileDialog extends BasicDialog
|
||||
return reject d if d.error
|
||||
resolve d.result
|
||||
.catch (e) -> reject e
|
||||
setroot = (path) ->
|
||||
path.asFileHandle().read().then (d) ->
|
||||
setroot = (path) =>
|
||||
path.asFileHandle().read().then (d) =>
|
||||
if(d.error)
|
||||
return me.error __("Resource not found: {0}", path)
|
||||
return @error __("Resource not found: {0}", path)
|
||||
fileview.set "path", path
|
||||
|
||||
if not @data or not @data.root
|
||||
@ -385,27 +381,27 @@ class FileDialog extends BasicDialog
|
||||
setroot @data.root
|
||||
fileview.set "onfileselect", (e) ->
|
||||
($ filename).val e.data.filename if e.data.type is "file"
|
||||
(@find "bt-ok").set "onbtclick", (e) ->
|
||||
(@find "bt-ok").set "onbtclick", (e) =>
|
||||
f = fileview.get "selectedFile"
|
||||
return me.notify __("Please select a file/fofler") unless f
|
||||
if me.data and me.data.type and me.data.type isnt f.type
|
||||
return me.notify __("Please select {0} only", me.data.type)
|
||||
if me.data and me.data.mimes
|
||||
return @notify __("Please select a file/fofler") unless f
|
||||
if @data and @data.type and @data.type isnt f.type
|
||||
return @notify __("Please select {0} only", @data.type)
|
||||
if @data and @data.mimes
|
||||
#verify the mime
|
||||
m = false
|
||||
if f.mime
|
||||
for v in me.data.mimes
|
||||
for v in @data.mimes
|
||||
if f.mime.match (new RegExp v, "g")
|
||||
m = true
|
||||
break
|
||||
return me.notify __("Only {0} could be selected", me.data.mimes.join(",")) unless m
|
||||
return @notify __("Only {0} could be selected", @data.mimes.join(",")) unless m
|
||||
|
||||
name = $(filename).val()
|
||||
me.handle { file: f, name: name } if me.handle
|
||||
me.quit()
|
||||
@handle { file: f, name: name } if @handle
|
||||
@quit()
|
||||
|
||||
(@find "bt-cancel").set "onbtclick", (e) ->
|
||||
me.quit()
|
||||
(@find "bt-cancel").set "onbtclick", (e) =>
|
||||
@quit()
|
||||
if @data and @data.file
|
||||
($ filename).css("display", "block").val @data.file.basename or "Untitled"
|
||||
@trigger "resize"
|
||||
|
@ -18,13 +18,11 @@
|
||||
|
||||
class BaseModel
|
||||
constructor: (@name, @args) ->
|
||||
me = @
|
||||
@observable = new Announcer()
|
||||
@_api = Ant.OS.API
|
||||
@_gui = Ant.OS.GUI
|
||||
@systemsetting = Ant.OS.setting
|
||||
me = @
|
||||
@on "exit", () -> me.quit()
|
||||
@on "exit", () => @quit()
|
||||
@host = @_gui.workspace
|
||||
@dialog = undefined
|
||||
render: (p) ->
|
||||
@ -68,26 +66,25 @@ class BaseModel
|
||||
Ant.OS.announcer.on e, f, @
|
||||
|
||||
openDialog: (d, data) ->
|
||||
me = @
|
||||
new Promise (resolve, reject) ->
|
||||
if me.dialog
|
||||
me.dialog.show()
|
||||
new Promise (resolve, reject) =>
|
||||
if @dialog
|
||||
@dialog.show()
|
||||
return
|
||||
if typeof d is "string"
|
||||
if not Ant.OS.GUI.subwindows[d]
|
||||
me.error __("Dialog {0} not found", d)
|
||||
@error __("Dialog {0} not found", d)
|
||||
return
|
||||
me.dialog = new Ant.OS.GUI.subwindows[d]()
|
||||
@dialog = new Ant.OS.GUI.subwindows[d]()
|
||||
else
|
||||
me.dialog = d
|
||||
@dialog = d
|
||||
#@dialog.observable = riot.observable() unless @dialog
|
||||
me.dialog.parent = me
|
||||
me.dialog.handle = resolve
|
||||
me.dialog.reject = reject
|
||||
me.dialog.pid = me.pid
|
||||
me.dialog.data = data
|
||||
me.dialog.title = data.title if data and data.title
|
||||
me.dialog.init()
|
||||
@dialog.parent = @
|
||||
@dialog.handle = resolve
|
||||
@dialog.reject = reject
|
||||
@dialog.pid = @pid
|
||||
@dialog.data = data
|
||||
@dialog.title = data.title if data and data.title
|
||||
@dialog.init()
|
||||
|
||||
ask: (t, m, f) ->
|
||||
@._gui.openDialog "YesNoDialog", (d) ->
|
||||
|
@ -24,9 +24,8 @@ class BaseService extends this.OS.GUI.BaseModel
|
||||
@text = ""
|
||||
@timer = undefined
|
||||
@holder = undefined
|
||||
me = @
|
||||
@onmenuselect = (d) ->
|
||||
me.awake d
|
||||
@onmenuselect = (d) =>
|
||||
@awake d
|
||||
|
||||
init: ()->
|
||||
#implement by user
|
||||
@ -42,10 +41,9 @@ class BaseService extends this.OS.GUI.BaseModel
|
||||
@holder = h
|
||||
|
||||
watch: ( t, f) ->
|
||||
me = @
|
||||
func = () ->
|
||||
func = () =>
|
||||
f()
|
||||
me.timer = setTimeout (() -> func()), t
|
||||
@timer = setTimeout (() -> func()), t
|
||||
func()
|
||||
onexit: (evt) ->
|
||||
console.log "clean timer" if @timer
|
||||
|
@ -23,9 +23,8 @@ class FormatedString
|
||||
toString: () ->
|
||||
@__()
|
||||
__: () ->
|
||||
me = @
|
||||
return @fs.l().replace /{(\d+)}/g, (match, number) ->
|
||||
return if typeof me.values[number] != 'undefined' then me.values[number].__() else match
|
||||
return @fs.l().replace /{(\d+)}/g, (match, number) =>
|
||||
return if typeof @values[number] != 'undefined' then @values[number].__() else match
|
||||
hash: () ->
|
||||
@__().hash()
|
||||
|
||||
@ -321,7 +320,7 @@ Ant.OS.API =
|
||||
.catch (e) ->
|
||||
reject e
|
||||
else
|
||||
reject e
|
||||
reject Ant.OS.API.throwe __("Invalid library: {0}", l)
|
||||
else
|
||||
console.log l, "Library exist, no need to load"
|
||||
Ant.OS.announcer.trigger "sharedlibraryloaded", l
|
||||
|
@ -4,9 +4,8 @@ class AppDockTag extends Ant.OS.GUI.BaseTag
|
||||
@setopt "onappselect", (e) ->
|
||||
@setopt "items", []
|
||||
@setopt "selectedApp", undefined
|
||||
me = @
|
||||
@root.newapp = (a) -> me.addApp a
|
||||
@root.removeapp = (a) -> me.removeApp a
|
||||
@root.newapp = (a) => @addApp a
|
||||
@root.removeapp = (a) => @removeApp a
|
||||
|
||||
__selectedApp__: (v) ->
|
||||
el = undefined
|
||||
@ -26,9 +25,8 @@ class AppDockTag extends Ant.OS.GUI.BaseTag
|
||||
el[0].set "*", item
|
||||
el.attr "tooltip", "cr:#{item.app.title()}"
|
||||
item.domel = el[0]
|
||||
me = @
|
||||
el[0].set "onbtclick", (e) ->
|
||||
e.id = me.aid()
|
||||
el[0].set "onbtclick", (e) =>
|
||||
e.id = @aid()
|
||||
e.data.app = item
|
||||
item.app.show()
|
||||
@set "selectedApp", item.app
|
||||
@ -47,9 +45,8 @@ class AppDockTag extends Ant.OS.GUI.BaseTag
|
||||
$($(@root).children()[i]).remove()
|
||||
|
||||
mount: () ->
|
||||
me = @
|
||||
@root.contextmenuHandle = (e, m) ->
|
||||
return if e.target is me.root
|
||||
@root.contextmenuHandle = (e, m) =>
|
||||
return if e.target is @root
|
||||
bt = $(e.target).closest "afx-button"
|
||||
app = bt[0].get "app"
|
||||
m.set "items", [
|
||||
|
@ -31,12 +31,11 @@ class ButtonTag extends Ant.OS.GUI.BaseTag
|
||||
$(@button).addClass "selected" if v
|
||||
|
||||
mount: () ->
|
||||
me = @
|
||||
@root.trigger = () ->
|
||||
($me.refs.button).trigger "click"
|
||||
@root.trigger = () =>
|
||||
$(@refs.button).trigger "click"
|
||||
|
||||
$(@refs.button).click (e) ->
|
||||
me.btclickhd e
|
||||
$(@refs.button).click (e) =>
|
||||
@btclickhd e
|
||||
|
||||
btclickhd: (e) ->
|
||||
hd = @get "onbtclick"
|
||||
|
@ -9,11 +9,10 @@ class CalendarTag extends Ant.OS.GUI.BaseTag
|
||||
@year = 0
|
||||
|
||||
mount: () ->
|
||||
me = @
|
||||
$(@root).css "height", "100%"
|
||||
$(@refs.grid).css "width", "100%"
|
||||
$(@refs.prev).click (e) -> me.prevmonth()
|
||||
$(@refs.next).click (e) -> me.nextmonth()
|
||||
$(@refs.prev).click (e) => @prevmonth()
|
||||
$(@refs.next).click (e) => @nextmonth()
|
||||
@refs.grid.set "header", [
|
||||
{ text: "__(Sun)" },
|
||||
{ text: "__(Mon)" },
|
||||
@ -23,10 +22,10 @@ class CalendarTag extends Ant.OS.GUI.BaseTag
|
||||
{ text: "__(Fri)" },
|
||||
{ text: "__(Sat)" }
|
||||
]
|
||||
@refs.grid.set "oncellselect", (e) ->
|
||||
me.dateselect(e)
|
||||
@refs.grid.set "oncellselect", (e) =>
|
||||
@dateselect(e)
|
||||
|
||||
@observable.on "resize", (e) -> me.calibrate()
|
||||
@observable.on "resize", (e) => @calibrate()
|
||||
@calibrate()
|
||||
@calendar null
|
||||
|
||||
|
@ -34,7 +34,6 @@ class ColorPickerTag extends Ant.OS.GUI.BaseTag
|
||||
@build_palette()
|
||||
|
||||
build_palette: () ->
|
||||
me = @
|
||||
colorctx = $(@refs.palette).get(0).getContext('2d')
|
||||
gradient = colorctx.createLinearGradient(0, 0, $(@refs.palette).width(), 0)
|
||||
# fill color
|
||||
@ -65,9 +64,9 @@ class ColorPickerTag extends Ant.OS.GUI.BaseTag
|
||||
s = "0" + s if s.length is 1
|
||||
s
|
||||
|
||||
pick_color = (e) ->
|
||||
$(me.refs.palette).css("cursor", "crosshair")
|
||||
offset = $(me.refs.palette).offset()
|
||||
pick_color = (e) =>
|
||||
$(@refs.palette).css("cursor", "crosshair")
|
||||
offset = $(@refs.palette).offset()
|
||||
x = e.pageX - offset.left
|
||||
y = e.pageY - offset.top
|
||||
color = colorctx.getImageData(x, y, 1, 1)
|
||||
@ -80,26 +79,26 @@ class ColorPickerTag extends Ant.OS.GUI.BaseTag
|
||||
}
|
||||
data
|
||||
|
||||
mouse_move_h = (e) ->
|
||||
mouse_move_h = (e) =>
|
||||
data = pick_color(e)
|
||||
$(me.refs.colorval).css("background-color", data.text)
|
||||
$(@refs.colorval).css("background-color", data.text)
|
||||
|
||||
$(me.refs.palette).mouseenter (e) ->
|
||||
$(me.refs.palette).on("mousemove", mouse_move_h)
|
||||
$(@refs.palette).mouseenter (e) =>
|
||||
$(@refs.palette).on("mousemove", mouse_move_h)
|
||||
|
||||
$(me.refs.palette).mouseout (e) ->
|
||||
$(me.refs.palette).unbind("mousemove", mouse_move_h)
|
||||
if me.get "selectedColor"
|
||||
$(me.refs.colorval).css("background-color", me.get("selectedColor").text)
|
||||
$(@refs.palette).mouseout (e) =>
|
||||
$(@refs.palette).unbind("mousemove", mouse_move_h)
|
||||
if @get "selectedColor"
|
||||
$(@refs.colorval).css("background-color", @get("selectedColor").text)
|
||||
|
||||
$(@refs.palette).on "click", (e) ->
|
||||
$(@refs.palette).on "click", (e) =>
|
||||
data = pick_color(e)
|
||||
$(me.refs.rgbtext).html(data.text)
|
||||
$(me.refs.hextext).val(data.hex)
|
||||
me.set "selectedColor", data
|
||||
evt = { id: me.aid(), data: data }
|
||||
me.get("oncolorselect") evt
|
||||
me.observable.trigger "colorselect", data
|
||||
$(@refs.rgbtext).html(data.text)
|
||||
$(@refs.hextext).val(data.hex)
|
||||
@set "selectedColor", data
|
||||
evt = { id: @aid(), data: data }
|
||||
@get("oncolorselect") evt
|
||||
@observable.trigger "colorselect", data
|
||||
|
||||
layout: () ->
|
||||
[{
|
||||
|
@ -33,13 +33,12 @@ class FileViewTag extends Ant.OS.GUI.BaseTag
|
||||
|
||||
__path__: (v) ->
|
||||
return unless v
|
||||
me = @
|
||||
return unless @get "fetch"
|
||||
@get("fetch")(v)
|
||||
.then (data) ->
|
||||
.then (data) =>
|
||||
return unless data
|
||||
me.set "data", data
|
||||
me.refs.status.set("text", " ") if me.get "status"
|
||||
@set "data", data
|
||||
@refs.status.set("text", " ") if @get "status"
|
||||
.catch (e) ->
|
||||
# this should be handled by the OS
|
||||
Ant.OS.announcer.oserror e
|
||||
@ -69,9 +68,8 @@ class FileViewTag extends Ant.OS.GUI.BaseTag
|
||||
|
||||
refreshList: () ->
|
||||
items = []
|
||||
me = @
|
||||
$.each @get("data"), (i, v) ->
|
||||
return if v.filename[0] is '.' and not me.get("showhidden")
|
||||
$.each @get("data"), (i, v) =>
|
||||
return if v.filename[0] is '.' and not @get("showhidden")
|
||||
v.text = v.filename
|
||||
v.text = v.text.substring(0, 9) + "..." if v.text.length > 10
|
||||
v.iconclass = if v.iconclass then v.iconclass else v.type
|
||||
@ -81,9 +79,8 @@ class FileViewTag extends Ant.OS.GUI.BaseTag
|
||||
|
||||
refreshGrid: () ->
|
||||
rows = []
|
||||
me = @
|
||||
$.each @get("data"), (i, v) ->
|
||||
return if v.filename[0] is '.' and not me.get("showhidden")
|
||||
$.each @get("data"), (i, v) =>
|
||||
return if v.filename[0] is '.' and not @get("showhidden")
|
||||
v.text = v.filename
|
||||
v.iconclass = if v.iconclass then v.iconclass else v.type
|
||||
row = [
|
||||
@ -112,8 +109,8 @@ class FileViewTag extends Ant.OS.GUI.BaseTag
|
||||
getTreeData: (data) ->
|
||||
nodes = []
|
||||
me = @
|
||||
$.each data, (i, v) ->
|
||||
return if v.filename[0] is '.' and not me.get("showhidden")
|
||||
$.each data, (i, v) =>
|
||||
return if v.filename[0] is '.' and not @get("showhidden")
|
||||
v.name = v.filename
|
||||
if v.type is 'dir'
|
||||
v.nodes = []
|
||||
@ -176,30 +173,29 @@ class FileViewTag extends Ant.OS.GUI.BaseTag
|
||||
@observable.trigger "fileopen", evt
|
||||
|
||||
mount: () ->
|
||||
me = @
|
||||
@observable.on "resize", (e) -> me.calibrate()
|
||||
@refs.treeview.set "fetch", (v) ->
|
||||
new Promise (resolve, reject) ->
|
||||
return resolve undefined unless me.get("fetch")
|
||||
@observable.on "resize", (e) => @calibrate()
|
||||
@refs.treeview.set "fetch", (v) =>
|
||||
new Promise (resolve, reject) =>
|
||||
return resolve undefined unless @get("fetch")
|
||||
return resolve undefined unless v.get("data").path
|
||||
me.get("fetch")(v.get("data").path)
|
||||
.then (d) -> resolve me.getTreeData(d.sort me.sortByType)
|
||||
@get("fetch")(v.get("data").path)
|
||||
.then (d) => resolve @getTreeData(d.sort @sortByType)
|
||||
.catch (e) -> reject e
|
||||
@refs.gridview.set "header", @header
|
||||
# even handles
|
||||
@refs.listview.set "onlistselect", (e) ->
|
||||
me.fileselect e.data.item.get("data")
|
||||
@refs.gridview.set "onrowselect", (e) ->
|
||||
me.fileselect $(e.data.item).children()[0].get("data")
|
||||
@refs.treeview.set "ontreeselect", (e) ->
|
||||
me.fileselect e.data.item.get("data")
|
||||
@refs.listview.set "onlistselect", (e) =>
|
||||
@fileselect e.data.item.get("data")
|
||||
@refs.gridview.set "onrowselect", (e) =>
|
||||
@fileselect $(e.data.item).children()[0].get("data")
|
||||
@refs.treeview.set "ontreeselect", (e) =>
|
||||
@fileselect e.data.item.get("data")
|
||||
# dblclick
|
||||
@refs.listview.set "onlistdbclick", (e) ->
|
||||
me.filedbclick e.data.item.get("data")
|
||||
@refs.gridview.set "oncelldbclick", (e) ->
|
||||
me.filedbclick e.data.item.get("data")
|
||||
@refs.treeview.set "ontreedbclick", (e) ->
|
||||
me.filedbclick e.data.item.get("data")
|
||||
@refs.listview.set "onlistdbclick", (e) =>
|
||||
@filedbclick e.data.item.get("data")
|
||||
@refs.gridview.set "oncelldbclick", (e) =>
|
||||
@filedbclick e.data.item.get("data")
|
||||
@refs.treeview.set "ontreedbclick", (e) =>
|
||||
@filedbclick e.data.item.get("data")
|
||||
@switchView()
|
||||
|
||||
layout: () ->
|
||||
|
@ -1,12 +1,12 @@
|
||||
class FloatListTag extends ListViewTag
|
||||
constructor: (r, o) ->
|
||||
super r, o
|
||||
me = @
|
||||
|
||||
@setopt "dir", "horizontal"
|
||||
@root.refresh = () -> me.calibrate()
|
||||
@root.push = (e) -> me.refs.mlist.push(e)
|
||||
@root.unshift = (e) -> me.refs.mlist.unshift(e)
|
||||
@root.remove = (e) -> me.refs.mlist.remove(e)
|
||||
@root.refresh = () => @calibrate()
|
||||
@root.push = (e) => @refs.mlist.push(e)
|
||||
@root.unshift = (e) => @refs.mlist.unshift(e)
|
||||
@root.remove = (e) => @refs.mlist.remove(e)
|
||||
|
||||
# disable some uneccessary functions
|
||||
__dropdown__: (v) -> @set "dropdown", false if v
|
||||
@ -20,7 +20,6 @@ class FloatListTag extends ListViewTag
|
||||
@calibrate()
|
||||
|
||||
mount: () ->
|
||||
me = @
|
||||
$(@refs.container)
|
||||
.css "width", "100%"
|
||||
.css "height", "100%"
|
||||
@ -28,7 +27,7 @@ class FloatListTag extends ListViewTag
|
||||
.css "position", "absolute"
|
||||
.css "display", "block"
|
||||
.css "width", "100%"
|
||||
@observable.on "resize", (e) -> me.calibrate()
|
||||
@observable.on "resize", (e) => @calibrate()
|
||||
@root.ready(@root) if @root.ready
|
||||
|
||||
push: (v) ->
|
||||
@ -37,14 +36,13 @@ class FloatListTag extends ListViewTag
|
||||
el
|
||||
|
||||
enable_drag: (el) ->
|
||||
me = @
|
||||
$(el)
|
||||
.css "user-select", "none"
|
||||
.css "cursor", "default"
|
||||
.css "display", "block"
|
||||
.css "position", "absolute"
|
||||
.on "mousedown", (evt) ->
|
||||
globalof = $(me.refs.mlist).offset()
|
||||
.on "mousedown", (evt) =>
|
||||
globalof = $(@refs.mlist).offset()
|
||||
evt.preventDefault()
|
||||
offset = $(el).offset()
|
||||
offset.top = evt.clientY - offset.top
|
||||
@ -71,14 +69,14 @@ class FloatListTag extends ListViewTag
|
||||
.css "height", "#{$(@refs.container).height()}px"
|
||||
gw = $(@refs.mlist).width()
|
||||
gh = $(@refs.mlist).height()
|
||||
me = @
|
||||
$(@refs.mlist).children().each (e) ->
|
||||
$(@)
|
||||
|
||||
$(@refs.mlist).children().each (i, e) =>
|
||||
$(e)
|
||||
.css "top", "#{ctop}px"
|
||||
.css "left", "#{cleft}px"
|
||||
w = $(@).width()
|
||||
h = $(@).height()
|
||||
if me.get("dir") is "vertical"
|
||||
w = $(e).width()
|
||||
h = $(e).height()
|
||||
if @get("dir") is "vertical"
|
||||
ctop += h + 20
|
||||
if ctop > gh
|
||||
ctop = 20
|
||||
|
@ -26,12 +26,11 @@ class GridCellPrototype extends Ant.OS.GUI.BaseTag
|
||||
@set "data", @get("data")
|
||||
|
||||
mount: () ->
|
||||
me = @
|
||||
$(@root).css "display", "block"
|
||||
$(@root).click (e) ->
|
||||
me.cellseleck e, false
|
||||
$(@root).dblclick (e) ->
|
||||
me.cellseleck e, true
|
||||
$(@root).click (e) =>
|
||||
@cellseleck e, false
|
||||
$(@root).dblclick (e) =>
|
||||
@cellseleck e, true
|
||||
|
||||
|
||||
cellseleck: (e, flag) ->
|
||||
@ -73,10 +72,9 @@ class GridViewTag extends Ant.OS.GUI.BaseTag
|
||||
@setopt "onrowselect", (e) ->
|
||||
@setopt "oncelldbclick", (e) ->
|
||||
@setopt "multiselect", false
|
||||
me = @
|
||||
@root.push = (r) -> me.push r, false
|
||||
@root.unshift = (r) -> me.unshift r
|
||||
@root.remove = (r) -> me.remove r
|
||||
@root.push = (r) => @push r, false
|
||||
@root.unshift = (r) => @unshift r
|
||||
@root.remove = (r) => @remove r
|
||||
|
||||
__header__: (v) ->
|
||||
return $(@refs.header).hide() if not v or v.length is 0
|
||||
@ -89,7 +87,6 @@ class GridViewTag extends Ant.OS.GUI.BaseTag
|
||||
@calibrate()
|
||||
|
||||
__rows__: (rows) ->
|
||||
me = @
|
||||
$(@refs.grid).empty()
|
||||
for row in rows
|
||||
@push row, false
|
||||
@ -108,7 +105,6 @@ class GridViewTag extends Ant.OS.GUI.BaseTag
|
||||
|
||||
|
||||
push: (row, flag) ->
|
||||
me = @
|
||||
rowel = $("<afx-grid-row>")
|
||||
.css "display", "contents"
|
||||
rowel[0].uify undefined
|
||||
@ -119,8 +115,8 @@ class GridViewTag extends Ant.OS.GUI.BaseTag
|
||||
el = $("<#{@get("cellitem")}>").appendTo rowel
|
||||
cell.domel = el[0]
|
||||
el[0].uify undefined
|
||||
el[0].set "oncellselect", (e) -> me.cellselect e, false
|
||||
el[0].set "oncelldbclick", (e) -> me.cellselect e, true
|
||||
el[0].set "oncellselect", (e) => @cellselect e, false
|
||||
el[0].set "oncelldbclick", (e) => @cellselect e, true
|
||||
el[0].set "data", cell
|
||||
if flag
|
||||
$(@refs.grid).prepend rowel[0]
|
||||
@ -208,13 +204,12 @@ class GridViewTag extends Ant.OS.GUI.BaseTag
|
||||
$(@refs.header).css "grid-template-columns", template
|
||||
|
||||
mount: () ->
|
||||
me = @
|
||||
$(@root)
|
||||
.css "overflow", "hidden"
|
||||
|
||||
$(@refs.grid).css "display", "grid"
|
||||
$(@refs.header).css "display", "grid"
|
||||
@observable.on "resize", (e) -> me.calibrate()
|
||||
@observable.on "resize", (e) => @calibrate()
|
||||
$(@refs.container)
|
||||
.css "width", "100%"
|
||||
.css "overflow-x", "hidden"
|
||||
|
@ -1,7 +1,6 @@
|
||||
class ListViewItemTag extends Ant.OS.GUI.BaseTag
|
||||
constructor: (r, o) ->
|
||||
super r, o
|
||||
me = @
|
||||
@setopt "data", {}
|
||||
@setopt "oncontextmenu", (e) ->
|
||||
@setopt "onclick", (e) ->
|
||||
@ -11,6 +10,7 @@ class ListViewItemTag extends Ant.OS.GUI.BaseTag
|
||||
@setopt "index", 0
|
||||
@setopt "closable", false
|
||||
@setopt "selected", false
|
||||
|
||||
__closable__: (v) ->
|
||||
if v then $(@refs.btcl).show() else $(@refs.btcl).hide()
|
||||
|
||||
@ -21,21 +21,20 @@ class ListViewItemTag extends Ant.OS.GUI.BaseTag
|
||||
@get("onselect")({ item: @root })
|
||||
|
||||
mount: () ->
|
||||
me = @
|
||||
$(@refs.item).contextmenu (e) ->
|
||||
e.item = me.root
|
||||
me.get("oncontextmenu")(e)
|
||||
$(@refs.item).contextmenu (e) =>
|
||||
e.item = @root
|
||||
@get("oncontextmenu")(e)
|
||||
|
||||
$(@refs.item).click (e) ->
|
||||
e.item = me.root
|
||||
me.get("onclick")(e)
|
||||
$(@refs.item).click (e) =>
|
||||
e.item = @root
|
||||
@get("onclick")(e)
|
||||
|
||||
$(@refs.item).dblclick (e) ->
|
||||
e.item = me.root
|
||||
me.get("ondbclick")(e)
|
||||
$(@refs.btcl).click (e) ->
|
||||
e.item = me.root
|
||||
me.get("onclose")(e)
|
||||
$(@refs.item).dblclick (e) =>
|
||||
e.item = @root
|
||||
@get("ondbclick")(e)
|
||||
$(@refs.btcl).click (e) =>
|
||||
e.item = @root
|
||||
@get("onclose")(e)
|
||||
layout: () ->
|
||||
[{
|
||||
el: "li", ref: "item", children: [
|
||||
@ -60,6 +59,9 @@ class SimpleListItemTag extends ListViewItemTag
|
||||
@set "selected", v.selected if v.selected
|
||||
@set "closable", v.closable if v.closable
|
||||
|
||||
__selected: (v) ->
|
||||
@get("data").selected = v
|
||||
|
||||
update: () ->
|
||||
@set "data", @get("data")
|
||||
|
||||
@ -83,13 +85,12 @@ class ListViewTag extends Ant.OS.GUI.BaseTag
|
||||
$(@root)
|
||||
.css "display", "flex"
|
||||
.css "flex-direction", "column"
|
||||
me = @
|
||||
@root.push = (e) -> me.push e
|
||||
@root.remove = (e) -> me.remove e
|
||||
@root.unshift = (e) -> me.unshift e
|
||||
@root.unselect = () -> me.unselect()
|
||||
@root.selectNext = () -> me.selectNext()
|
||||
@root.selectPrev = () -> me.selectPrev()
|
||||
@root.push = (e) => @push e
|
||||
@root.remove = (e) => @remove e
|
||||
@root.unshift = (e) => @unshift e
|
||||
@root.unselect = () => @unselect()
|
||||
@root.selectNext = () => @selectNext()
|
||||
@root.selectPrev = () => @selectPrev()
|
||||
|
||||
multiselect: () ->
|
||||
return false if @get "dropdown"
|
||||
@ -110,18 +111,17 @@ class ListViewTag extends Ant.OS.GUI.BaseTag
|
||||
@get("data").push item if not @has_data item
|
||||
el.appendTo @refs.mlist
|
||||
el[0].uify @observable
|
||||
me = @
|
||||
el[0]
|
||||
.set "oncontextmenu", (e) ->
|
||||
me.iclick e, true
|
||||
.set "ondbclick", (e) ->
|
||||
me.idbclick e, false
|
||||
.set "onclick", (e) ->
|
||||
me.iclick e, false
|
||||
.set "onselect", (e) ->
|
||||
me.iselect e
|
||||
.set "onclose", (e) ->
|
||||
me.iclose e
|
||||
.set "oncontextmenu", (e) =>
|
||||
@iclick e, true
|
||||
.set "ondbclick", (e) =>
|
||||
@idbclick e, false
|
||||
.set "onclick", (e) =>
|
||||
@iclick e, false
|
||||
.set "onselect", (e) =>
|
||||
@iselect e
|
||||
.set "onclose", (e) =>
|
||||
@iclose e
|
||||
.set "data", item
|
||||
item.domel = el[0]
|
||||
el[0]
|
||||
@ -221,9 +221,8 @@ class ListViewTag extends Ant.OS.GUI.BaseTag
|
||||
@observable.trigger "listselect", evt
|
||||
|
||||
mount: () ->
|
||||
me = @
|
||||
$(@refs.btlist).hide()
|
||||
@observable.on "resize", (e) -> me.calibrate()
|
||||
@observable.on "resize", (e) => @calibrate()
|
||||
@calibrate()
|
||||
|
||||
iclose: (e) ->
|
||||
@ -239,11 +238,10 @@ class ListViewTag extends Ant.OS.GUI.BaseTag
|
||||
$(@refs.mlist).removeAttr "style"
|
||||
$(@refs.container).css "flex", 1
|
||||
$(@root).removeClass()
|
||||
me = @
|
||||
drop = (e) ->
|
||||
me.dropoff e
|
||||
show = (e) ->
|
||||
me.showlist e
|
||||
drop = (e) =>
|
||||
@dropoff e
|
||||
show = (e) =>
|
||||
@showlist e
|
||||
if v
|
||||
$(@root).addClass "dropdown"
|
||||
$(@refs.current).show()
|
||||
|
@ -33,7 +33,6 @@ class MenuEntryTag extends Ant.OS.GUI.BaseTag
|
||||
]
|
||||
}]
|
||||
__children__: (v) ->
|
||||
me = @
|
||||
$(@refs.container).removeClass("afx_submenu")
|
||||
return $(@refs.submenu).hide() unless v and v.length > 0
|
||||
$(@refs.container).addClass("afx_submenu")
|
||||
@ -41,15 +40,14 @@ class MenuEntryTag extends Ant.OS.GUI.BaseTag
|
||||
.show()
|
||||
.attr("style", "")
|
||||
@refs.submenu.set "parent", @
|
||||
@refs.submenu.set "root", me.get("root")
|
||||
@refs.submenu.set "root", @get("root")
|
||||
@refs.submenu.set "items", v
|
||||
if @is_root()
|
||||
$(@refs.container).mouseleave (e) ->
|
||||
$(me.refs.submenu).attr("style", "")
|
||||
$(@refs.container).mouseleave (e) =>
|
||||
$(@refs.submenu).attr("style", "")
|
||||
|
||||
mount: () ->
|
||||
me = @
|
||||
$(@refs.entry).click (e) -> me.select e
|
||||
$(@refs.entry).click (e) => @select e
|
||||
|
||||
submenuoff: () ->
|
||||
p = @get "parent"
|
||||
@ -57,7 +55,6 @@ class MenuEntryTag extends Ant.OS.GUI.BaseTag
|
||||
p.submenuoff()
|
||||
|
||||
select: (e) ->
|
||||
me = @
|
||||
e.item = @root
|
||||
evt = { id: @aid(), data: e }
|
||||
e.preventDefault()
|
||||
@ -134,7 +131,6 @@ class SimpleMenuEntryTag extends MenuEntryTag
|
||||
|
||||
mount: () ->
|
||||
super.mount()
|
||||
me = @
|
||||
@refs.switch.set "enable", false
|
||||
|
||||
select: (e) ->
|
||||
@ -156,19 +152,18 @@ class SimpleMenuEntryTag extends MenuEntryTag
|
||||
class MenuTag extends Ant.OS.GUI.BaseTag
|
||||
constructor: (r, o) ->
|
||||
super r, o
|
||||
me = @
|
||||
@setopt "context", false
|
||||
@setopt "parent", undefined
|
||||
@setopt "root", undefined
|
||||
@setopt "contentag", "afx-menu-entry"
|
||||
@setopt "onmenuitemselect", (e) -> me.handleselect e
|
||||
@setopt "onmenuitemselect", (e) => @handleselect e
|
||||
@setopt "onmenuselect", (e) ->
|
||||
@setopt "items", []
|
||||
@root.show = (e) ->
|
||||
me.showctxmenu e
|
||||
@root.push = (e) -> me.push e
|
||||
@root.remove = (e) -> me.remove e
|
||||
@root.unshift = (e) -> me.unshift e
|
||||
@root.show = (e) =>
|
||||
@showctxmenu e
|
||||
@root.push = (e) => @push e
|
||||
@root.remove = (e) => @remove e
|
||||
@root.unshift = (e) => @unshift e
|
||||
|
||||
handleselect: (e) ->
|
||||
$(@root).hide() if @isctxmenu()
|
||||
@ -190,12 +185,11 @@ class MenuTag extends Ant.OS.GUI.BaseTag
|
||||
return @get("root") is undefined
|
||||
|
||||
mount: () ->
|
||||
me = @
|
||||
$(@refs.container).css "display", "contents"
|
||||
return unless me.isctxmenu()
|
||||
$(@refs.wrapper).mouseleave (e) ->
|
||||
return unless me.is_root()
|
||||
$(me.root).hide()
|
||||
return unless @isctxmenu()
|
||||
$(@refs.wrapper).mouseleave (e) =>
|
||||
return unless @is_root()
|
||||
$(@root).hide()
|
||||
|
||||
__context__: (v) ->
|
||||
$(@refs.wrapper).removeClass("context")
|
||||
|
@ -7,24 +7,23 @@ class NSpinnerTag extends Ant.OS.GUI.BaseTag
|
||||
@setopt "step", 1
|
||||
|
||||
mount: () ->
|
||||
me = @
|
||||
$(@refs.holder).attr "type", "text"
|
||||
$(@refs.incr).click (e) ->
|
||||
me.set "value", (me.get("value") + me.get("step") )
|
||||
$(@refs.incr).click (e) =>
|
||||
@set "value", (@get("value") + @get("step") )
|
||||
|
||||
$(@refs.decr).click (e) ->
|
||||
me.set "value", (me.get("value") - me.get("step") )
|
||||
$(@refs.decr).click (e) =>
|
||||
@set "value", (@get("value") - @get("step") )
|
||||
|
||||
# @observable.on "calibrate", () -> me.calibrate()
|
||||
@observable.on "resize", () -> me.calibrate()
|
||||
# @observable.on "calibrate", () -> @calibrate()
|
||||
@observable.on "resize", () => @calibrate()
|
||||
|
||||
$(@refs.holder).on 'keyup', (e) ->
|
||||
$(@refs.holder).on 'keyup', (e) =>
|
||||
if e.keyCode is 13
|
||||
val = me.refs.holder.value
|
||||
val = @refs.holder.value
|
||||
if not isNaN(val)
|
||||
val = parseInt(val)
|
||||
val = me.value if val < 0
|
||||
me.set "value", val
|
||||
val = @value if val < 0
|
||||
@set "value", val
|
||||
@calibrate()
|
||||
|
||||
calibrate: () ->
|
||||
|
@ -28,16 +28,15 @@ class ResizerTag extends Ant.OS.GUI.BaseTag
|
||||
@draggable()
|
||||
|
||||
draggable: () ->
|
||||
me = @
|
||||
$(@root).css "user-select", "none"
|
||||
$(@root).on "mousedown", (e) ->
|
||||
$(@root).on "mousedown", (e) =>
|
||||
e.preventDefault()
|
||||
$(window).on "mousemove", (evt) ->
|
||||
return unless me.resizable_el
|
||||
if me.dir is "hz"
|
||||
me.horizontalResize evt
|
||||
else if me.dir is "ve"
|
||||
me.verticalResize evt
|
||||
$(window).on "mousemove", (evt) =>
|
||||
return unless @resizable_el
|
||||
if @dir is "hz"
|
||||
@horizontalResize evt
|
||||
else if @dir is "ve"
|
||||
@verticalResize evt
|
||||
|
||||
$(window).on "mouseup", (evt) ->
|
||||
$(window).unbind "mousemove", null
|
||||
|
@ -16,12 +16,11 @@ class SliderTag extends Ant.OS.GUI.BaseTag
|
||||
|
||||
__dragable__: (v) ->
|
||||
if v
|
||||
me = @
|
||||
$(@root)
|
||||
.mouseover () ->
|
||||
$(me.refs.point).show()
|
||||
.mouseout () ->
|
||||
$(me.refs.point).hide()
|
||||
.mouseover () =>
|
||||
$(@refs.point).show()
|
||||
.mouseout () =>
|
||||
$(@refs.point).hide()
|
||||
else
|
||||
$(@refs.point).hide()
|
||||
$(@root)
|
||||
@ -29,21 +28,20 @@ class SliderTag extends Ant.OS.GUI.BaseTag
|
||||
.ubbind("mouseout")
|
||||
|
||||
mount: () ->
|
||||
me = @
|
||||
@enable_dragging()
|
||||
$(@refs.point).css "position", "absolute"
|
||||
$(@refs.point).hide()
|
||||
@observable.on "resize", (e) ->
|
||||
me.calibrate()
|
||||
$(@refs.container).click (e) ->
|
||||
offset = $(me.refs.container).offset()
|
||||
@observable.on "resize", (e) =>
|
||||
@calibrate()
|
||||
$(@refs.container).click (e) =>
|
||||
offset = $(@refs.container).offset()
|
||||
left = e.clientX - offset.left
|
||||
maxw = $(me.refs.container).width()
|
||||
me.set "value", left * me.get("max") / maxw
|
||||
me.calibrate()
|
||||
evt = { id: me.aid(), data: me.get("value") }
|
||||
me.get("onchange") evt
|
||||
me.get("onchanging") evt
|
||||
maxw = $(@refs.container).width()
|
||||
@set "value", left * @get("max") / maxw
|
||||
@calibrate()
|
||||
evt = { id: @aid(), data: @get("value") }
|
||||
@get("onchange") evt
|
||||
@get("onchanging") evt
|
||||
@calibrate()
|
||||
|
||||
calibrate: () ->
|
||||
@ -61,24 +59,23 @@ class SliderTag extends Ant.OS.GUI.BaseTag
|
||||
.css "top", top + "px"
|
||||
|
||||
enable_dragging: () ->
|
||||
me = @
|
||||
$(@refs.point)
|
||||
.css "user-select", "none"
|
||||
.css "cursor", "default"
|
||||
$(@refs.point).on "mousedown", (e) ->
|
||||
$(@refs.point).on "mousedown", (e) =>
|
||||
e.preventDefault()
|
||||
offset = $(me.refs.container).offset()
|
||||
$(window).on "mousemove", (e) ->
|
||||
offset = $(@refs.container).offset()
|
||||
$(window).on "mousemove", (e) =>
|
||||
left = e.clientX - offset.left
|
||||
left = if left < 0 then 0 else left
|
||||
maxw = $(me.refs.container).width()
|
||||
maxw = $(@refs.container).width()
|
||||
left = if left > maxw then maxw else left
|
||||
me.set "value", left * me.get("max") / maxw
|
||||
me.calibrate()
|
||||
me.get("onchanging") { id: me.aid(), data: me.get("value") }
|
||||
@set "value", left * @get("max") / maxw
|
||||
@calibrate()
|
||||
@get("onchanging") { id: @aid(), data: @get("value") }
|
||||
|
||||
$(window).on "mouseup", (e) ->
|
||||
me.get("onchange") { id: me.aid(), data: me.get("value") }
|
||||
$(window).on "mouseup", (e) =>
|
||||
@get("onchange") { id: @aid(), data: @get("value") }
|
||||
$(window).unbind("mousemove", null)
|
||||
$(window).unbind("mouseup", null)
|
||||
|
||||
|
@ -7,9 +7,8 @@ class SwitchTag extends Ant.OS.GUI.BaseTag
|
||||
@setopt "onchange", (e) ->
|
||||
|
||||
mount: () ->
|
||||
me = @
|
||||
$(@refs.switch).click (e) ->
|
||||
me.onchange(e)
|
||||
$(@refs.switch).click (e) =>
|
||||
@onchange(e)
|
||||
|
||||
onchange: (e) ->
|
||||
return unless @get "enable"
|
||||
|
@ -1,15 +1,14 @@
|
||||
class SystemPanelTag extends Ant.OS.GUI.BaseTag
|
||||
constructor: (r, o) ->
|
||||
super r, o
|
||||
me = @
|
||||
@setopt "osmenu", {
|
||||
text: __("Start"),
|
||||
iconclass: "fa fa-eercast"
|
||||
}
|
||||
@setopt "appmenu", []
|
||||
@setopt "systray", []
|
||||
@root.attachservice = (s) -> me.attachservice s
|
||||
@root.detachservice = (s) -> me.detachservice s
|
||||
@root.attachservice = (s) => @attachservice s
|
||||
@root.detachservice = (s) => @detachservice s
|
||||
@view = false
|
||||
|
||||
__osmenu__: (v) ->
|
||||
@ -118,50 +117,49 @@ class SystemPanelTag extends Ant.OS.GUI.BaseTag
|
||||
@refs.overlay.set "height", "#{$(window).height() - $(@refs.panel).height()}px"
|
||||
|
||||
mount: () ->
|
||||
me = @
|
||||
@cb = (e) ->
|
||||
if not ($ e.target).closest($ me.refs.overlay).length and not ($ e.target).closest(me.refs.osmenu).length
|
||||
me.toggle false
|
||||
@cb = (e) =>
|
||||
if not ($ e.target).closest($ @refs.overlay).length and not ($ e.target).closest(@refs.osmenu).length
|
||||
@toggle false
|
||||
else
|
||||
$(me.refs.search).focus()
|
||||
$(@refs.search).focus()
|
||||
$(@refs.appmenu).css("z-index", 1000000)
|
||||
$(@refs.systray).css("z-index", 1000000)
|
||||
@refs.btscreen.set "*", {
|
||||
iconclass: "fa fa-tv",
|
||||
onbtclick: (e) ->
|
||||
me.toggle false
|
||||
onbtclick: (e) =>
|
||||
@toggle false
|
||||
Ant.OS.GUI.toggleFullscreen()
|
||||
}
|
||||
@refs.btuser.set "*", {
|
||||
iconclass: "fa fa-user-circle-o",
|
||||
onbtclick: (e) ->
|
||||
me.toggle false
|
||||
onbtclick: (e) =>
|
||||
@toggle false
|
||||
Ant.OS.GUI.openDialog("InfoDialog", Ant.OS.setting.user)
|
||||
}
|
||||
@refs.btlogout.set "*", {
|
||||
iconclass: "fa fa-power-off",
|
||||
onbtclick: (e) ->
|
||||
me.toggle false
|
||||
onbtclick: (e) =>
|
||||
@toggle false
|
||||
Ant.OS.exit()
|
||||
}
|
||||
@refs.osmenu.set "onmenuselect", (e) ->
|
||||
me.toggle true
|
||||
@refs.osmenu.set "onmenuselect", (e) =>
|
||||
@toggle true
|
||||
|
||||
($ @refs.overlay).css "left", 0
|
||||
.css "top", "#{$(@refs.panel).height()}px"
|
||||
.css "bottom", "0"
|
||||
.hide()
|
||||
($ @refs.search).keyup (e) ->
|
||||
me.search e
|
||||
($ @refs.search).keyup (e) =>
|
||||
@search e
|
||||
|
||||
$(@refs.applist).click (e) ->
|
||||
me.open()
|
||||
Ant.OS.GUI.bindKey "CTRL- ", (e) ->
|
||||
if me.view is false
|
||||
me.toggle true
|
||||
$(@refs.applist).click (e) =>
|
||||
@open()
|
||||
Ant.OS.GUI.bindKey "CTRL- ", (e) =>
|
||||
if @view is false
|
||||
@toggle true
|
||||
else
|
||||
me.toggle false
|
||||
me.view = not me.view
|
||||
@toggle false
|
||||
@view = not @view
|
||||
Ant.OS.announcer.trigger("syspanelloaded")
|
||||
|
||||
Ant.OS.GUI.define "afx-sys-panel", SystemPanelTag
|
@ -6,15 +6,14 @@ class TabBarTag extends Ant.OS.GUI.BaseTag
|
||||
@setopt "ontabclose", (e) ->
|
||||
@setopt "items", []
|
||||
@setopt "selected", -1
|
||||
me = @
|
||||
@root.push = (e) ->
|
||||
e.closable = me.get "closable"
|
||||
me.refs.list.push e
|
||||
@root.remove = (e) -> me.refs.list.remove e
|
||||
@root.unshift = (e) -> me.refs.list.unshift e
|
||||
@refs.list.set "onlistselect", (e) ->
|
||||
me.get("ontabselect") e
|
||||
me.observable.trigger "tabselect", e
|
||||
@root.push = (e) =>
|
||||
e.closable = @get "closable"
|
||||
@refs.list.push e
|
||||
@root.remove = (e) => @refs.list.remove e
|
||||
@root.unshift = (e) => @refs.list.unshift e
|
||||
@refs.list.set "onlistselect", (e) =>
|
||||
@get("ontabselect") e
|
||||
@observable.trigger "tabselect", e
|
||||
|
||||
__items__: (v) ->
|
||||
i.closable = @get "closable" for i in v
|
||||
@ -24,11 +23,10 @@ class TabBarTag extends Ant.OS.GUI.BaseTag
|
||||
@refs.list.set "selected", v
|
||||
|
||||
mount: () ->
|
||||
me = @
|
||||
$(@refs.list).css "height", "100%"
|
||||
@refs.list.set "onitemclose", (e) ->
|
||||
e.id = me.aid()
|
||||
me.get("ontabclose") e
|
||||
@refs.list.set "onitemclose", (e) =>
|
||||
e.id = @aid()
|
||||
@get("ontabclose") e
|
||||
|
||||
layout: () ->
|
||||
[{
|
||||
|
@ -6,11 +6,10 @@ class TabContainerTag extends Ant.OS.GUI.BaseTag
|
||||
@setopt "tabbarwidth", undefined
|
||||
@setopt "tabbarheight", undefined
|
||||
@setopt "ontabselect", () ->
|
||||
me = @
|
||||
@refs.bar.set "ontabselect", (e) ->
|
||||
@refs.bar.set "ontabselect", (e) =>
|
||||
data = e.data.item.get "data"
|
||||
me.set "selectedTab", data
|
||||
me.get("ontabselect") { data: data, id: me.aid() }
|
||||
@set "selectedTab", data
|
||||
@get("ontabselect") { data: data, id: @aid() }
|
||||
|
||||
__selectedTab: (v) ->
|
||||
return unless v
|
||||
@ -34,19 +33,18 @@ class TabContainerTag extends Ant.OS.GUI.BaseTag
|
||||
@set "tabsize", @get("tabsize")
|
||||
|
||||
mount: () ->
|
||||
me = @
|
||||
$(@children).each () ->
|
||||
$(@children).each (i, e) =>
|
||||
item = {}
|
||||
item.text = $(@).attr "tabname" if $(@).attr "tabname"
|
||||
item.icon = $(@).attr "icon" if $(@).attr "icon"
|
||||
item.iconclass = $(@).attr "iconclass" if $(@).attr "iconclass"
|
||||
item.container = @
|
||||
$(@)
|
||||
item.text = $(e).attr "tabname" if $(e).attr "tabname"
|
||||
item.icon = $(e).attr "icon" if $(e).attr "icon"
|
||||
item.iconclass = $(e).attr "iconclass" if $(e).attr "iconclass"
|
||||
item.container = e
|
||||
$(e)
|
||||
.css "width", "100%"
|
||||
.css "height", "100%"
|
||||
el = me.refs.bar.push item
|
||||
el = @refs.bar.push item
|
||||
el.set "selected", true
|
||||
@observable.on "resize", (e) -> me.calibrate()
|
||||
@observable.on "resize", (e) => @calibrate()
|
||||
@calibrate()
|
||||
|
||||
calibrate: () ->
|
||||
|
@ -23,8 +23,7 @@ class TileLayoutTag extends Ant.OS.GUI.BaseTag
|
||||
@calibrate()
|
||||
|
||||
mount: () ->
|
||||
me = @
|
||||
@observable.on "resize", (e) -> me.calibrate()
|
||||
@observable.on "resize", (e) => @calibrate()
|
||||
@calibrate()
|
||||
|
||||
calibrate: () ->
|
||||
|
@ -22,16 +22,15 @@ class TreeViewItemPrototype extends Ant.OS.GUI.BaseTag
|
||||
return $(@refs.wrapper).addClass("afx_tree_item_selected") if v
|
||||
|
||||
__open__: (v) ->
|
||||
me = @
|
||||
return unless @is_folder()
|
||||
$(@refs.toggle)
|
||||
.removeClass()
|
||||
if(v)
|
||||
if @get("fetch")
|
||||
@get("fetch")(@root)
|
||||
.then (d) ->
|
||||
.then (d) =>
|
||||
return unless d
|
||||
me.set "nodes", d
|
||||
@.set "nodes", d
|
||||
.catch (e) -> Ant.OS.announcer.oserror e
|
||||
$(@refs.childnodes).show()
|
||||
else
|
||||
@ -76,7 +75,6 @@ class TreeViewItemPrototype extends Ant.OS.GUI.BaseTag
|
||||
|
||||
|
||||
mount: () ->
|
||||
me = @
|
||||
super.mount()
|
||||
$(@refs.container)
|
||||
.css "padding", 0
|
||||
@ -85,20 +83,20 @@ class TreeViewItemPrototype extends Ant.OS.GUI.BaseTag
|
||||
$(@refs.itemholder)
|
||||
.css "display", "inline-block"
|
||||
$(@refs.wrapper)
|
||||
.click (e) ->
|
||||
e.item = me.root
|
||||
me.get("treeroot").itemclick e, false
|
||||
.click (e) =>
|
||||
e.item = @root
|
||||
@get("treeroot").itemclick e, false
|
||||
$(@refs.wrapper)
|
||||
.dblclick (e) ->
|
||||
e.item = me.root
|
||||
me.get("treeroot").itemclick e, true
|
||||
.dblclick (e) =>
|
||||
e.item = @root
|
||||
@get("treeroot").itemclick e, true
|
||||
|
||||
$(@refs.toggle)
|
||||
.css "display", "inline-block"
|
||||
.css "width", "15px"
|
||||
.addClass "afx-tree-view-item"
|
||||
.click (e) ->
|
||||
me.set "open", not me.get("open")
|
||||
.click (e) =>
|
||||
@set "open", not @get("open")
|
||||
e.preventDefault()
|
||||
e.stopPropagation()
|
||||
|
||||
|
@ -19,16 +19,15 @@ class WindowTag extends Ant.OS.GUI.BaseTag
|
||||
$(this).css "height", "#{ch}px"
|
||||
|
||||
mount: () ->
|
||||
me = @
|
||||
@root.contextmenuHandle = (e) ->
|
||||
$(@refs["minbt"]).click (e) ->
|
||||
me.observable.trigger "hide", { id: me.aid() }
|
||||
$(@refs["minbt"]).click (e) =>
|
||||
@observable.trigger "hide", { id: @aid() }
|
||||
|
||||
$(@refs["maxbt"]).click (e) ->
|
||||
me.toggle_window()
|
||||
$(@refs["maxbt"]).click (e) =>
|
||||
@toggle_window()
|
||||
|
||||
$(@refs["closebt"]).click (e) ->
|
||||
me.observable.trigger("exit", { id: me.aid() })
|
||||
$(@refs["closebt"]).click (e) =>
|
||||
@observable.trigger("exit", { id: @aid() })
|
||||
left = ($(@desktop).width() - (@get "width")) / 2
|
||||
top = ($(@desktop).height() - (@get "height")) / 2
|
||||
$(@root)
|
||||
@ -36,41 +35,41 @@ class WindowTag extends Ant.OS.GUI.BaseTag
|
||||
.css("left", "#{left}px")
|
||||
.css("top", "#{top}px")
|
||||
.css("z-index", Ant.OS.GUI.zindex++)
|
||||
$(@root).on "mousedown", (e) ->
|
||||
return if me.shown
|
||||
me.observable.trigger "focus", { id: me.aid() }
|
||||
$(@root).on "mousedown", (e) =>
|
||||
return if @shown
|
||||
@observable.trigger "focus", { id: @aid() }
|
||||
|
||||
$(@refs["dragger"]).dblclick (e) ->
|
||||
me.toggle_window()
|
||||
$(@refs["dragger"]).dblclick (e) =>
|
||||
@toggle_window()
|
||||
|
||||
|
||||
@observable.on "resize", (e) -> me.resize()
|
||||
@observable.on "resize", (e) => @resize()
|
||||
|
||||
@observable.on "focus", () ->
|
||||
@observable.on "focus", () =>
|
||||
Ant.OS.GUI.zindex++
|
||||
$(me.root)
|
||||
$(@root)
|
||||
.show()
|
||||
.css("z-index", Ant.OS.GUI.zindex)
|
||||
.removeClass("unactive")
|
||||
me.shown = true
|
||||
@shown = true
|
||||
|
||||
@observable.on "blur", () ->
|
||||
me.shown = false
|
||||
$(me.root)
|
||||
@observable.on "blur", () =>
|
||||
@shown = false
|
||||
$(@root)
|
||||
.addClass("unactive")
|
||||
@observable.on "hide", () ->
|
||||
$(me.root).hide()
|
||||
me.shown = false
|
||||
@observable.on "hide", () =>
|
||||
$(@root).hide()
|
||||
@shown = false
|
||||
|
||||
@observable.on "toggle", () ->
|
||||
if me.shown
|
||||
me.observable.trigger "hide", { id: me.aid() }
|
||||
@observable.on "toggle", () =>
|
||||
if @shown
|
||||
@observable.trigger "hide", { id: @aid() }
|
||||
else
|
||||
me.observable.trigger "focus", { id: me.aid() }
|
||||
@observable.trigger "focus", { id: @aid() }
|
||||
@enable_dragging()
|
||||
@enable_resize()
|
||||
@setsize { w: (@get "width"), h: (@get "height") }
|
||||
@observable.trigger "rendered", { id: me.aid() }
|
||||
@observable.trigger "rendered", { id: @aid() }
|
||||
|
||||
__minimizable__: (value) ->
|
||||
if value then $(@refs["minbt"]).show() else $(@refs["minbt"]).hide()
|
||||
@ -104,29 +103,28 @@ class WindowTag extends Ant.OS.GUI.BaseTag
|
||||
$(@refs["dragger"]).text value.__() if value
|
||||
|
||||
enable_dragging: () ->
|
||||
me = @
|
||||
$(@refs["dragger"])
|
||||
.css("user-select", "none")
|
||||
.css("cursor", "default")
|
||||
$(@refs["dragger"]).on "mousedown", (e) ->
|
||||
$(@refs["dragger"]).on "mousedown", (e) =>
|
||||
e.preventDefault()
|
||||
offset = $(me.root).offset()
|
||||
offset = $(@root).offset()
|
||||
offset.top = e.clientY - offset.top
|
||||
offset.left = e.clientX - offset.left
|
||||
$(window).on "mousemove", (e) ->
|
||||
if me.isMaxi
|
||||
me.toggle_window()
|
||||
$(window).on "mousemove", (e) =>
|
||||
if @isMaxi
|
||||
@toggle_window()
|
||||
top = 0
|
||||
letf = e.clientX - $(me.root).width() / 2
|
||||
letf = e.clientX - $(@root).width() / 2
|
||||
offset.top = 10
|
||||
offset.left = $(me.root).width() / 2
|
||||
offset.left = $(@root).width() / 2
|
||||
else
|
||||
top = e.clientY - offset.top - me.desktop_pos.top
|
||||
left = e.clientX - me.desktop_pos.top - offset.left
|
||||
top = e.clientY - offset.top - @desktop_pos.top
|
||||
left = e.clientX - @desktop_pos.top - offset.left
|
||||
left = if left < 0 then 0 else left
|
||||
top = if top < 0 then 0 else top
|
||||
|
||||
$(me.root)
|
||||
$(@root)
|
||||
.css("top", "#{top}px")
|
||||
.css("left", "#{left}px")
|
||||
$(window).on "mouseup", (e) ->
|
||||
@ -134,7 +132,6 @@ class WindowTag extends Ant.OS.GUI.BaseTag
|
||||
$(window).unbind "mouseup", null
|
||||
|
||||
enable_resize: () ->
|
||||
me = @
|
||||
$(@refs["grip"])
|
||||
.css("user-select", "none")
|
||||
.css("cursor", "default")
|
||||
@ -143,20 +140,20 @@ class WindowTag extends Ant.OS.GUI.BaseTag
|
||||
.css("right", "0")
|
||||
.css("cursor", "nwse-resize")
|
||||
|
||||
$(@refs["grip"]).on "mousedown", (e) ->
|
||||
$(@refs["grip"]).on "mousedown", (e) =>
|
||||
e.preventDefault()
|
||||
offset = { top: 0, left: 0 }
|
||||
offset.top = e.clientY
|
||||
offset.left = e.clientX
|
||||
$(window).on "mousemove", (e) ->
|
||||
w = $(me.root).width() + e.clientX - offset.left
|
||||
h = $(me.root).height() + e.clientY - offset.top
|
||||
$(window).on "mousemove", (e) =>
|
||||
w = $(@root).width() + e.clientX - offset.left
|
||||
h = $(@root).height() + e.clientY - offset.top
|
||||
w = if w < 100 then 100 else w
|
||||
h = if h < 100 then 100 else h
|
||||
offset.top = e.clientY
|
||||
offset.left = e.clientX
|
||||
me.isMaxi = false
|
||||
me.setsize { w: w, h: h }
|
||||
@isMaxi = false
|
||||
@setsize { w: w, h: h }
|
||||
|
||||
$(window).on "mouseup", (e) ->
|
||||
$(window).unbind "mousemove", null
|
||||
@ -164,7 +161,6 @@ class WindowTag extends Ant.OS.GUI.BaseTag
|
||||
|
||||
toggle_window: () ->
|
||||
return unless @get "resizable"
|
||||
me = @
|
||||
if @isMaxi is false
|
||||
@history = {
|
||||
top: $(@root).css("top"),
|
||||
|
@ -3,17 +3,16 @@ Ant.OS.GUI.zindex = 10
|
||||
class Ant.OS.GUI.BaseTag
|
||||
constructor: (@root, @observable) ->
|
||||
@opts = {}
|
||||
me = @
|
||||
@observable = new Ant.OS.API.Announcer() unless @observable
|
||||
# export to rootnode
|
||||
@root.observable = @observable
|
||||
@root.set = (k, v) -> me.set k, v
|
||||
@root.get = (k) -> me.get k
|
||||
@root.aid = () -> me.aid()
|
||||
@root.calibrate = () -> me.calibrate()
|
||||
@root.sync = () -> me.sync()
|
||||
@root.set = (k, v) => @set k, v
|
||||
@root.get = (k) => @get k
|
||||
@root.aid = () => @aid()
|
||||
@root.calibrate = () => @calibrate()
|
||||
@root.sync = () => @sync()
|
||||
@mounted = false
|
||||
@root.setup = () -> me.setup()
|
||||
@root.setup = () => @setup()
|
||||
@refs = {}
|
||||
@setopt "data-id", (Math.floor(Math.random() * 100000) + 1).toString()
|
||||
@setopt "tooltip", undefined
|
||||
@ -28,7 +27,7 @@ class Ant.OS.GUI.BaseTag
|
||||
$(v).detach().appendTo @refs.yield for v in @children
|
||||
else
|
||||
@children = []
|
||||
$(@root).children().each () -> @.mkui me.observable
|
||||
$(@root).children().each (i, e) => e.mkui @observable
|
||||
|
||||
__: (k, v) ->
|
||||
@set k, v if v
|
||||
|
@ -75,20 +75,19 @@ class BaseFileHandle
|
||||
|
||||
b64: (t) ->
|
||||
# t is object or mime type
|
||||
me = @
|
||||
new Promise (resolve, reject) ->
|
||||
new Promise (resolve, reject) =>
|
||||
m = if t is "object" then "text/plain" else t
|
||||
return resolve "" unless me.cache
|
||||
if t is "object" or typeof me.cache is "string"
|
||||
return resolve "" unless @cache
|
||||
if t is "object" or typeof @cache is "string"
|
||||
if t is "object"
|
||||
b64 = (JSON.stringify me.cache).asBase64()
|
||||
b64 = (JSON.stringify @cache).asBase64()
|
||||
else
|
||||
b64 = me.cache.asBase64()
|
||||
b64 = @cache.asBase64()
|
||||
b64 = "data:#{m};base64,#{b64}"
|
||||
resolve(b64)
|
||||
else
|
||||
reader = new FileReader()
|
||||
reader.readAsDataURL(me.cache)
|
||||
reader.readAsDataURL(@cache)
|
||||
reader.onload = () ->
|
||||
resolve reader.result
|
||||
reader.onerror = (e) ->
|
||||
@ -101,23 +100,21 @@ class BaseFileHandle
|
||||
|
||||
onready: () ->
|
||||
# read meta data
|
||||
me = @
|
||||
new Promise (resolve, reject) ->
|
||||
return resolve(me.info) if me.ready
|
||||
me.meta()
|
||||
.then (d) ->
|
||||
new Promise (resolve, reject) =>
|
||||
return resolve(@info) if @ready
|
||||
@meta()
|
||||
.then (d) =>
|
||||
return reject d if d.errors
|
||||
me.info = d.result
|
||||
me.ready = true
|
||||
@info = d.result
|
||||
@ready = true
|
||||
resolve(d.result)
|
||||
.catch (e) -> reject e
|
||||
|
||||
read: (t) ->
|
||||
me = @
|
||||
new Promise (resolve, reject) ->
|
||||
me.onready()
|
||||
.then (r) ->
|
||||
me._rd(t)
|
||||
new Promise (resolve, reject) =>
|
||||
@onready()
|
||||
.then (r) =>
|
||||
@_rd(t)
|
||||
.then (d) ->
|
||||
# Ant.OS.announcer.ostrigger "VFS", { m: "read", file: me }
|
||||
resolve d
|
||||
@ -125,94 +122,86 @@ class BaseFileHandle
|
||||
.catch (e) -> reject e
|
||||
|
||||
write: (t) ->
|
||||
me = @
|
||||
new Promise (resolve, reject) ->
|
||||
me._wr(t)
|
||||
.then (r) ->
|
||||
Ant.OS.announcer.ostrigger "VFS", { m: "write", file: me }
|
||||
new Promise (resolve, reject) =>
|
||||
@_wr(t)
|
||||
.then (r) =>
|
||||
Ant.OS.announcer.ostrigger "VFS", { m: "write", file: @ }
|
||||
resolve r
|
||||
.catch (e) -> reject e
|
||||
|
||||
mk: (d) ->
|
||||
me = @
|
||||
new Promise (resolve, reject) ->
|
||||
me.onready()
|
||||
.then (r) ->
|
||||
me._mk(d)
|
||||
.then (d) ->
|
||||
Ant.OS.announcer.ostrigger "VFS", { m: "mk", file: me }
|
||||
new Promise (resolve, reject) =>
|
||||
@onready()
|
||||
.then (r) =>
|
||||
@_mk(d)
|
||||
.then (d) =>
|
||||
Ant.OS.announcer.ostrigger "VFS", { m: "mk", file: @ }
|
||||
resolve d
|
||||
.catch (e) -> reject e
|
||||
.catch (e) -> reject e
|
||||
|
||||
remove: () ->
|
||||
me = @
|
||||
new Promise (resolve, reject) ->
|
||||
me.onready()
|
||||
.then (r) ->
|
||||
me._rm()
|
||||
.then (d) ->
|
||||
Ant.OS.announcer.ostrigger "VFS", { m: "remove", file: me }
|
||||
new Promise (resolve, reject) =>
|
||||
@onready()
|
||||
.then (r) =>
|
||||
@_rm()
|
||||
.then (d) =>
|
||||
Ant.OS.announcer.ostrigger "VFS", { m: "remove", file: @ }
|
||||
resolve d
|
||||
.catch (e) -> reject e
|
||||
.catch (e) -> reject e
|
||||
|
||||
upload: () ->
|
||||
me = @
|
||||
new Promise (resolve, reject) ->
|
||||
me.onready()
|
||||
.then (r) ->
|
||||
me._up()
|
||||
.then (d) ->
|
||||
Ant.OS.announcer.ostrigger "VFS", { m: "upload", file: me }
|
||||
new Promise (resolve, reject) =>
|
||||
@onready()
|
||||
.then (r) =>
|
||||
@_up()
|
||||
.then (d) =>
|
||||
Ant.OS.announcer.ostrigger "VFS", { m: "upload", file: @ }
|
||||
resolve d
|
||||
.catch (e) -> reject e
|
||||
.catch (e) -> reject e
|
||||
|
||||
publish: () ->
|
||||
me = @
|
||||
new Promise (resolve, reject) ->
|
||||
me.onready()
|
||||
.then (r) ->
|
||||
me._pub()
|
||||
.then (d) ->
|
||||
Ant.OS.announcer.ostrigger "VFS", { m: "publish", file: me }
|
||||
new Promise (resolve, reject) =>
|
||||
@onready()
|
||||
.then (r) =>
|
||||
@_pub()
|
||||
.then (d) =>
|
||||
Ant.OS.announcer.ostrigger "VFS", { m: "publish", file: @ }
|
||||
resolve d
|
||||
.catch (e) -> reject e
|
||||
.catch (e) -> reject e
|
||||
|
||||
download: () ->
|
||||
me = @
|
||||
new Promise (resolve, reject) ->
|
||||
me.onready()
|
||||
.then (r) ->
|
||||
me._down()
|
||||
.then (d) ->
|
||||
Ant.OS.announcer.ostrigger "VFS", { m: "download", file: me }
|
||||
new Promise (resolve, reject) =>
|
||||
@onready()
|
||||
.then (r) =>
|
||||
@_down()
|
||||
.then (d) =>
|
||||
Ant.OS.announcer.ostrigger "VFS", { m: "download", file: @ }
|
||||
resolve d
|
||||
.catch (e) -> reject e
|
||||
.catch (e) -> reject e
|
||||
|
||||
move: (d) ->
|
||||
me = @
|
||||
new Promise (resolve, reject) ->
|
||||
me.onready()
|
||||
.then (r) ->
|
||||
me._mv(d)
|
||||
.then (data) ->
|
||||
Ant.OS.announcer.ostrigger "VFS", { m: "move", file: me }
|
||||
new Promise (resolve, reject) =>
|
||||
@onready()
|
||||
.then (r) =>
|
||||
@_mv(d)
|
||||
.then (data) =>
|
||||
Ant.OS.announcer.ostrigger "VFS", { m: "move", file: @ }
|
||||
resolve data
|
||||
.catch (e) -> reject e
|
||||
.catch (e) -> reject e
|
||||
|
||||
execute: () ->
|
||||
me = @
|
||||
new Promise (resolve, reject) ->
|
||||
me.onready()
|
||||
.then (r) ->
|
||||
me._exec()
|
||||
.then (d) ->
|
||||
Ant.OS.announcer.ostrigger "VFS", { m: "execute", file: me }
|
||||
new Promise (resolve, reject) =>
|
||||
@onready()
|
||||
.then (r) =>
|
||||
@_exec()
|
||||
.then (d) =>
|
||||
Ant.OS.announcer.ostrigger "VFS", { m: "execute", file: @ }
|
||||
resolve d
|
||||
.catch (e) -> reject e
|
||||
.catch (e) -> reject e
|
||||
@ -220,9 +209,8 @@ class BaseFileHandle
|
||||
getlink: () -> @path
|
||||
|
||||
unsupported: (t) ->
|
||||
me = @
|
||||
new Promise (resolve, reject) ->
|
||||
reject { error: __("Action {0} is unsupported on: {1}", t, me.path) }
|
||||
new Promise (resolve, reject) =>
|
||||
reject { error: __("Action {0} is unsupported on: {1}", t, @path) }
|
||||
# actions must be implemented by subclasses
|
||||
|
||||
_rd: (t) -> @unsupported "read"
|
||||
@ -251,6 +239,10 @@ class RemoteFileHandle extends Ant.OS.API.VFS.BaseFileHandle
|
||||
|
||||
_rd: (t) ->
|
||||
# t: binary, text, any type
|
||||
if not @info
|
||||
return new Promise (resolve, reject) =>
|
||||
reject Ant.OS.API.throwe __(
|
||||
"file meta-data not found: {0}", @path)
|
||||
return Ant.OS.API.handle.scandir @path if @info.type is "dir"
|
||||
#read the file
|
||||
return Ant.OS.API.handle.fileblob @path if t is "binary"
|
||||
@ -258,21 +250,23 @@ class RemoteFileHandle extends Ant.OS.API.VFS.BaseFileHandle
|
||||
|
||||
_wr: (t) ->
|
||||
# t is base64 or undefined
|
||||
return Ant.OS.API.handle.write me.path, me.cache if t is "base64"
|
||||
me = @
|
||||
new Promise (resolve, reject) ->
|
||||
me.b64(t)
|
||||
.then (r) ->
|
||||
Ant.OS.API.handle.write me.path, r
|
||||
return Ant.OS.API.handle.write @path, @cache if t is "base64"
|
||||
new Promise (resolve, reject) =>
|
||||
@b64(t)
|
||||
.then (r) =>
|
||||
Ant.OS.API.handle.write @path, r
|
||||
.then (result) -> resolve result
|
||||
.catch (e) -> reject e
|
||||
.catch (e) -> reject e
|
||||
|
||||
_mk: (d) ->
|
||||
me = @
|
||||
if not @info
|
||||
return new Promise (resolve, reject) =>
|
||||
reject Ant.OS.API.throwe __(
|
||||
"file meta-data not found: {0}", @path)
|
||||
if @info.type is "file"
|
||||
return new Promise (resolve, reject) ->
|
||||
reject Ant.OS.API.throwe __("{0} is not a directory", me.path)
|
||||
return new Promise (resolve, reject) =>
|
||||
reject Ant.OS.API.throwe __("{0} is not a directory", @path)
|
||||
Ant.OS.API.handle.mkdir "#{@path}/#{d}"
|
||||
|
||||
_rm: () ->
|
||||
@ -283,21 +277,19 @@ class RemoteFileHandle extends Ant.OS.API.VFS.BaseFileHandle
|
||||
|
||||
|
||||
_up: () ->
|
||||
me = @
|
||||
if @info.type isnt "dir"
|
||||
return new Promise (resolve, reject) ->
|
||||
reject Ant.OS.API.throwe __("{0} is not a file", me.path)
|
||||
return new Promise (resolve, reject) =>
|
||||
reject Ant.OS.API.throwe __("{0} is not a file", @path)
|
||||
Ant.OS.API.handle.upload @path
|
||||
|
||||
_down: () ->
|
||||
me = @
|
||||
new Promise (resolve, reject) ->
|
||||
if me.info.type is "dir"
|
||||
return Ant.OS.API.throwe __("{0} is not a file", me.path)
|
||||
Ant.OS.API.handle.fileblob(me.path)
|
||||
.then (d) ->
|
||||
new Promise (resolve, reject) =>
|
||||
if @info.type is "dir"
|
||||
return Ant.OS.API.throwe __("{0} is not a file", @path)
|
||||
Ant.OS.API.handle.fileblob(@path)
|
||||
.then (d) =>
|
||||
blob = new Blob [d], { type: "octet/stream" }
|
||||
Ant.OS.API.saveblob me.basename, blob
|
||||
Ant.OS.API.saveblob @basename, blob
|
||||
resolve()
|
||||
.catch (e) ->
|
||||
reject e
|
||||
@ -315,10 +307,9 @@ class ApplicationHandle extends Ant.OS.API.VFS.BaseFileHandle
|
||||
@ready = true
|
||||
|
||||
_rd: (t) ->
|
||||
me = @
|
||||
new Promise (resolve, reject) ->
|
||||
return resolve { result: me.info } if me.info
|
||||
return reject Ant.OS.API.throwe(__("Application meta data isnt found")) unless me.isRoot()
|
||||
new Promise (resolve, reject) =>
|
||||
return resolve { result: @info } if @info
|
||||
return reject Ant.OS.API.throwe(__("Application meta data isnt found")) unless @isRoot()
|
||||
resolve { result: ( v for k, v of Ant.OS.setting.system.packages ) }
|
||||
|
||||
|
||||
@ -336,9 +327,8 @@ class BufferFileHandle extends Ant.OS.API.VFS.BaseFileHandle
|
||||
type: "file"
|
||||
|
||||
_rd: (t) ->
|
||||
me = @
|
||||
new Promise (resolve, reject) ->
|
||||
resolve { result: me.cache }
|
||||
new Promise (resolve, reject) =>
|
||||
resolve { result: @cache }
|
||||
|
||||
_wr: (d, t) ->
|
||||
@cache = d
|
||||
@ -347,10 +337,9 @@ class BufferFileHandle extends Ant.OS.API.VFS.BaseFileHandle
|
||||
resolve { result: true }
|
||||
|
||||
_down: () ->
|
||||
me = @
|
||||
new Promise (resolve, reject) ->
|
||||
blob = new Blob [me.cache], { type: "octet/stream" }
|
||||
Ant.OS.API.saveblob me.basename, blob
|
||||
new Promise (resolve, reject) =>
|
||||
blob = new Blob [@cache], { type: "octet/stream" }
|
||||
Ant.OS.API.saveblob @basename, blob
|
||||
resolve()
|
||||
|
||||
onchange: (f) ->
|
||||
@ -390,18 +379,16 @@ class SharedFileHandle extends Ant.OS.API.VFS.BaseFileHandle
|
||||
Ant.OS.API.handle.sharefile @basename, false
|
||||
|
||||
_down: () ->
|
||||
me = @
|
||||
new Promise (resolve, reject) ->
|
||||
if me.info.type is "dir"
|
||||
return reject Ant.OS.API.throwe __("{0} is not a file", me.path)
|
||||
Ant.OS.API.handle.fileblob me.path
|
||||
.then (data) ->
|
||||
new Promise (resolve, reject) =>
|
||||
if @info.type is "dir"
|
||||
return reject Ant.OS.API.throwe __("{0} is not a file", @path)
|
||||
Ant.OS.API.handle.fileblob @path
|
||||
.then (data) =>
|
||||
blob = new Blob [data], { type: "octet/stream" }
|
||||
Ant.OS.API.saveblob me.basename, blob
|
||||
Ant.OS.API.saveblob @basename, blob
|
||||
resolve()
|
||||
.catch (e) -> reject e
|
||||
_pub: () ->
|
||||
me = @
|
||||
return new Promise (resolve, reject) -> resolve { result: me.basename }
|
||||
return new Promise (resolve, reject) => resolve { result: @basename }
|
||||
|
||||
Ant.OS.API.VFS.register "^shared$", SharedFileHandle
|
Reference in New Issue
Block a user