antos-frontend/src/core/BaseApplication.coffee

81 lines
2.2 KiB
CoffeeScript
Raw Normal View History

2017-08-14 00:20:19 +02:00
self = this
_PM = self.OS.PM
_APP = self.OS.APP
_MAIL = self.OS.courrier
class BaseApplication extends this.OS.GUI.BaseModel
constructor: (name) ->
super name
2017-08-15 02:56:04 +02:00
2017-08-11 01:58:46 +02:00
init: ->
2017-08-14 00:20:19 +02:00
me = @
# first register some base event to the app
2017-08-15 02:56:04 +02:00
@on "focus", () ->
me.sysdock.set "selectedApp", me
2017-08-14 00:20:19 +02:00
me.appmenu.pid = me.pid
me.appmenu.set "items", (me.baseMenu() || [])
2017-08-15 02:56:04 +02:00
me.appmenu.set "onmenuselect", (d) ->
me.trigger("menuselect", d)
@on "hide", () ->
2017-08-14 00:20:19 +02:00
me.sysdock.set "selectedApp", null
2017-08-15 02:56:04 +02:00
me.appmenu.set "items", []
@on "menuselect", (d) ->
switch d.e.item.data.dataid
2017-08-14 00:20:19 +02:00
when "#{me.name}-about" then alert "About " + me.pid + me.name
when "#{me.name}-exit" then me.trigger "exit"
#now load the scheme
2017-08-11 01:58:46 +02:00
path = "packages/#{@name}/scheme.html"
@.render path
2017-08-14 00:20:19 +02:00
show: () ->
@trigger "focus"
2017-08-14 00:20:19 +02:00
blur: () ->
2017-08-15 02:56:04 +02:00
@.appmenu.set "items", [] if @.appmenu and @.pid == @.appmenu.pid
@trigger "blur"
2017-08-14 00:20:19 +02:00
hide: () ->
@trigger "hide"
2017-08-14 00:20:19 +02:00
2017-08-15 02:56:04 +02:00
toggle: () ->
@trigger "toggle"
2017-08-14 00:20:19 +02:00
onexit: (evt) ->
@cleanup(evt)
2017-08-14 00:20:19 +02:00
if not evt.prevent
2017-08-15 02:56:04 +02:00
@.appmenu.set "items", [] if @.pid == @.appmenu.pid
2017-08-14 00:20:19 +02:00
($ @scheme).remove()
2017-08-15 02:56:04 +02:00
baseMenu: ->
2017-08-14 00:20:19 +02:00
menu =
[{
2017-08-15 02:56:04 +02:00
text: _APP[@name].meta.name,
child: [
{ text: "About", dataid: "#{@name}-about" },
{ text: "Exit", dataid: "#{@name}-exit" }
2017-08-14 00:20:19 +02:00
]
}]
menu = menu.concat @menu() || []
menu
main: ->
#main program
# implement by subclasses
menu: ->
# implement by subclasses
# to add menu to application
[]
2017-08-11 01:58:46 +02:00
open:->
#implement by subclasses
data:->
#implement by subclasses
2017-08-14 00:20:19 +02:00
# to return app data
2017-08-11 01:58:46 +02:00
update:->
#implement by subclasses
cleanup: (e) ->
2017-08-14 00:20:19 +02:00
#implement by subclasses
# to handle the exit event
# use e.preventDefault() to
# discard the quit command
2017-08-15 02:56:04 +02:00
BaseApplication.type = 1
this.OS.GUI.BaseApplication = BaseApplication