mirror of
https://github.com/lxsang/antos-frontend.git
synced 2024-11-14 16:58:21 +01:00
69 lines
2.5 KiB
CoffeeScript
69 lines
2.5 KiB
CoffeeScript
|
#define the OS object
|
||
|
self = this
|
||
|
self.OS or=
|
||
|
|
||
|
API: new Object()
|
||
|
GUI: new Object()
|
||
|
APP: new Object()
|
||
|
|
||
|
courrier:
|
||
|
observable: riot.observable()
|
||
|
listeners: new Object
|
||
|
on: (e, f, a) ->
|
||
|
_courrier.listeners[a.pid] = [] unless _courrier.listeners[a.pid]
|
||
|
_courrier.listeners[a.pid].push { e: e, f: f }
|
||
|
_courrier.observable.on e, f
|
||
|
trigger: (e, d) -> _courrier.observable.trigger e, d
|
||
|
unregister: (app) ->
|
||
|
return unless _courrier.listeners[app.pid] and _courrier.listeners[app.pid].length > 0
|
||
|
_courrier.observable.off i.e, i.f for i in _courrier.listeners[app.pid]
|
||
|
delete _courrier.listeners[app.pid]
|
||
|
_courrier.listeners[app.pid] = []
|
||
|
register: (name, x) -> _APP[name] = x
|
||
|
|
||
|
PM:
|
||
|
pidalloc: 0
|
||
|
processes: new Object
|
||
|
createProcess: (app, cls) ->
|
||
|
#if it is single ton
|
||
|
# and a process is existing
|
||
|
# just return it
|
||
|
if cls.singleton and _PM.processes[app] and _PM.processes[app].length == 1
|
||
|
_PM.processes[app][0].show()
|
||
|
else
|
||
|
_PM.processes[app] = [] if not _PM.processes[app]
|
||
|
obj = new cls
|
||
|
obj.birth = (new Date).getTime()
|
||
|
_PM.pidalloc++
|
||
|
obj.pid = _PM.pidalloc
|
||
|
_PM.processes[app].push obj
|
||
|
if cls.type is 1 then _GUI.dock obj, cls.meta else _GUI.attachservice obj
|
||
|
if cls.type is 2
|
||
|
_courrier.trigger "srvroutineready", app
|
||
|
appByPid: (pid) ->
|
||
|
app = undefined
|
||
|
find = (l) ->
|
||
|
return a for a in l when a.pid is pid
|
||
|
for k, v of _PM.processes
|
||
|
app = find v
|
||
|
break if app
|
||
|
app
|
||
|
|
||
|
kill: (app) ->
|
||
|
return if not _PM.processes[app.name]
|
||
|
|
||
|
i = _PM.processes[app.name].indexOf app
|
||
|
if i >= 0
|
||
|
if _APP[app.name].type == 1 then _GUI.undock app else _GUI.detachservice app
|
||
|
_courrier.unregister app
|
||
|
delete _PM.processes[app.name][i]
|
||
|
_PM.processes[app.name].splice i, 1
|
||
|
|
||
|
boot: ->
|
||
|
#first load the configuration
|
||
|
#then load the theme
|
||
|
_GUI = self.OS.GUI
|
||
|
_GUI.loadTheme "antos"
|
||
|
_GUI.initDM()
|
||
|
_courrier.observable.one "syspanelloaded", () ->
|
||
|
_GUI.pushServices ["PushNotification", "Spotlight", "Calendar"]
|