diff --git a/Makefile b/Makefile index 9f7eba0..ae7cc75 100644 --- a/Makefile +++ b/Makefile @@ -19,13 +19,12 @@ coffees= src/core/core.coffee\ -packages = NotePad wTerm ActivityMonitor DummyApp Files -services = PushNotification Spotlight Calendar +packages = CoreServices NotePad wTerm ActivityMonitor DummyApp Files -main: build_coffees build_tags build_themes schemes libs build_services build_packages +main: build_coffees build_tags build_themes schemes libs build_packages - cp src/index.html $(BUILDDIR)/ -lite: build_coffee build_tag build_theme schemes build_services build_packages +lite: build_coffee build_tag build_theme schemes build_packages #%.js: %.coffee # coffee --compile $< @@ -33,6 +32,7 @@ build_coffees: @echo "$(BLUE)Building coffee files$(NC)" - mkdir $(BUILDDIR)/scripts - rm $(BUILDDIR)/scripts/antos.js + - rm $(BUILDDIR)/scripts/antos.coffee for f in $(coffees); do (cat "$${f}"; echo) >> $(BUILDDIR)/scripts/antos.coffee; done coffee --compile $(BUILDDIR)/scripts/antos.coffee - rm $(BUILDDIR)/scripts/antos.coffee @@ -70,11 +70,6 @@ antos_themes_build: cp src/themes/antos/wp.png $(BUILDDIR)/resources/themes/antos/ -build_services: - @echo "$(BLUE)Building services$(NC)" - -mkdir -p $(BUILDDIR)/services - -rm -rf $(BUILDDIR)/services/* - for f in $(services); do (coffee -cs < "src/services/$$f.coffee" >$(BUILDDIR)/services/"$$f.js");done build_packages: - mkdir $(BUILDDIR)/packages - for d in $(packages); do ( test -d $(BUILDDIR)/packages/$$d && rm -rf $(BUILDDIR)/packages/$$d/* ); done diff --git a/src/core/BaseModel.coffee b/src/core/BaseModel.coffee index dd142f2..9a01462 100644 --- a/src/core/BaseModel.coffee +++ b/src/core/BaseModel.coffee @@ -8,6 +8,13 @@ class BaseModel _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 @@ -24,12 +31,14 @@ 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 trigger: (e, d) -> @observable.trigger e, d - subscribe: (e, f) -> _courrier.on e, f, @ + subscribe: (e, f) -> + _courrier.on e, f, @ openDialog: (d, f, data) -> if @dialog diff --git a/src/core/gui.coffee b/src/core/gui.coffee index 5babe75..a624c9e 100644 --- a/src/core/gui.coffee +++ b/src/core/gui.coffee @@ -36,48 +36,58 @@ self.OS.GUI = srvs.splice 0, 1 f i for i in srvs - pushService: (srv) -> + pushService: (ph) -> + arr = ph.split "/" + srv = arr[1] + app = arr[0] return _PM.createProcess srv, _OS.APP[srv] if _OS.APP[srv] - path = "services/#{srv}.js" - _API.script path, - (d) -> - _PM.createProcess srv, _OS.APP[srv] - , (e, s) -> + _GUI.loadApp app, + (a)-> + return _PM.createProcess srv, _OS.APP[srv] if _OS.APP[srv] + (e, s) -> _courrier.trigger "srvroutineready", srv _courrier.osfail "Cannot read service script: #{srv} ", e, s - + forceLaunch: (app, args) -> console.log "This method is used for developing only, please use the launch method instead" _PM.killAll app _OS.APP[app] = undefined _GUI.launch app, args + loadApp:(app, ok, err) -> + path = "packages/#{app}/" + _API.script path + "main.js", + (d) -> + #load css file + _API.get "#{path}main.css", + () -> + $ '', { rel: 'stylesheet', type: 'text/css', 'href': "#{path}main.css" } + .appendTo 'head' + , () -> + #launch + if _OS.APP[app] + # load app meta data + _API.get "#{path}package.json", + (data) -> + _OS.APP[app].meta = data + ok app + , (e, s) -> + _courrier.osfail "Cannot read application metadata: #{app}", e, s + err e, s + else + ok app + , (e, s) -> + #BUG report here + _courrier.osfail "Cannot load application script: #{app}", e, s + console.log "bug report", e, s, path + err e,s launch: (app, args) -> if not _OS.APP[app] # first load it - path = "packages/#{app}/" - _API.script path + "main.js", - (d) -> - #load css file - _API.get "#{path}main.css", - () -> - $ '', { rel: 'stylesheet', type: 'text/css', 'href': "#{path}main.css" } - .appendTo 'head' - , () -> - #launch - if _OS.APP[app] - # load app meta data - _API.get "#{path}package.json", - (data) -> - _OS.APP[app].meta = data - _PM.createProcess app, _OS.APP[app], args - , (e, s) -> - _courrier.osfail "Cannot read application metadata: #{app}", e, s - alert "cannot read application, meta-data" + _GUI.loadApp app, + (a)-> + _PM.createProcess a, _OS.APP[a], args , (e, s) -> - #BUG report here - _courrier.osfail "Cannot load application script: #{app}", e, s - console.log "bug report", e, s, path else # now launch it if _OS.APP[app] @@ -168,4 +178,5 @@ self.OS.GUI = _GUI.loadTheme "antos" _GUI.initDM() _courrier.observable.one "syspanelloaded", () -> - _GUI.pushServices ["PushNotification", "Spotlight", "Calendar"] \ No newline at end of file + #_GUI.loadApp "CoreServices", (a) -> + _GUI.pushServices ["CoreServices/PushNotification", "CoreServices/Spotlight", "CoreServices/Calendar"] \ No newline at end of file diff --git a/src/packages/ActivityMonitor/Makefile b/src/packages/ActivityMonitor/Makefile index 5bd288b..d0e0037 100644 --- a/src/packages/ActivityMonitor/Makefile +++ b/src/packages/ActivityMonitor/Makefile @@ -6,28 +6,6 @@ cssfiles = main.css copyfiles = scheme.html package.json +PKG_NAME=ActivityMonitor -BLUE=\033[1;34m -NC=\033[0m - -main: title clean js css copy - -title: - @echo "$(BLUE)======= Package ActivityMonitor =======$(NC)" - -coffee: - - mkdir build - for f in $(coffee_files); do (coffee -cs < $$f >build/"$$f.js");done - for f in build/*.coffee.js; do (cat "$${f}"; echo) >> build/main.js; done - - rm build/*.coffee.js - -js: coffee - for f in $(jsfiles); do (cat "$${f}"; echo) >> build/main.js; done - -css: - for f in $(cssfiles); do (cat "$${f}"; echo) >> build/main.css; done - -copy: - cp -rf $(copyfiles) build/ -clean: - - rm -rf build/* \ No newline at end of file +include ../pkg.mk \ No newline at end of file diff --git a/src/services/Calendar.coffee b/src/packages/CoreServices/Calendar.coffee similarity index 100% rename from src/services/Calendar.coffee rename to src/packages/CoreServices/Calendar.coffee diff --git a/src/packages/CoreServices/Makefile b/src/packages/CoreServices/Makefile new file mode 100644 index 0000000..ec6d4d7 --- /dev/null +++ b/src/packages/CoreServices/Makefile @@ -0,0 +1,11 @@ +coffee_files = Calendar.coffee PushNotification.coffee Spotlight.coffee + +jsfiles = + +cssfiles = + +copyfiles = package.json + + +PKG_NAME=CoreServices +include ../pkg.mk \ No newline at end of file diff --git a/src/services/PushNotification.coffee b/src/packages/CoreServices/PushNotification.coffee similarity index 100% rename from src/services/PushNotification.coffee rename to src/packages/CoreServices/PushNotification.coffee diff --git a/src/services/Spotlight.coffee b/src/packages/CoreServices/Spotlight.coffee similarity index 100% rename from src/services/Spotlight.coffee rename to src/packages/CoreServices/Spotlight.coffee diff --git a/src/packages/CoreServices/package.json b/src/packages/CoreServices/package.json new file mode 100644 index 0000000..a8c1003 --- /dev/null +++ b/src/packages/CoreServices/package.json @@ -0,0 +1,14 @@ +{ + "app":"CoreServices", + "name":"CoreServices", + "description":"This is the core services", + "info":{ + "author": "Xuan Sang LE", + "email": "xsang.le@gmail.com", + "credit": "dedicated to some one here", + "licences": "MIT" + }, + "version":"0.1a", + "category":"System", + "mimes":["*"] +} \ No newline at end of file diff --git a/src/packages/DummyApp/Makefile b/src/packages/DummyApp/Makefile index 249b97f..159e7bd 100644 --- a/src/packages/DummyApp/Makefile +++ b/src/packages/DummyApp/Makefile @@ -7,27 +7,5 @@ cssfiles = main.css copyfiles = scheme.html package.json -BLUE=\033[1;34m -NC=\033[0m - -main: title clean js css copy - -title: - @echo "$(BLUE)======= Package DummyApp =======$(NC)" - -coffee: - - mkdir build - for f in $(coffee_files); do (coffee -cs < $$f >build/"$$f.js");done - for f in build/*.coffee.js; do (cat "$${f}"; echo) >> build/main.js; done - - rm build/*.coffee.js - -js: coffee - for f in $(jsfiles); do (cat "$${f}"; echo) >> build/main.js; done - -css: - for f in $(cssfiles); do (cat "$${f}"; echo) >> build/main.css; done - -copy: - cp -rf $(copyfiles) build/ -clean: - - rm -rf build/* \ No newline at end of file +PKG_NAME=DummyApp +include ../pkg.mk \ No newline at end of file diff --git a/src/packages/Files/Makefile b/src/packages/Files/Makefile index 09641f6..bf5a0bc 100644 --- a/src/packages/Files/Makefile +++ b/src/packages/Files/Makefile @@ -7,27 +7,5 @@ cssfiles = main.css copyfiles = scheme.html package.json -BLUE=\033[1;34m -NC=\033[0m - -main: title clean js css copy - -title: - @echo "$(BLUE)======= Package Files =======$(NC)" - -coffee: - - mkdir build - for f in $(coffee_files); do (coffee -cs < $$f >build/"$$f.js");done - for f in build/*.coffee.js; do (cat "$${f}"; echo) >> build/main.js; done - - rm build/*.coffee.js - -js: coffee - for f in $(jsfiles); do (cat "$${f}"; echo) >> build/main.js; done - -css: - for f in $(cssfiles); do (cat "$${f}"; echo) >> build/main.css; done - -copy: - cp -rf $(copyfiles) build/ -clean: - - rm -rf build/* \ No newline at end of file +PKG_NAME=ActivityFile +include ../pkg.mk \ No newline at end of file diff --git a/src/packages/Files/main.coffee b/src/packages/Files/main.coffee index 4e8dc9d..8334b06 100644 --- a/src/packages/Files/main.coffee +++ b/src/packages/Files/main.coffee @@ -9,7 +9,6 @@ class Files extends this.OS.GUI.BaseApplication @navbar = @find "nav-bar" @prepaths = [] @favo = @find "favouri" - @loadSetting() @view.contextmenuHandler = (e, m) -> m.set "items", [ me.mnFile(), me.mnEdit() ] @@ -34,13 +33,7 @@ class Files extends this.OS.GUI.BaseApplication me._api.handler.scandir e.child.path, (d) -> f d.result , (e, s) -> me.error "Cannot fetch child dir #{e.child.path}" - - @favo.set "items", @setting.favorite - - loadSetting: () -> - # view setting - @view.set "view", @setting.view if @setting.view - @view.set "showhidden", @setting.showhidden if @setting.showhidden + @setting.favorite = [ { text: "Applications", path: 'apps:///', iconclass:"fa fa-adn"}, { text: "Home", path: 'home:///', iconclass:"fa fa-home", selected:true}, @@ -48,8 +41,15 @@ class Files extends this.OS.GUI.BaseApplication { text: "Desktop", path: 'home:///.desktop', iconclass: "fa fa-desktop" }, ] if not @setting.favorite @setting.sidebar = true if @setting.sidebar is undefined - @toggleSidebar @setting.sidebar @setting.nav = true if @setting.nav is undefined + @favo.set "items", @setting.favorite + @applySetting() + + applySetting: (k) -> + # view setting + @view.set "view", @setting.view if @setting.view + @view.set "showhidden", @setting.showhidden if @setting.showhidden + @toggleSidebar @setting.sidebar @toggleNav @setting.nav chdir: (p, push) -> @@ -123,16 +123,19 @@ class Files extends this.OS.GUI.BaseApplication actionView: (e) -> switch e.item.data.dataid when "#{@name}-hidden" - @.view.set "showhidden", e.item.data.checked - @.setting.showhidden = e.item.data.checked + #@.view.set "showhidden", e.item.data.checked + @registry "showhidden",e.item.data.checked + #@.setting.showhidden = e.item.data.checked when "#{@name}-refresh" @.chdir ($ @.navinput).val(), false when "#{@name}-side" - @setting.sidebar = e.item.data.checked - @toggleSidebar e.item.data.checked + @registry "sidebar",e.item.data.checked + #@setting.sidebar = e.item.data.checked + #@toggleSidebar e.item.data.checked when "#{@name}-nav" - @setting.nav = e.item.data.checked - @toggleNav e.item.data.checked + @registry "nav", e.item.data.checked + #@setting.nav = e.item.data.checked + #@toggleNav e.item.data.checked actionEdit: (e) -> switch e.item.data.dataid diff --git a/src/packages/NotePad/Makefile b/src/packages/NotePad/Makefile index c190611..0fb6fd4 100644 --- a/src/packages/NotePad/Makefile +++ b/src/packages/NotePad/Makefile @@ -7,27 +7,5 @@ cssfiles = main.css copyfiles = scheme.html package.json -BLUE=\033[1;34m -NC=\033[0m - -main: title clean js css copy - -title: - @echo "$(BLUE)======= Package NotePad =======$(NC)" - -coffee: - - mkdir build - for f in $(coffee_files); do (coffee -cs < $$f >build/"$$f.js");done - for f in build/*.coffee.js; do (cat "$${f}"; echo) >> build/main.js; done - - rm build/*.coffee.js - -js: coffee - for f in $(jsfiles); do (cat "$${f}"; echo) >> build/main.js; done - -css: - for f in $(cssfiles); do (cat "$${f}"; echo) >> build/main.css; done - -copy: - cp -rf $(copyfiles) build/ -clean: - - rm -rf build/* \ No newline at end of file +PKG_NAME=NotePad +include ../pkg.mk \ No newline at end of file diff --git a/src/packages/pkg.mk b/src/packages/pkg.mk new file mode 100644 index 0000000..ca20e9c --- /dev/null +++ b/src/packages/pkg.mk @@ -0,0 +1,25 @@ + +BLUE=\033[1;34m +NC=\033[0m + +main: title clean js css copy + +title: + @echo "$(BLUE)======= Package $(PKG_NAME) =======$(NC)" + +coffee: + - mkdir build + for f in $(coffee_files); do (coffee -cs < $$f >build/"$$f.js");done + for f in build/*.coffee.js; do (cat "$${f}"; echo) >> build/main.js; done + - rm build/*.coffee.js + +js: coffee + for f in $(jsfiles); do (cat "$${f}"; echo) >> build/main.js; done + +css: + for f in $(cssfiles); do (cat "$${f}"; echo) >> build/main.css; done + +copy: + cp -rf $(copyfiles) build/ +clean: + - rm -rf build/* \ No newline at end of file diff --git a/src/packages/wTerm/Makefile b/src/packages/wTerm/Makefile index b8c381e..08691d4 100644 --- a/src/packages/wTerm/Makefile +++ b/src/packages/wTerm/Makefile @@ -7,28 +7,5 @@ cssfiles = xterm.css main.css copyfiles = scheme.html package.json -BLUE=\033[1;34m -NC=\033[0m - -main: title clean js css copy - -title: - @echo "$(BLUE)======= Package wTerm =======$(NC)" - - rm -rf build/* - -coffee: - - mkdir build - for f in $(coffee_files); do (coffee -cs < $$f >build/"$$f.js");done - for f in build/*.coffee.js; do (cat "$${f}"; echo) >> build/main.js; done - - rm build/*.coffee.js - -js: coffee - for f in $(jsfiles); do (cat "$${f}"; echo) >> build/main.js; done - -css: - for f in $(cssfiles); do (cat "$${f}"; echo) >> build/main.css; done - -copy: - cp -rf $(copyfiles) build/ -clean: - - rm -rf build/* \ No newline at end of file +PKG_NAME=wTerm +include ../pkg.mk \ No newline at end of file