2017-08-14 00:20:19 +02:00
|
|
|
self = this
|
|
|
|
_PM = self.OS.PM
|
|
|
|
_APP = self.OS.APP
|
2017-08-16 00:27:32 +02:00
|
|
|
_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-16 00:27:32 +02:00
|
|
|
|
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", []
|
2017-08-16 00:27:32 +02:00
|
|
|
@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"
|
2017-08-16 00:27:32 +02:00
|
|
|
@.render path
|
2017-08-14 00:20:19 +02:00
|
|
|
|
|
|
|
show: () ->
|
2017-08-16 00:27:32 +02:00
|
|
|
@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
|
2017-08-16 00:27:32 +02:00
|
|
|
@trigger "blur"
|
2017-08-14 00:20:19 +02:00
|
|
|
|
|
|
|
hide: () ->
|
2017-08-16 00:27:32 +02:00
|
|
|
@trigger "hide"
|
2017-08-14 00:20:19 +02:00
|
|
|
|
2017-08-15 02:56:04 +02:00
|
|
|
toggle: () ->
|
2017-08-16 00:27:32 +02:00
|
|
|
@trigger "toggle"
|
2017-08-14 00:20:19 +02:00
|
|
|
|
2017-08-16 00:27:32 +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
|
2017-08-16 00:27:32 +02:00
|
|
|
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
|